diff --git a/.env.development b/.env.development
index 72b67ecea..d67b137d1 100644
--- a/.env.development
+++ b/.env.development
@@ -1,24 +1,39 @@
-REACT_APP_BACKEND_V2_GET_URL=https://json-dev.excalidraw.com/api/v2/
-REACT_APP_BACKEND_V2_POST_URL=https://json-dev.excalidraw.com/api/v2/post/
+VITE_APP_BACKEND_V2_GET_URL=https://json-dev.excalidraw.com/api/v2/
+VITE_APP_BACKEND_V2_POST_URL=https://json-dev.excalidraw.com/api/v2/post/
-REACT_APP_LIBRARY_URL=https://libraries.excalidraw.com
-REACT_APP_LIBRARY_BACKEND=https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries
+VITE_APP_LIBRARY_URL=https://libraries.excalidraw.com
+VITE_APP_LIBRARY_BACKEND=https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries
# collaboration WebSocket server (https://github.com/excalidraw/excalidraw-room)
-REACT_APP_WS_SERVER_URL=http://localhost:3002
+VITE_APP_WS_SERVER_URL=http://localhost:3002
# set this only if using the collaboration workflow we use on excalidraw.com
-REACT_APP_PORTAL_URL=
+VITE_APP_PORTAL_URL=
-REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}'
+VITE_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyCMkxA60XIW8KbqMYL7edC4qT5l4qHX2h8","authDomain":"excalidraw-oss-dev.firebaseapp.com","projectId":"excalidraw-oss-dev","storageBucket":"excalidraw-oss-dev.appspot.com","messagingSenderId":"664559512677","appId":"1:664559512677:web:a385181f2928d328a7aa8c"}'
# put these in your .env.local, or make sure you don't commit!
# must be lowercase `true` when turned on
#
# whether to enable Service Workers in development
-REACT_APP_DEV_ENABLE_SW=
+VITE_APP_DEV_ENABLE_SW=
# whether to disable live reload / HMR. Usuaully what you want to do when
# debugging Service Workers.
-REACT_APP_DEV_DISABLE_LIVE_RELOAD=
+VITE_APP_DEV_DISABLE_LIVE_RELOAD=
+VITE_APP_DISABLE_TRACKING=true
FAST_REFRESH=false
+
+# The port the run the dev server
+VITE_APP_PORT=3000
+
+#Debug flags
+
+# To enable bounding box for text containers
+VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX=
+
+# Set this flag to false if you want to open the overlay by default
+VITE_APP_COLLAPSE_OVERLAY=true
+
+# Set this flag to false to disable eslint
+VITE_APP_ENABLE_ESLINT=true
diff --git a/.env.production b/.env.production
index 183db7ea2..e3ece6df3 100644
--- a/.env.production
+++ b/.env.production
@@ -1,17 +1,15 @@
REACT_APP_BACKEND_V2_GET_URL=https://json.excalidraw.com/api/v2/
REACT_APP_BACKEND_V2_POST_URL=https://json.excalidraw.com/api/v2/post/
-REACT_APP_LIBRARY_URL=https://libraries.excalidraw.com
-REACT_APP_LIBRARY_BACKEND=https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries
+VITE_APP_LIBRARY_URL=https://libraries.excalidraw.com
+VITE_APP_LIBRARY_BACKEND=https://us-central1-excalidraw-room-persistence.cloudfunctions.net/libraries
-REACT_APP_PORTAL_URL=https://portal.excalidraw.com
+VITE_APP_PORTAL_URL=https://portal.excalidraw.com
# Fill to set socket server URL used for collaboration.
-# Meant for forks only: excalidraw.com uses custom REACT_APP_PORTAL_URL flow
-REACT_APP_WS_SERVER_URL=
+# Meant for forks only: excalidraw.com uses custom VITE_APP_PORTAL_URL flow
+VITE_APP_WS_SERVER_URL=
-REACT_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}'
+VITE_APP_FIREBASE_CONFIG='{"apiKey":"AIzaSyAd15pYlMci_xIp9ko6wkEsDzAAA0Dn0RU","authDomain":"excalidraw-room-persistence.firebaseapp.com","databaseURL":"https://excalidraw-room-persistence.firebaseio.com","projectId":"excalidraw-room-persistence","storageBucket":"excalidraw-room-persistence.appspot.com","messagingSenderId":"654800341332","appId":"1:654800341332:web:4a692de832b55bd57ce0c1"}'
-# production-only vars
-REACT_APP_GOOGLE_ANALYTICS_ID=UA-387204-13
-
-REACT_APP_PLUS_APP=https://app.excalidraw.com
+VITE_APP_PLUS_APP=https://app.excalidraw.com
+VITE_APP_DISABLE_TRACKING=
diff --git a/.github/workflows/autorelease-excalidraw.yml b/.github/workflows/autorelease-excalidraw.yml
index ad0a0a7e9..4eaeb11f1 100644
--- a/.github/workflows/autorelease-excalidraw.yml
+++ b/.github/workflows/autorelease-excalidraw.yml
@@ -12,10 +12,10 @@ jobs:
- uses: actions/checkout@v2
with:
fetch-depth: 2
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Set up publish access
run: |
npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
diff --git a/.github/workflows/autorelease-preview.yml b/.github/workflows/autorelease-preview.yml
index 8fe7f40b5..bcd501880 100644
--- a/.github/workflows/autorelease-preview.yml
+++ b/.github/workflows/autorelease-preview.yml
@@ -32,10 +32,10 @@ jobs:
with:
ref: ${{ steps.sha.outputs.result }}
fetch-depth: 2
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Set up publish access
run: |
npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index 77d2ef4d2..d42f8f632 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -9,10 +9,10 @@ jobs:
steps:
- uses: actions/checkout@v2
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Install and lint
run: |
diff --git a/.github/workflows/locales-coverage.yml b/.github/workflows/locales-coverage.yml
index 924dc9e97..822af06e1 100644
--- a/.github/workflows/locales-coverage.yml
+++ b/.github/workflows/locales-coverage.yml
@@ -14,10 +14,10 @@ jobs:
with:
token: ${{ secrets.PUSH_TRANSLATIONS_COVERAGE_PAT }}
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Create report file
run: |
diff --git a/.github/workflows/semantic-pr-title.yml b/.github/workflows/semantic-pr-title.yml
index 8980fc68e..969d23640 100644
--- a/.github/workflows/semantic-pr-title.yml
+++ b/.github/workflows/semantic-pr-title.yml
@@ -1,7 +1,7 @@
name: Semantic PR title
on:
- pull_request_target:
+ pull_request:
types:
- opened
- edited
diff --git a/.github/workflows/sentry-production.yml b/.github/workflows/sentry-production.yml
index 6f53f91eb..cea4cf63d 100644
--- a/.github/workflows/sentry-production.yml
+++ b/.github/workflows/sentry-production.yml
@@ -10,10 +10,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Install and build
run: |
yarn --frozen-lockfile
diff --git a/.github/workflows/size-limit.yml b/.github/workflows/size-limit.yml
new file mode 100644
index 000000000..8ced8ee03
--- /dev/null
+++ b/.github/workflows/size-limit.yml
@@ -0,0 +1,30 @@
+name: "Bundle Size check @excalidraw/excalidraw"
+on:
+ pull_request:
+ branches:
+ - master
+jobs:
+ size:
+ runs-on: ubuntu-latest
+ env:
+ CI_JOB_NUMBER: 1
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v3
+ - name: Setup Node.js 18.x
+ uses: actions/setup-node@v3
+ with:
+ node-version: 18.x
+ - name: Install
+ run: yarn --frozen-lockfile
+ - name: Install in src/packages/excalidraw
+ run: yarn --frozen-lockfile
+ working-directory: src/packages/excalidraw
+ env:
+ CI: true
+ - uses: andresz1/size-limit-action@v1
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ build_script: build:umd
+ skip_step: install
+ directory: src/packages/excalidraw
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index b64ea4735..5c4584e82 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -7,10 +7,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- - name: Setup Node.js 14.x
+ - name: Setup Node.js 18.x
uses: actions/setup-node@v2
with:
- node-version: 14.x
+ node-version: 18.x
- name: Install and test
run: |
yarn --frozen-lockfile
diff --git a/.gitignore b/.gitignore
index 4a3f6f367..6e430f4ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,3 +25,6 @@ src/packages/excalidraw/types
src/packages/excalidraw/example/public/bundle.js
src/packages/excalidraw/example/public/excalidraw-assets-dev
src/packages/excalidraw/example/public/excalidraw.development.js
+coverage
+dev-dist
+html
diff --git a/.husky/pre-commit b/.husky/pre-commit
index 521508d8e..ab2a5ac5f 100755
--- a/.husky/pre-commit
+++ b/.husky/pre-commit
@@ -1,2 +1,2 @@
#!/bin/sh
-yarn lint-staged
+# yarn lint-staged
diff --git a/.npmrc b/.npmrc
index cffe8cdef..1b78f1c6f 100644
--- a/.npmrc
+++ b/.npmrc
@@ -1 +1,2 @@
save-exact=true
+legacy-peer-deps=true
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b3a5c325c..509908e5d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,63 +1,3 @@
# Contributing
-## Setup
-
-### Option 1 - Manual
-
-1. Fork and clone the repo
-1. Run `yarn` to install dependencies
-1. Create a branch for your PR with `git checkout -b your-branch-name`
-
-> To keep `master` branch pointing to remote repository and make pull requests from branches on your fork. To do this, run:
->
-> ```sh
-> git remote add upstream https://github.com/excalidraw/excalidraw.git
-> git fetch upstream
-> git branch --set-upstream-to=upstream/master master
-> ```
-
-### Option 2 - CodeSandbox
-
-1. Go to https://codesandbox.io/s/github/excalidraw/excalidraw
-1. Connect your GitHub account
-1. Go to Git tab on left side
-1. Tap on `Fork Sandbox`
-1. Write your code
-1. Commit and PR automatically
-
-## Pull Request Guidelines
-
-Don't worry if you get any of the below wrong, or if you don't know how. We'll gladly help out.
-
-### Title
-
-Make sure the title starts with a semantic prefix:
-
-- **feat**: A new feature
-- **fix**: A bug fix
-- **docs**: Documentation only changes
-- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
-- **refactor**: A code change that neither fixes a bug nor adds a feature
-- **perf**: A code change that improves performance
-- **test**: Adding missing tests or correcting existing tests
-- **build**: Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
-- **ci**: Changes to our CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
-- **chore**: Other changes that don't modify src or test files
-- **revert**: Reverts a previous commit
-
-### Changelog
-
-Add a brief description of your pull request to the changelog located here: [`src/packages/excalidraw/CHANGELOG.md`](src/packages/excalidraw/CHANGELOG.md)
-
-Notes:
-
-- Make sure to prepend to the section corresponding with the semantic prefix you selected in the title
-- Link to your pull request - this will require updating the CHANGELOG _after_ creating the pull request
-
-### Testing
-
-Once you submit your pull request it will automatically be tested. Be sure to check the results of the test and fix any issues that arise.
-
-It's also a good idea to consider if your change should include additional tests. This is highly recommended for new features or bug-fixes. For example, it's good practice to create a test for each bug you fix which ensures that we don't regress the code in the future.
-
-Finally - always manually test your changes using the convenient staging environment deployed for each pull request. As much as local development attempts to replicate production, there can still be subtle differences in behavior. For larger features consider testing your change in multiple browsers as well.
+Head over to the [docs](https://docs.excalidraw.com/docs/introduction/contributing)
diff --git a/Dockerfile b/Dockerfile
index f295f7f6a..a044f40f6 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,9 @@
-FROM node:14-alpine AS build
+FROM node:18 AS build
WORKDIR /opt/node_app
COPY package.json yarn.lock ./
-RUN yarn --ignore-optional
+RUN yarn --ignore-optional --network-timeout 600000
ARG NODE_ENV=production
diff --git a/README.md b/README.md
index 45fec41ba..48529165e 100644
--- a/README.md
+++ b/README.md
@@ -1,201 +1,126 @@
-
-
-
-
-
Virtual whiteboard for sketching hand-drawn like diagrams. Collaborative and end-to-end encrypted.
-
-
-
-
-
-
-
-
-
Ask questions or hang out on our discord.gg/UexuTaE .
+
+
+
+
+
+
+
+
+
+
+
+ An open source virtual hand-drawn style whiteboard.
+ Collaborative and end-to-end encrypted.
+
+
-## Try it now
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-Go to [excalidraw.com](https://excalidraw.com) to start sketching.
+
+
+
+
+
+
+
+ Create beautiful hand-drawn like diagrams, wireframes, or whatever you like.
+
+
+
+
-Read the latest news and updates on our [blog](https://blog.excalidraw.com). A good start is to see all the updates of [One Year of Excalidraw](https://blog.excalidraw.com/one-year-of-excalidraw/).
+## Features
-## Supporting Excalidraw
+The Excalidraw editor (npm package) supports:
-If you like the project, you can become a sponsor at [Open Collective](https://opencollective.com/excalidraw).
+- 💯 Free & open-source.
+- 🎨 Infinite, canvas-based whiteboard.
+- ✍️ Hand-drawn like style.
+- 🌓 Dark mode.
+- 🏗️ Customizable.
+- 📷 Image support.
+- 😀 Shape libraries support.
+- 👅 Localization (i18n) support.
+- 🖼️ Export to PNG, SVG & clipboard.
+- 💾 Open format - export drawings as an `.excalidraw` json file.
+- ⚒️ Wide range of tools - rectangle, circle, diamond, arrow, line, free-draw, eraser...
+- ➡️ Arrow-binding & labeled arrows.
+- 🔙 Undo / Redo.
+- 🔍 Zoom and panning support.
-[
](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/10/website)
+## Excalidraw.com
+
+The app hosted at [excalidraw.com](https://excalidraw.com) is a minimal showcase of what you can build with Excalidraw. Its [source code](https://github.com/excalidraw/excalidraw/tree/master/src/excalidraw-app) is part of this repository as well, and the app features:
+
+- 📡 PWA support (works offline).
+- 🤼 Real-time collaboration.
+- 🔒 End-to-end encryption.
+- 💾 Local-first support (autosaves to the browser).
+- 🔗 Shareable links (export to a readonly link you can share with others).
+
+We'll be adding these features as drop-in plugins for the npm package in the future.
+
+## Quick start
+
+Install the [Excalidraw npm package](https://www.npmjs.com/package/@excalidraw/excalidraw):
+
+```
+npm install react react-dom @excalidraw/excalidraw
+```
+
+or via yarn
+
+```
+yarn add react react-dom @excalidraw/excalidraw
+```
+
+Don't forget to check out our [Documentation](https://docs.excalidraw.com)!
+
+## Contributing
+
+- Missing something or found a bug? [Report here](https://github.com/excalidraw/excalidraw/issues).
+- Want to contribute? Check out our [contribution guide](https://docs.excalidraw.com/docs/introduction/contributing) or let us know on [Discord](https://discord.gg/UexuTaE).
+- Want to help with translations? See the [translation guide](https://docs.excalidraw.com/docs/introduction/contributing#translating).
+
+## Integrations
+
+- [VScode extension](https://marketplace.visualstudio.com/items?itemName=pomdtr.excalidraw-editor)
+- [npm package](https://www.npmjs.com/package/@excalidraw/excalidraw)
+
+## Who's integrating Excalidraw
+
+[Google Cloud](https://googlecloudcheatsheet.withgoogle.com/architecture) • [Meta](https://meta.com/) • [CodeSandbox](https://codesandbox.io/) • [Obsidian Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) • [Replit](https://replit.com/) • [Slite](https://slite.com/) • [Notion](https://notion.so/) • [HackerRank](https://www.hackerrank.com/) • and many others
+
+## Sponsors & support
+
+If you like the project, you can become a sponsor at [Open Collective](https://opencollective.com/excalidraw) or use [Excalidraw+](https://plus.excalidraw.com/).
+
+## Thank you for supporting Excalidraw
+
+[
](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [
](https://opencollective.com/excalidraw/tiers/sponsors/10/website)
Last but not least, we're thankful to these companies for offering their services for free:
[](https://vercel.com) [](https://sentry.io) [](https://crowdin.com)
-
-## Who's integrating Excalidraw
-
-[Google Cloud](https://googlecloudcheatsheet.withgoogle.com/architecture) • [Meta](https://meta.com/) • [CodeSandbox](https://codesandbox.io/) • [Obsidian Excalidraw](https://github.com/zsviczian/obsidian-excalidraw-plugin) • [Replit](https://replit.com/) • [Slite](https://slite.com/) • [Notion](https://notion.so/) • [HackerRank](https://www.hackerrank.com/) •
-
-## Documentation
-
-### Shortcuts
-
-You can almost do anything with shortcuts. Click on the help icon on the bottom right corner to see them all.
-
-### Curved lines and arrows
-
-Choose line or arrow and click click click instead of drag.
-
-### Charts
-
-You can easily create charts by copy pasting data from Excel or just plain comma separated text.
-
-### Translating
-
-To translate Excalidraw into other languages, please visit [our Crowdin page](https://crowdin.com/project/excalidraw). To add a new language, [open an issue](https://github.com/excalidraw/excalidraw/issues/new) so we can get things set up on our end first.
-
-Translations will be available on the app if they exceed a certain threshold of completion (currently 85%).
-
-### Create a collaboration session manually
-
-In order to create a session manually, you just need to generate a link of this form:
-
-```
-https://excalidraw.com/#room=[0-9a-f]{20},[a-zA-Z0-9_-]{22}
-```
-
-#### Example
-
-```
-https://excalidraw.com/#room=91bd46ae3aa84dff9d20,pfLqgEoY1c2ioq8LmGwsFA
-```
-
-The first set of digits is the room. This is visible from the server that’s going to dispatch messages to everyone that knows this number.
-
-The second set of digits is the encryption key. The Excalidraw server doesn’t know about it. This is what all the participants use to encrypt/decrypt the messages.
-
-> Note: Please ensure that the encryption key is 22 characters long.
-
-## Shape libraries
-
-Find a growing list of libraries containing assets for your drawings at [libraries.excalidraw.com](https://libraries.excalidraw.com).
-
-## Embedding Excalidraw in your App?
-
-Try out [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw). This package allows you to easily embed Excalidraw as a React component into your apps.
-
-## Development
-
-### Code Sandbox
-
-- Go to https://codesandbox.io/p/github/excalidraw/excalidraw
- - You may need to sign in with GitHub and reload the page
-- You can start coding instantly, and even send PRs from there!
-
-### Local Installation
-
-These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
-
-#### Requirements
-
-- [Node.js](https://nodejs.org/en/)
-- [Yarn](https://yarnpkg.com/getting-started/install) (v1 or v2.4.2+)
-- [Git](https://git-scm.com/downloads)
-
-#### Clone the repo
-
-```bash
-git clone https://github.com/excalidraw/excalidraw.git
-```
-
-#### Install the dependencies
-
-```bash
-yarn
-```
-
-#### Start the server
-
-```bash
-yarn start
-```
-
-Now you can open [http://localhost:3000](http://localhost:3000) and start coding in your favorite code editor.
-
-#### Collaboration
-
-For collaboration, you will need to set up [collab server](https://github.com/excalidraw/excalidraw-room) in local.
-
-#### Commands
-
-##### Install the dependencies
-
-```
-yarn
-```
-
-##### Run the project
-
-```
-yarn start
-```
-
-##### Reformat all files with Prettier
-
-```
-yarn fix
-```
-
-##### Run tests
-
-```
-yarn test
-```
-
-##### Update test snapshots
-
-```
-yarn test:update
-```
-
-##### Test for formatting with Prettier
-
-```
-yarn test:code
-```
-
-#### Docker Compose
-
-You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env.
-
-```sh
-docker-compose up --build -d
-```
-
-### Self-hosting
-
-We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw](https://hub.docker.com/r/excalidraw/excalidraw). You can use it to self-host your own client under your own domain, on Kubernetes, AWS ECS, etc.
-
-```sh
-docker build -t excalidraw/excalidraw .
-docker run --rm -dit --name excalidraw -p 5000:80 excalidraw/excalidraw:latest
-```
-
-The Docker image is free of analytics and other tracking libraries.
-
-**At the moment, self-hosting your own instance doesn't support sharing or collaboration features.**
-
-We are working towards providing a full-fledged solution for self-hosting your own Excalidraw.
-
-## Contributing
-
-Pull requests are welcome. For major changes, please [open an issue](https://github.com/excalidraw/excalidraw/issues/new) first to discuss what you would like to change.
-
-## Notable used tools
-
-- [Create React App](https://github.com/facebook/create-react-app)
-- [Rough.js](https://roughjs.com)
-- [TypeScript](https://www.typescriptlang.org)
-- [Vercel](https://vercel.com)
-
-And the main source of inspiration for starting the project is the awesome [Zwibbler](https://zwibbler.com/demo/) app.
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx
new file mode 100644
index 000000000..aee7f3bfb
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/api-intro.mdx
@@ -0,0 +1,11 @@
+---
+slug: /@excalidraw/excalidraw/api
+---
+
+# API
+
+Currently the **API** is divided into 3 broad categories 👇
+
+- [Props](/docs/@excalidraw/excalidraw/api/props) - The `props` you can pass to the `Excalidraw` component.
+- [Children components](/docs/@excalidraw/excalidraw/api/children-components) - Official components you can use to customize the UI.
+- [Utils](/docs/@excalidraw/excalidraw/api/utils) - Utilities and helpers you can use to export, restore and more.
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx
new file mode 100644
index 000000000..706adb594
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/children-components-intro.mdx
@@ -0,0 +1,21 @@
+---
+sidebar_label: Children Components
+slug: /@excalidraw/excalidraw/api/children-components
+---
+
+# `
` children
+
+We expose several components you can render as children of the `
` component to customize the UI.
+
+:::info
+
+We have only recently started migrating to this type of component API. Some UI components are still using render props, and some UI customization isn't supported yet (such as the toolbar or the element properties panel). Stay tuned for more updates!
+
+:::
+
+Below are the currently supported components:
+
+- [MainMenu](/docs/@excalidraw/excalidraw/api/children-components/main-menu)
+- [WelcomeScreen](/docs/@excalidraw/excalidraw/api/children-components/welcome-screen)
+- [Footer](/docs/@excalidraw/excalidraw/api/children-components/footer)
+- [LiveCollaborationTrigger](/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger)
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx
new file mode 100644
index 000000000..cdd5ea5a4
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/footer.mdx
@@ -0,0 +1,68 @@
+# Footer
+
+Earlier we were using `renderFooter` prop to render custom footer which was removed in [#5970](https://github.com/excalidraw/excalidraw/pull/5970). Now you can pass a `Footer` component instead to render the custom UI for footer.
+
+You will need to import the `Footer` component from the package and wrap your component with the Footer component. The `Footer` should a valid React Node.
+
+**Usage**
+
+```jsx live
+function App() {
+ return (
+
+
+
+ alert("This is dummy footer")}
+ >
+ custom footer
+
+
+
+
+ );
+}
+```
+
+This will only for `Desktop` devices.
+
+For `mobile` you will need to render it inside the [MainMenu](#mainmenu). You can use the [`useDevice`](#useDevice) hook to check the type of device, this will be available only inside the `children` of `Excalidraw` component.
+
+Open the `Menu` in the below playground and you will see the `custom footer` rendered.
+
+```jsx live noInline
+const MobileFooter = ({}) => {
+ const device = useDevice();
+ if (device.isMobile) {
+ return (
+
+ alert("This is custom footer in mobile menu")}
+ >
+ custom footer
+
+
+ );
+ }
+ return null;
+};
+
+const App = () => (
+
+
+
+ Item1
+ Item 2
+
+
+
+
+);
+
+// Need to render when code is span across multiple components
+// in Live Code blocks editor
+render(
);
+```
\ No newline at end of file
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx
new file mode 100644
index 000000000..ef74d0e65
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx
@@ -0,0 +1,62 @@
+# LiveCollaborationTrigger
+
+If you implement live collaboration support and want to expose the same UI button as on [excalidraw.com](https://excalidraw.com), you can render the `
` component using the [renderTopRightUI](/docs/@excalidraw/excalidraw/api/props#rendertoprightui) prop.
+
+You'll need to supply `onSelect()` to handle opening of your collaboration dialog, but the button will display `appState.collaborators` count provided you have supplied it.
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| `onSelect` | `function` | Yes | | Handler called when the user clicks on the button |
+| `isCollaborating` | `boolean` | Yes | false | Whether live collaboration session is in effect. Modifies button style. |
+
+```tsx live
+function App() {
+ const [excalidrawAPI, setExcalidrawAPI] = useState(null);
+ const [isCollaborating, setIsCollaborating] = useState(false);
+ return (
+
+
+ Selecting the checkbox to see the collaborator count
+
+
+ {
+ if (!isCollaborating) {
+ const collaborators = new Map();
+ collaborators.set("id1", {
+ username: "Doremon",
+ avatarUrl: "../../../../img/doremon.png",
+ });
+ collaborators.set("id3", {
+ username: "Pika",
+ avatarUrl: "../../../../img/pika.jpeg",
+ });
+ excalidrawAPI.updateScene({ collaborators });
+ } else {
+ excalidrawAPI.updateScene({
+ collaborators: new Map(),
+ });
+ }
+ setIsCollaborating(!isCollaborating);
+ }}
+ />
+ Show Collaborators
+
+
setExcalidrawAPI(api)}
+ renderTopRightUI={() => (
+ {
+ window.alert("You clicked on collab button");
+ setIsCollaborating(true);
+ }}
+ />
+ )}
+ >
+
+ );
+}
+```
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx
new file mode 100644
index 000000000..2494df108
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/main-menu.mdx
@@ -0,0 +1,167 @@
+# MainMenu
+
+By default Excalidraw will render the `MainMenu` with default options. If you want to customise the `MainMenu`, you can pass the `MainMenu` component with the list options.
+
+**Usage**
+
+```jsx live
+function App() {
+ return (
+
+
+
+ window.alert("Item1")}>
+ Item1
+
+ window.alert("Item2")}>
+ Item 2
+
+
+
+
+ );
+}
+```
+
+### `
`
+
+This is the `MainMenu` component. If you render it, you will need to populate the menu with your own items as we will not render any ourselves at that point.
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | :-: | :-: | --- |
+| `onSelect` | `function` | No | - | Triggered when any item is selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. |
+
+### MainMenu.Item
+
+To render an item, its recommended to use `MainMenu.Item`.
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | :-: | :-: | --- |
+| `onSelect` | `function` | Yes | - | Triggered when selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. |
+| `children` | `React.ReactNode` | Yes | - | The content of the menu item |
+| `icon` | `JSX.Element` | No | - | The icon used in the menu item |
+| `shortcut` | `string` | No | - | The shortcut to be shown for the menu item |
+
+### MainMenu.ItemLink
+
+To render an item as a link, its recommended to use `MainMenu.ItemLink`.
+
+**Usage**
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+ Google
+
+
+ Excalidraw
+
+
+
+
+ );
+}
+```
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | :-: | :-: | --- |
+| `onSelect` | `function` | No | - | Triggered when selected (via mouse). Calling `event.preventDefault()` will stop menu from closing. |
+| `href` | `string` | Yes | - | The `href` attribute to be added to the `anchor` element. |
+| `children` | `React.ReactNode` | Yes | - | The content of the menu item |
+| `icon` | `JSX.Element` | No | - | The icon used in the menu item |
+| `shortcut` | `string` | No | - | The shortcut to be shown for the menu item |
+
+### MainMenu.ItemCustom
+
+To render a custom item, you can use `MainMenu.ItemCustom`.
+
+**Usage**
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+ window.alert("custom menu item")}
+ >
+ custom item
+
+
+
+
+
+ );
+}
+```
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | :-: | :-: | --- |
+| `children` | `React.ReactNode` | Yes | - | The content of the menu item |
+
+### MainMenu.DefaultItems
+
+For the items which are shown in the menu in [excalidraw.com](https://excalidraw.com), you can use `MainMenu.DefaultItems`
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+
+ window.alert("Item1")}>
+ Item1
+
+ window.alert("Item2")}>
+ Item 2
+
+
+
+
+ );
+}
+```
+
+Here is a [complete list](https://github.com/excalidraw/excalidraw/blob/master/src/components/mainMenu/DefaultItems.tsx) of the default items.
+
+### MainMenu.Group
+
+To Group item in the main menu, you can use `MainMenu.Group`
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+
+
+
+
+ window.alert("Item1")}>
+ Item1
+
+ window.alert("Item2")}>
+ Item 2
+
+
+
+
+
+ );
+}
+```
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | :-: | :-: | --- |
+| `children ` | `React.ReactNode` | Yes | - | The content of the `Menu Group` |
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx
new file mode 100644
index 000000000..8150508bf
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/welcome-screen.mdx
@@ -0,0 +1,140 @@
+# WelcomeScreen
+
+When the canvas is empty, Excalidraw can show a welcome _splash_ screen with a logo, a few quick action items, and hints explaining what some of the UI buttons do. Once the user picks a tool, or has created an element on the canvas, the welcome screen will disappear.
+
+You can enable this behavior by rendering a `WelcomeScreen` component like this:
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+
+ );
+}
+```
+
+You can also customize the welcome screen by passing children to the `WelcomeScreen` component. See below.
+
+##
+
+This is the main component. If you render it without any children, we will render the default welcome screen.
+
+You can customize which welcome screen subcomponents are rendered by passing them as children.
+
+The welcome screen consists of two main groups of subcomponents:
+
+1. [WelcomeScreen.Center](#welcomescreencenterlogo).
+2. [WeelcomeScreen.Hints](#welcomescreenhints).
+
+
+
+### Center
+
+` ` subcomponent is the center piece of the welcome screen, containing the `logo`, `heading`, and `menu`. All three subcomponents are optional, and you can render whatever you wish into the center component.
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+
+
+ Welcome Screen Heading!
+
+
+
+ Excalidraw GitHub
+
+
+
+
+
+
+
+ );
+}
+```
+
+#### Logo
+
+Use the ` ` to render a logo. By default it renders the Excalidraw logo and name. Supply `children` to customize.
+
+#### Heading
+
+Use the ` ` to render a heading below the logo. Supply `children` to change the default message.
+
+#### Menu
+
+` ` is a wrapper component for the menu items. You can build your menu using the `` and `` components, render your own, or render one of the default menu items.
+
+The default menu items are:
+
+- ` ` - opens the help dialog.
+
+- ` ` - open the load file dialog.
+
+- ` ` - intended to open the live collaboration dialog. Works similarly to [``](/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger) and you must supply `onSelect()` handler to integrate with your collaboration implementation.
+
+#### MenuItem
+
+The ` ` component can be used to render a menu item.
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| `onSelect` | `function` | Yes | | The handler is triggered when the item is selected. |
+| `children` | `React.ReactNode` | Yes | | The content of the menu item |
+| `icon` | `JSX.Element` | No | | The icon used in the menu item |
+| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) |
+
+**WelcomeScreen.Center.MenuItemLink**
+
+To render an external link in a menu item, you can use this component.
+
+| Prop | Type | Required | Default | Description |
+| --- | --- | --- | --- | --- |
+| `href` | `string` | Yes | | The `href` attribute to be added to the `anchor` element. |
+| `children` | `React.ReactNode` | Yes | | The content of the menu item |
+| `icon` | `JSX.Element` | No | | The icon used in the menu item |
+| `shortcut` | `string` | No | | The keyboard shortcut (label-only, does not affect behavior) |
+
+### Hints
+
+These `` subcomponents render the UI hints. Text of each hint can be customized by supplying `children`.
+
+```jsx live
+function App() {
+ return (
+
+
+
+
+ ToolBar Hints
+
+
+
+
+
+
+ );
+}
+```
+
+#### MenuHint
+
+`` hint subcomponent for the main menu. Supply `children` to customize the hint text.
+
+#### ToolbarHint
+
+`` hint subcomponent for the toolbar. Supply `children` to customize the hint text.
+
+#### Help
+
+`` hint subcomponent for the help dialog. Supply `children` to customize the hint text.
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx
new file mode 100644
index 000000000..a6c95ab2a
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx
@@ -0,0 +1,46 @@
+# Constants
+
+### FONT_FAMILY
+
+**How to use**
+
+```js
+import { FONT_FAMILY } from "@excalidraw/excalidraw";
+```
+
+`FONT_FAMILY` contains all the font families used in `Excalidraw` as explained below
+
+| Font Family | Description |
+| ----------- | ---------------------- |
+| `Virgil` | The `handwritten` font |
+| `Helvetica` | The `Normal` Font |
+| `Cascadia` | The `Code` Font |
+
+Defaults to `FONT_FAMILY.Virgil` unless passed in `initialData.appState.currentItemFontFamily`.
+
+### THEME
+
+**How to use**
+
+```js
+import { THEME } from "@excalidraw/excalidraw";
+```
+
+`THEME` contains all the themes supported by `Excalidraw` as explained below
+
+| Theme | Description |
+| ------- | ----------------- |
+| `LIGHT` | The `light` theme |
+| `DARK` | The `Dark` theme |
+
+Defaults to `THEME.LIGHT` unless passed in `initialData.appState.theme`
+
+### MIME_TYPES
+
+[`MIME_TYPES`](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L101) contains all the mime types supported by `Excalidraw`.
+
+**How to use **
+
+```js
+import { MIME_TYPES } from "@excalidraw/excalidraw";
+```
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx
new file mode 100644
index 000000000..7d79128f0
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/initialdata.mdx
@@ -0,0 +1,55 @@
+# initialData
+
+
+{ elements?: ExcalidrawElement[] , appState?: AppState }
+
+
+This helps to load Excalidraw with `initialData`. It must be an object or a [promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/Promise) which resolves to an object containing the below optional fields.
+
+| Name | Type | Description |
+| --- | --- | --- |
+| `elements` | [ExcalidrawElement[]](https://github.com/excalidraw/excalidraw/blob/master/src/element/types.ts#L114) | The `elements` with which `Excalidraw` should be mounted. |
+| `appState` | [AppState](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L95) | The `AppState` with which `Excalidraw` should be mounted. |
+| `scrollToContent` | `boolean` | This attribute indicates whether to `scroll` to the nearest element to center once `Excalidraw` is mounted. By default, it will not scroll the nearest element to the center. Make sure you pass `initialData.appState.scrollX` and `initialData.appState.scrollY` when `scrollToContent` is false so that scroll positions are retained |
+| `libraryItems` | [LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L247) | Promise<[LibraryItems](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L200)> | This library items with which `Excalidraw` should be mounted. |
+| `files` | [BinaryFiles](https://github.com/excalidraw/excalidraw/blob/master/src/types.ts#L82) | The `files` added to the scene. |
+
+You might want to use this when you want to load excalidraw with some initial elements and app state.
+
+```jsx live
+function App() {
+ return (
+
+
+
+ );
+}
+```
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx
new file mode 100644
index 000000000..104d9dccd
--- /dev/null
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/props.mdx
@@ -0,0 +1,240 @@
+# Props
+
+All `props` are *optional*.
+
+| Name | Type | Default | Description |
+| --- | --- | --- | --- |
+| [`initialData`](/docs/@excalidraw/excalidraw/api/props/initialdata) | `object` | `null` | Promise
| `null` | The initial data with which app loads. |
+| [`ref`](/docs/@excalidraw/excalidraw/api/props/ref) | `object` | _ | `Ref` to be passed to Excalidraw |
+| [`isCollaborating`](#iscollaborating) | `boolean` | _ | This indicates if the app is in `collaboration` mode |
+| [`onChange`](#onchange) | `function` | _ | This callback is triggered whenever the component updates due to any change. This callback will receive the excalidraw `elements` and the current `app state`. |
+| [`onPointerUpdate`](#onpointerupdate) | `function` | _ | Callback triggered when mouse pointer is updated. |
+| [`onPointerDown`](#onpointerdown) | `function` | _ | This prop if passed gets triggered on pointer down evenets |
+| [`onScrollChange`](#onscrollchange) | `function` | _ | This prop if passed gets triggered when scrolling the canvas. |
+| [`onPaste`](#onpaste) | `function` | _ | Callback to be triggered if passed when the something is pasted in to the scene |
+| [`onLibraryChange`](#onlibrarychange) | `function` | _ | The callback if supplied is triggered when the library is updated and receives the library items. |
+| [`onLinkOpen`](#onlinkopen) | `function` | _ | The callback if supplied is triggered when any link is opened. |
+| [`langCode`](#langcode) | `string` | `en` | Language code string to be used in Excalidraw |
+| [`renderTopRightUI`](/docs/@excalidraw/excalidraw/api/props/render-props#rendertoprightui) | `function` | _ | Render function that renders custom UI in top right corner |
+| [`renderCustomStats`](/docs/@excalidraw/excalidraw/api/props/render-props#rendercustomstats) | `function` | _ | Render function that can be used to render custom stats on the stats dialog. |
+| [`renderSidebar`](/docs/@excalidraw/excalidraw/api/props/render-props#rendersidebar) | `function` | _ | Render function that renders custom sidebar. |
+| [`viewModeEnabled`](#viewmodeenabled) | `boolean` | _ | This indicates if the app is in `view` mode. |
+| [`zenModeEnabled`](#zenmodeenabled) | `boolean` | _ | This indicates if the `zen` mode is enabled |
+| [`gridModeEnabled`](#gridmodeenabled) | `boolean` | _ | This indicates if the `grid` mode is enabled |
+| [`libraryReturnUrl`](#libraryreturnurl) | `string` | _ | What URL should [libraries.excalidraw.com](https://libraries.excalidraw.com) be installed to |
+| [`theme`](#theme) | `"light"` | `"dark"` | `"light"` | The theme of the Excalidraw component |
+| [`name`](#name) | `string` | | Name of the drawing |
+| [`UIOptions`](/docs/@excalidraw/excalidraw/api/props/ui-options) | `object` | [DEFAULT UI OPTIONS](https://github.com/excalidraw/excalidraw/blob/master/src/constants.ts#L151) | To customise UI options. Currently we support customising [`canvas actions`](#canvasactions) |
+| [`detectScroll`](#detectscroll) | `boolean` | `true` | Indicates whether to update the offsets when nearest ancestor is scrolled. |
+| [`handleKeyboardGlobally`](#handlekeyboardglobally) | `boolean` | `false` | Indicates whether to bind the keyboard events to document. |
+| [`autoFocus`](#autofocus) | `boolean` | `false` | indicates whether to focus the Excalidraw component on page load |
+| [`generateIdForFile`](#generateidforfile) | `function` | _ | Allows you to override `id` generation for files added on canvas |
+| [`validateEmbeddable`](#validateEmbeddable) | string[] | `boolean | RegExp | RegExp[] | ((link: string) => boolean | undefined)` | \_ | use for custom src url validation |
+| [`renderEmbeddable`](/docs/@excalidraw/excalidraw/api/props/render-props#renderEmbeddable) | `function` | \_ | Render function that can override the built-in `
);
@@ -519,7 +486,7 @@ export default function App() {
}}
onBlur={saveComment}
onKeyDown={(event) => {
- if (!event.shiftKey && event.key === "Enter") {
+ if (!event.shiftKey && event.key === KEYS.ENTER) {
event.preventDefault();
saveComment();
}
@@ -528,18 +495,39 @@ export default function App() {
);
};
- const renderSidebar = () => {
+ const renderMenu = () => {
return (
-
- Custom header!
- Custom sidebar!
-
+
+
+
+
+ window.alert("You clicked on collab button")}
+ />
+
+
+
+
+
+ window.alert("custom menu item")}
+ >
+ custom item
+
+
+
+
+ {excalidrawAPI && }
+
);
};
return (
-
Excalidraw Example
+
{appTitle}
+ {/* TODO fix type */}
Load Scene or Library
@@ -607,11 +595,7 @@ export default function App() {
type="checkbox"
checked={theme === "dark"}
onChange={() => {
- let newTheme = "light";
- if (theme === "light") {
- newTheme = "dark";
- }
- setTheme(newTheme);
+ setTheme(theme === "light" ? "dark" : "light");
}}
/>
Switch to Dark Theme
@@ -625,15 +609,15 @@ export default function App() {
const collaborators = new Map();
collaborators.set("id1", {
username: "Doremon",
- avatarUrl: "doremon.png",
+ avatarUrl: "images/doremon.png",
});
collaborators.set("id2", {
username: "Excalibot",
- avatarUrl: "excalibot.png",
+ avatarUrl: "images/excalibot.png",
});
collaborators.set("id3", {
username: "Pika",
- avatarUrl: "pika.jpeg",
+ avatarUrl: "images/pika.jpeg",
});
collaborators.set("id4", {
username: "fallback",
@@ -674,23 +658,6 @@ export default function App() {
-
- excalidrawAPI?.toggleMenu("customSidebar")}>
- Toggle Custom Sidebar
-
-
setExcalidrawAPI(api)}
initialData={initialStatePromiseRef.current.promise}
@@ -702,22 +669,55 @@ export default function App() {
button: "down" | "up";
pointersMap: Gesture["pointers"];
}) => setPointerData(payload)}
- onCollabButtonClick={() =>
- window.alert("You clicked on collab button")
- }
viewModeEnabled={viewModeEnabled}
zenModeEnabled={zenModeEnabled}
gridModeEnabled={gridModeEnabled}
theme={theme}
name="Custom name of drawing"
- UIOptions={{ canvasActions: { loadScene: false } }}
+ UIOptions={{
+ canvasActions: {
+ loadScene: false,
+ },
+ }}
renderTopRightUI={renderTopRightUI}
- renderFooter={renderFooter}
onLinkOpen={onLinkOpen}
onPointerDown={onPointerDown}
onScrollChange={rerenderCommentIcons}
- renderSidebar={renderSidebar}
- />
+ // allow all urls
+ validateEmbeddable={true}
+ >
+ {excalidrawAPI && (
+
+ )}
+
+
+
+
+ Tab one!
+ Tab two!
+
+ One
+ Two
+
+
+
+
+ Toggle Custom Sidebar
+
+ {renderMenu()}
+
{Object.keys(commentIcons || []).length > 0 && renderCommentIcons()}
{comment && renderComment()}
@@ -786,7 +786,6 @@ export default function App() {
-
{
if (!excalidrawAPI) {
@@ -808,6 +807,78 @@ export default function App() {
>
Export to Canvas
+ {
+ if (!excalidrawAPI) {
+ return;
+ }
+ const canvas = await exportToCanvas({
+ elements: excalidrawAPI.getSceneElements(),
+ appState: {
+ ...initialData.appState,
+ exportWithDarkMode,
+ },
+ files: excalidrawAPI.getFiles(),
+ });
+ const ctx = canvas.getContext("2d")!;
+ ctx.font = "30px Virgil";
+ ctx.strokeText("My custom text", 50, 60);
+ setCanvasUrl(canvas.toDataURL());
+ }}
+ >
+ Export to Canvas
+
+ {
+ if (!excalidrawAPI) {
+ return;
+ }
+
+ const elements = excalidrawAPI.getSceneElements();
+ excalidrawAPI.scrollToContent(elements[0], {
+ fitToViewport: true,
+ });
+ }}
+ >
+ Fit to viewport, first element
+
+ {
+ if (!excalidrawAPI) {
+ return;
+ }
+
+ const elements = excalidrawAPI.getSceneElements();
+ excalidrawAPI.scrollToContent(elements[0], {
+ fitToContent: true,
+ });
+
+ excalidrawAPI.scrollToContent(elements[0], {
+ fitToContent: true,
+ });
+ }}
+ >
+ Fit to content, first element
+
+ {
+ if (!excalidrawAPI) {
+ return;
+ }
+
+ const elements = excalidrawAPI.getSceneElements();
+ excalidrawAPI.scrollToContent(elements[0], {
+ fitToContent: true,
+ });
+
+ excalidrawAPI.scrollToContent(elements[0]);
+ }}
+ >
+ Scroll to first element, no fitToContent, no fitToViewport
+
diff --git a/src/packages/excalidraw/example/CustomFooter.tsx b/src/packages/excalidraw/example/CustomFooter.tsx
new file mode 100644
index 000000000..5c47de6c6
--- /dev/null
+++ b/src/packages/excalidraw/example/CustomFooter.tsx
@@ -0,0 +1,74 @@
+import { ExcalidrawImperativeAPI } from "../../../types";
+import { MIME_TYPES } from "../entry";
+import { Button } from "../../../components/Button";
+
+const COMMENT_SVG = (
+
+
+
+);
+const CustomFooter = ({
+ excalidrawAPI,
+}: {
+ excalidrawAPI: ExcalidrawImperativeAPI;
+}) => {
+ return (
+ <>
+ alert("General Kenobi!")}
+ className="you are a bold one"
+ style={{ marginLeft: "1rem" }}
+ title="Hello there!"
+ >
+ {COMMENT_SVG}
+
+ {
+ excalidrawAPI?.setActiveTool({
+ type: "custom",
+ customType: "comment",
+ });
+ const url = `data:${MIME_TYPES.svg},${encodeURIComponent(
+ `
+
+ `,
+ )}`;
+ excalidrawAPI?.setCursor(`url(${url}), auto`);
+ }}
+ >
+ {COMMENT_SVG}
+
+ alert("This is dummy footer")}
+ >
+ custom footer
+
+ >
+ );
+};
+
+export default CustomFooter;
diff --git a/src/packages/excalidraw/example/MobileFooter.tsx b/src/packages/excalidraw/example/MobileFooter.tsx
new file mode 100644
index 000000000..004c78bbc
--- /dev/null
+++ b/src/packages/excalidraw/example/MobileFooter.tsx
@@ -0,0 +1,20 @@
+import { ExcalidrawImperativeAPI } from "../../../types";
+import CustomFooter from "./CustomFooter";
+const { useDevice, Footer } = window.ExcalidrawLib;
+
+const MobileFooter = ({
+ excalidrawAPI,
+}: {
+ excalidrawAPI: ExcalidrawImperativeAPI;
+}) => {
+ const device = useDevice();
+ if (device.isMobile) {
+ return (
+
+ );
+ }
+ return null;
+};
+export default MobileFooter;
diff --git a/src/packages/excalidraw/example/index.tsx b/src/packages/excalidraw/example/index.tsx
index 825a1016e..0f3bad30f 100644
--- a/src/packages/excalidraw/example/index.tsx
+++ b/src/packages/excalidraw/example/index.tsx
@@ -8,6 +8,9 @@ const root = createRoot(rootElement);
root.render(
-
+ {}}
+ />
,
);
diff --git a/src/packages/excalidraw/example/initialData.js b/src/packages/excalidraw/example/initialData.js
index dde22b83b..37b0755d3 100644
--- a/src/packages/excalidraw/example/initialData.js
+++ b/src/packages/excalidraw/example/initialData.js
@@ -20,6 +20,7 @@ export default {
height: 141.9765625,
seed: 1968410350,
groupIds: [],
+ frameId: null,
},
{
id: "-xMIs_0jIFqvpx-R9UnaG",
@@ -37,6 +38,7 @@ export default {
roughness: 1,
opacity: 100,
groupIds: [],
+ frameId: null,
seed: 957947807,
version: 47,
versionNonce: 1128618623,
@@ -58,6 +60,7 @@ export default {
roughness: 1,
opacity: 100,
groupIds: [],
+ frameId: null,
strokeSharpness: "round",
seed: 707269846,
version: 143,
@@ -94,6 +97,7 @@ export default {
height: 103.65107323746608,
seed: 1445523839,
groupIds: [],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
startBinding: null,
@@ -133,6 +137,7 @@ export default {
height: 113.8575037534261,
seed: 1513238033,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -182,6 +187,7 @@ export default {
height: 9.797916664247975,
seed: 683951089,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -220,6 +226,7 @@ export default {
height: 9.797916664247975,
seed: 1817746897,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -258,6 +265,7 @@ export default {
height: 17.72670397681366,
seed: 1409727409,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: ["bxuMGTzXLn7H-uBCptINx"],
},
@@ -281,6 +289,7 @@ export default {
height: 13.941904362416096,
seed: 1073094033,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -304,6 +313,7 @@ export default {
height: 13.941904362416096,
seed: 526271345,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -327,6 +337,7 @@ export default {
height: 13.941904362416096,
seed: 243707217,
groupIds: ["N2YAi9nU-wlRb0rDaDZoe"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -352,6 +363,7 @@ export default {
height: 36.77344700318558,
seed: 511870335,
groupIds: ["M6ByXuSmtHCr3RtPPKJQh"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -375,6 +387,7 @@ export default {
height: 36.77344700318558,
seed: 1283079231,
groupIds: ["M6ByXuSmtHCr3RtPPKJQh"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -398,6 +411,7 @@ export default {
height: 36.77344700318558,
seed: 996251633,
groupIds: ["M6ByXuSmtHCr3RtPPKJQh"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -421,6 +435,7 @@ export default {
height: 36.77344700318558,
seed: 1764842481,
groupIds: ["M6ByXuSmtHCr3RtPPKJQh"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -446,6 +461,7 @@ export default {
height: 154.56722543646003,
seed: 1424381745,
groupIds: ["HSrtfEf-CssQTf160Fb6R"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -495,6 +511,7 @@ export default {
height: 12.698053371678215,
seed: 726657713,
groupIds: ["HSrtfEf-CssQTf160Fb6R"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -533,6 +550,7 @@ export default {
height: 10.178760037658167,
seed: 1977326481,
groupIds: ["HSrtfEf-CssQTf160Fb6R"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -571,6 +589,7 @@ export default {
height: 22.797152568995934,
seed: 1774660383,
groupIds: ["HSrtfEf-CssQTf160Fb6R"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: ["bxuMGTzXLn7H-uBCptINx"],
},
@@ -596,6 +615,7 @@ export default {
height: 107.25081879410921,
seed: 371096063,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [
"CFu0B4Mw_1wC1Hbgx8Fs0",
@@ -623,6 +643,7 @@ export default {
height: 107.25081879410921,
seed: 685932433,
groupIds: ["0RJwA-yKP5dqk5oMiSeot", "9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [
"CFu0B4Mw_1wC1Hbgx8Fs0",
@@ -650,6 +671,7 @@ export default {
height: 107.25081879410921,
seed: 58634943,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [
"CFu0B4Mw_1wC1Hbgx8Fs0",
@@ -677,6 +699,7 @@ export default {
height: 3.249953844290203,
seed: 1673003743,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -708,6 +731,7 @@ export default {
height: 2.8032978840147194,
seed: 1821527807,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -739,6 +763,7 @@ export default {
height: 4.280657518731036,
seed: 1485707039,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -771,6 +796,7 @@ export default {
height: 2.9096445412231735,
seed: 1042012991,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -804,6 +830,7 @@ export default {
height: 2.4757501798128,
seed: 295443295,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -835,6 +862,7 @@ export default {
height: 2.4757501798128,
seed: 1734301567,
groupIds: ["9ppmKFUbA4iKjt8FaDFox"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
points: [
@@ -869,6 +897,7 @@ export default {
height: 76.53703389977764,
seed: 106569279,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -892,6 +921,7 @@ export default {
height: 0,
seed: 73916127,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -924,6 +954,7 @@ export default {
height: 5.001953125,
seed: 387857791,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -947,6 +978,7 @@ export default {
height: 5.001953125,
seed: 1486370207,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -970,6 +1002,7 @@ export default {
height: 5.001953125,
seed: 610150847,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -993,6 +1026,7 @@ export default {
height: 42.72020253937572,
seed: 144280593,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1016,6 +1050,7 @@ export default {
height: 24.44112284281997,
seed: 29167967,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -1068,6 +1103,7 @@ export default {
height: 0,
seed: 1443027377,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -1100,6 +1136,7 @@ export default {
height: 5.711199931375845,
seed: 244310513,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -1138,6 +1175,7 @@ export default {
height: 44.82230388130942,
seed: 683572113,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1161,6 +1199,7 @@ export default {
height: 5.896061363392446,
seed: 318798801,
groupIds: ["TC0RSM64Cxmu17MlE12-o"],
+ frameId: null,
strokeSharpness: "round",
boundElementIds: [],
startBinding: null,
@@ -1200,6 +1239,7 @@ export default {
height: 108.30428902193904,
seed: 1914896753,
groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1223,6 +1263,7 @@ export default {
height: 82.83278895375764,
seed: 1306468145,
groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1246,6 +1287,7 @@ export default {
height: 11.427824006438863,
seed: 93422161,
groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1269,6 +1311,7 @@ export default {
height: 19.889460471185775,
seed: 11646495,
groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
@@ -1292,6 +1335,7 @@ export default {
height: 19.889460471185775,
seed: 291717649,
groupIds: ["GMZ-NW9lG7c1AtfBInZ0n"],
+ frameId: null,
strokeSharpness: "sharp",
boundElementIds: [],
},
diff --git a/src/packages/excalidraw/example/public/images/doremon.png b/src/packages/excalidraw/example/public/images/doremon.png
new file mode 100644
index 000000000..36208a466
Binary files /dev/null and b/src/packages/excalidraw/example/public/images/doremon.png differ
diff --git a/src/packages/excalidraw/example/public/excalibot.png b/src/packages/excalidraw/example/public/images/excalibot.png
similarity index 100%
rename from src/packages/excalidraw/example/public/excalibot.png
rename to src/packages/excalidraw/example/public/images/excalibot.png
diff --git a/src/packages/excalidraw/example/public/images/pika.jpeg b/src/packages/excalidraw/example/public/images/pika.jpeg
new file mode 100644
index 000000000..455ed52a6
Binary files /dev/null and b/src/packages/excalidraw/example/public/images/pika.jpeg differ
diff --git a/src/packages/excalidraw/example/public/rocket.jpeg b/src/packages/excalidraw/example/public/images/rocket.jpeg
similarity index 100%
rename from src/packages/excalidraw/example/public/rocket.jpeg
rename to src/packages/excalidraw/example/public/images/rocket.jpeg
diff --git a/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx b/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx
index 0fa5bf4e0..4c51ecdc2 100644
--- a/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx
+++ b/src/packages/excalidraw/example/sidebar/ExampleSidebar.tsx
@@ -10,8 +10,8 @@ export default function Sidebar({ children }: { children: React.ReactNode }) {
x
- Dummy Home
- Dummy About {" "}
+ Empty Home
+ Empty About
diff --git a/src/packages/excalidraw/index.tsx b/src/packages/excalidraw/index.tsx
index 4ac071592..c417cdfb3 100644
--- a/src/packages/excalidraw/index.tsx
+++ b/src/packages/excalidraw/index.tsx
@@ -1,6 +1,7 @@
import React, { useEffect, forwardRef } from "react";
import { InitializeApp } from "../../components/InitializeApp";
import App from "../../components/App";
+import { isShallowEqual } from "../../utils";
import "../../css/app.scss";
import "../../css/styles.scss";
@@ -10,18 +11,19 @@ import { defaultLang } from "../../i18n";
import { DEFAULT_UI_OPTIONS } from "../../constants";
import { Provider } from "jotai";
import { jotaiScope, jotaiStore } from "../../jotai";
+import Footer from "../../components/footer/FooterCenter";
+import MainMenu from "../../components/main-menu/MainMenu";
+import WelcomeScreen from "../../components/welcome-screen/WelcomeScreen";
+import LiveCollaborationTrigger from "../../components/live-collaboration/LiveCollaborationTrigger";
const ExcalidrawBase = (props: ExcalidrawProps) => {
const {
onChange,
initialData,
excalidrawRef,
- onCollabButtonClick,
isCollaborating = false,
onPointerUpdate,
renderTopRightUI,
- renderFooter,
- renderSidebar,
langCode = defaultLang.code,
viewModeEnabled,
zenModeEnabled,
@@ -39,10 +41,15 @@ const ExcalidrawBase = (props: ExcalidrawProps) => {
onLinkOpen,
onPointerDown,
onScrollChange,
+ children,
+ validateEmbeddable,
+ renderEmbeddable,
} = props;
const canvasActions = props.UIOptions?.canvasActions;
+ // FIXME normalize/set defaults in parent component so that the memo resolver
+ // compares the same values
const UIOptions: AppProps["UIOptions"] = {
...props.UIOptions,
canvasActions: {
@@ -83,17 +90,15 @@ const ExcalidrawBase = (props: ExcalidrawProps) => {
}, []);
return (
-
- jotaiStore} scope={jotaiScope}>
+ jotaiStore} scope={jotaiScope}>
+
{
onLinkOpen={onLinkOpen}
onPointerDown={onPointerDown}
onScrollChange={onScrollChange}
- renderSidebar={renderSidebar}
- />
-
-
+ validateEmbeddable={validateEmbeddable}
+ renderEmbeddable={renderEmbeddable}
+ >
+ {children}
+
+
+
);
};
@@ -125,6 +133,11 @@ const areEqual = (
prevProps: PublicExcalidrawProps,
nextProps: PublicExcalidrawProps,
) => {
+ // short-circuit early
+ if (prevProps.children !== nextProps.children) {
+ return false;
+ }
+
const {
initialData: prevInitialData,
UIOptions: prevUIOptions = {},
@@ -153,7 +166,7 @@ const areEqual = (
const canvasOptionKeys = Object.keys(
prevUIOptions.canvasActions!,
) as (keyof Partial
)[];
- canvasOptionKeys.every((key) => {
+ return canvasOptionKeys.every((key) => {
if (
key === "export" &&
prevUIOptions?.canvasActions?.export &&
@@ -170,16 +183,10 @@ const areEqual = (
);
});
}
- return true;
+ return prevUIOptions[key] === nextUIOptions[key];
});
- const prevKeys = Object.keys(prevProps) as (keyof typeof prev)[];
- const nextKeys = Object.keys(nextProps) as (keyof typeof next)[];
- return (
- isUIOptionsSame &&
- prevKeys.length === nextKeys.length &&
- prevKeys.every((key) => prev[key] === next[key])
- );
+ return isUIOptionsSame && isShallowEqual(prev, next);
};
const forwardedRefComp = forwardRef<
@@ -195,7 +202,7 @@ export {
isInvisiblySmallElement,
getNonDeletedElements,
} from "../../element";
-export { defaultLang, languages } from "../../i18n";
+export { defaultLang, useI18n, languages } from "../../i18n";
export {
restore,
restoreAppState,
@@ -236,3 +243,13 @@ export {
} from "../../utils";
export { Sidebar } from "../../components/Sidebar/Sidebar";
+export { Button } from "../../components/Button";
+export { Footer };
+export { MainMenu };
+export { useDevice } from "../../components/App";
+export { WelcomeScreen };
+export { LiveCollaborationTrigger };
+
+export { DefaultSidebar } from "../../components/DefaultSidebar";
+
+export { normalizeLink } from "../../data/url";
diff --git a/src/packages/excalidraw/package.json b/src/packages/excalidraw/package.json
index b830dc619..c449498f0 100644
--- a/src/packages/excalidraw/package.json
+++ b/src/packages/excalidraw/package.json
@@ -1,6 +1,6 @@
{
"name": "@excalidraw/excalidraw",
- "version": "0.13.0",
+ "version": "0.15.2",
"main": "main.js",
"types": "types/packages/excalidraw/index.d.ts",
"files": [
@@ -52,19 +52,23 @@
"@babel/preset-env": "7.18.6",
"@babel/preset-react": "7.18.6",
"@babel/preset-typescript": "7.18.6",
+ "@size-limit/preset-big-lib": "8.2.6",
"autoprefixer": "10.4.7",
"babel-loader": "8.2.5",
"babel-plugin-transform-class-properties": "6.24.1",
"cross-env": "7.0.3",
"css-loader": "6.7.1",
"dotenv": "16.0.1",
+ "import-meta-loader": "1.1.0",
"mini-css-extract-plugin": "2.6.1",
"postcss-loader": "7.0.1",
"sass-loader": "13.0.2",
+ "size-limit": "8.2.4",
+ "style-loader": "3.3.3",
"terser-webpack-plugin": "5.3.3",
"ts-loader": "9.3.1",
- "typescript": "4.7.4",
- "webpack": "5.73.0",
+ "typescript": "4.9.4",
+ "webpack": "5.76.0",
"webpack-bundle-analyzer": "4.5.0",
"webpack-cli": "4.10.0",
"webpack-dev-server": "4.9.3",
@@ -79,6 +83,7 @@
"pack": "yarn build:umd && yarn pack",
"start": "webpack serve --config webpack.dev-server.config.js",
"install:deps": "yarn install --frozen-lockfile && yarn --cwd ../../../",
- "build:example": "EXAMPLE=true webpack --config webpack.dev-server.config.js && yarn gen:types"
+ "build:example": "EXAMPLE=true webpack --config webpack.dev-server.config.js && yarn gen:types",
+ "size": "yarn build:umd && size-limit"
}
}
diff --git a/src/packages/excalidraw/publicPath.js b/src/packages/excalidraw/publicPath.js
index 0e1f8c3db..6cd6bb676 100644
--- a/src/packages/excalidraw/publicPath.js
+++ b/src/packages/excalidraw/publicPath.js
@@ -4,5 +4,5 @@ if (process.env.NODE_ENV !== ENV.TEST) {
/* global __webpack_public_path__:writable */
__webpack_public_path__ =
window.EXCALIDRAW_ASSET_PATH ||
- `https://unpkg.com/${process.env.PKG_NAME}@${process.env.PKG_VERSION}/dist/`;
+ `https://unpkg.com/${process.env.VITE_PKG_NAME}@${process.env.VITE_PKG_VERSION}/dist/`;
}
diff --git a/src/packages/excalidraw/webpack.dev.config.js b/src/packages/excalidraw/webpack.dev.config.js
index 9e8180f5f..281307388 100644
--- a/src/packages/excalidraw/webpack.dev.config.js
+++ b/src/packages/excalidraw/webpack.dev.config.js
@@ -44,8 +44,12 @@ module.exports = {
},
{
test: /\.(ts|tsx|js|jsx|mjs)$/,
- exclude: /node_modules\/(?!browser-fs-access)/,
+ exclude:
+ /node_modules\/(?!(browser-fs-access|canvas-roundrect-polyfill))/,
use: [
+ {
+ loader: "import-meta-loader",
+ },
{
loader: "ts-loader",
options: {
diff --git a/src/packages/excalidraw/webpack.prod.config.js b/src/packages/excalidraw/webpack.prod.config.js
index 0450d36fa..c9f8d56a5 100644
--- a/src/packages/excalidraw/webpack.prod.config.js
+++ b/src/packages/excalidraw/webpack.prod.config.js
@@ -46,8 +46,13 @@ module.exports = {
},
{
test: /\.(ts|tsx|js|jsx|mjs)$/,
- exclude: /node_modules\/(?!browser-fs-access)/,
+ exclude:
+ /node_modules\/(?!(browser-fs-access|canvas-roundrect-polyfill))/,
+
use: [
+ {
+ loader: "import-meta-loader",
+ },
{
loader: "ts-loader",
options: {
diff --git a/src/packages/excalidraw/yarn.lock b/src/packages/excalidraw/yarn.lock
index ecd10278f..789571d87 100644
--- a/src/packages/excalidraw/yarn.lock
+++ b/src/packages/excalidraw/yarn.lock
@@ -1027,7 +1027,7 @@
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/resolve-uri@^3.0.3":
+"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3":
version "3.1.0"
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
@@ -1045,11 +1045,27 @@
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/source-map@^0.3.3":
+ version "0.3.5"
+ resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91"
+ integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.0"
+ "@jridgewell/trace-mapping" "^0.3.9"
+
+"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
+"@jridgewell/trace-mapping@^0.3.17":
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
+ integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
+ dependencies:
+ "@jridgewell/resolve-uri" "3.1.0"
+ "@jridgewell/sourcemap-codec" "1.4.14"
+
"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9":
version "0.3.14"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
@@ -1063,11 +1079,72 @@
resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
+"@nodelib/fs.scandir@2.1.5":
+ version "2.1.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
+ integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
+ dependencies:
+ "@nodelib/fs.stat" "2.0.5"
+ run-parallel "^1.1.9"
+
+"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+ version "2.0.5"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
+ integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
+
+"@nodelib/fs.walk@^1.2.3":
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
+ integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
+ dependencies:
+ "@nodelib/fs.scandir" "2.1.5"
+ fastq "^1.6.0"
+
"@polka/url@^1.0.0-next.9":
version "1.0.0-next.11"
resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
+"@sitespeed.io/tracium@^0.3.3":
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@sitespeed.io/tracium/-/tracium-0.3.3.tgz#b497a4a8d5837db1fd9e3053c99b78f6c0e1f53b"
+ integrity sha512-dNZafjM93Y+F+sfwTO5gTpsGXlnc/0Q+c2+62ViqP3gkMWvHEMSKkaEHgVJLcLg3i/g19GSIPziiKpgyne07Bw==
+ dependencies:
+ debug "^4.1.1"
+
+"@size-limit/file@8.2.6":
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/@size-limit/file/-/file-8.2.6.tgz#0e17045a0fa8009fc787c85e3c09f611316f908c"
+ integrity sha512-B7ayjxiJsbtXdIIWazJkB5gezi5WBMecdHTFPMDhI3NwEML1RVvUjAkrb1mPAAkIpt2LVHPnhdCUHjqDdjugwg==
+ dependencies:
+ semver "7.5.3"
+
+"@size-limit/preset-big-lib@8.2.6":
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/@size-limit/preset-big-lib/-/preset-big-lib-8.2.6.tgz#fbff51e7a03fc36b6b3d9103cbe5b3909e35a83e"
+ integrity sha512-63a+yos0QNMVCfx1OWnxBrdQVTlBVGzW5fDXwpWq/hKfP3B89XXHYGeL2Z2f8IXSVeGkAHXnDcTZyIPRaXffVg==
+ dependencies:
+ "@size-limit/file" "8.2.6"
+ "@size-limit/time" "8.2.6"
+ "@size-limit/webpack" "8.2.6"
+ size-limit "8.2.6"
+
+"@size-limit/time@8.2.6":
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/@size-limit/time/-/time-8.2.6.tgz#5d1912bcfc6437f6f59804737ad0538b25c207ed"
+ integrity sha512-fUEPvz7Uq6+oUQxSYbNlJt3tTgQBl1VY21USi/B7ebdnVKLnUx1JyPI9v7imN6XEkB2VpJtnYgjFeLgNrirzMA==
+ dependencies:
+ estimo "^2.3.6"
+ react "^17.0.2"
+
+"@size-limit/webpack@8.2.6":
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/@size-limit/webpack/-/webpack-8.2.6.tgz#3a3c98293b80f7c5fb6e8499199ae6f94f05b463"
+ integrity sha512-y2sB66m5sJxIjZ8SEAzpWbiw3/+bnQHDHfk9cSbV5ChKklq02AlYg8BS5KxGWmMpdyUo4TzpjSCP9oEudY+hxQ==
+ dependencies:
+ nanoid "^3.3.6"
+ webpack "^5.88.0"
+
"@types/body-parser@*":
version "1.19.2"
resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
@@ -1119,6 +1196,11 @@
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+"@types/estree@^1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
+ integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
+
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
version "4.17.27"
resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.27.tgz#7a776191e47295d2a05962ecbb3a4ce97e38b401"
@@ -1219,6 +1301,13 @@
dependencies:
"@types/node" "*"
+"@types/yauzl@^2.9.1":
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599"
+ integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==
+ dependencies:
+ "@types/node" "*"
+
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
@@ -1227,21 +1316,44 @@
"@webassemblyjs/helper-numbers" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+"@webassemblyjs/ast@1.11.6", "@webassemblyjs/ast@^1.11.5":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.6.tgz#db046555d3c413f8966ca50a95176a0e2c642e24"
+ integrity sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.6"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+
"@webassemblyjs/floating-point-hex-parser@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
+"@webassemblyjs/floating-point-hex-parser@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431"
+ integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
+
"@webassemblyjs/helper-api-error@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
+"@webassemblyjs/helper-api-error@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768"
+ integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
+
"@webassemblyjs/helper-buffer@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
+"@webassemblyjs/helper-buffer@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz#b66d73c43e296fd5e88006f18524feb0f2c7c093"
+ integrity sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==
+
"@webassemblyjs/helper-numbers@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
@@ -1251,11 +1363,25 @@
"@webassemblyjs/helper-api-error" "1.11.1"
"@xtuc/long" "4.2.2"
+"@webassemblyjs/helper-numbers@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5"
+ integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.6"
+ "@webassemblyjs/helper-api-error" "1.11.6"
+ "@xtuc/long" "4.2.2"
+
"@webassemblyjs/helper-wasm-bytecode@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
+"@webassemblyjs/helper-wasm-bytecode@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9"
+ integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
+
"@webassemblyjs/helper-wasm-section@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
@@ -1266,6 +1392,16 @@
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/wasm-gen" "1.11.1"
+"@webassemblyjs/helper-wasm-section@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz#ff97f3863c55ee7f580fd5c41a381e9def4aa577"
+ integrity sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==
+ 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"
+
"@webassemblyjs/ieee754@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
@@ -1273,6 +1409,13 @@
dependencies:
"@xtuc/ieee754" "^1.2.0"
+"@webassemblyjs/ieee754@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a"
+ integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
"@webassemblyjs/leb128@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
@@ -1280,11 +1423,23 @@
dependencies:
"@xtuc/long" "4.2.2"
+"@webassemblyjs/leb128@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7"
+ integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
"@webassemblyjs/utf8@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
+"@webassemblyjs/utf8@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a"
+ integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
+
"@webassemblyjs/wasm-edit@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
@@ -1299,6 +1454,20 @@
"@webassemblyjs/wasm-parser" "1.11.1"
"@webassemblyjs/wast-printer" "1.11.1"
+"@webassemblyjs/wasm-edit@^1.11.5":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz#c72fa8220524c9b416249f3d94c2958dfe70ceab"
+ integrity sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==
+ 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"
+
"@webassemblyjs/wasm-gen@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
@@ -1310,6 +1479,17 @@
"@webassemblyjs/leb128" "1.11.1"
"@webassemblyjs/utf8" "1.11.1"
+"@webassemblyjs/wasm-gen@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz#fb5283e0e8b4551cc4e9c3c0d7184a65faf7c268"
+ integrity sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==
+ 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"
+
"@webassemblyjs/wasm-opt@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
@@ -1320,6 +1500,16 @@
"@webassemblyjs/wasm-gen" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
+"@webassemblyjs/wasm-opt@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz#d9a22d651248422ca498b09aa3232a81041487c2"
+ integrity sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.6"
+ "@webassemblyjs/helper-buffer" "1.11.6"
+ "@webassemblyjs/wasm-gen" "1.11.6"
+ "@webassemblyjs/wasm-parser" "1.11.6"
+
"@webassemblyjs/wasm-parser@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
@@ -1332,6 +1522,18 @@
"@webassemblyjs/leb128" "1.11.1"
"@webassemblyjs/utf8" "1.11.1"
+"@webassemblyjs/wasm-parser@1.11.6", "@webassemblyjs/wasm-parser@^1.11.5":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz#bb85378c527df824004812bbdb784eea539174a1"
+ integrity sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==
+ 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"
+
"@webassemblyjs/wast-printer@1.11.1":
version "1.11.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
@@ -1340,6 +1542,14 @@
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
+"@webassemblyjs/wast-printer@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz#a7bf8dd7e362aeb1668ff43f35cb849f188eff20"
+ integrity sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==
+ dependencies:
+ "@webassemblyjs/ast" "1.11.6"
+ "@xtuc/long" "4.2.2"
+
"@webpack-cli/configtest@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5"
@@ -1388,15 +1598,32 @@ acorn-import-assertions@^1.7.6:
resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.7.6.tgz#580e3ffcae6770eebeec76c3b9723201e9d01f78"
integrity sha512-FlVvVFA1TX6l3lp8VjDnYYq7R1nyW6x3svAt4nDgrWQ9SBaSh9CnbwgSUTasgfNfOG5HlM1ehugCvM+hjo56LA==
+acorn-import-assertions@^1.9.0:
+ version "1.9.0"
+ resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac"
+ integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==
+
acorn-walk@^8.0.0:
version "8.0.2"
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3"
integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A==
-acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0:
- version "8.7.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
- integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
+acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
+acorn@^8.8.2:
+ version "8.10.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
+ integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
ajv-formats@^2.1.1:
version "2.1.1"
@@ -1484,6 +1711,11 @@ array-flatten@^2.1.2:
resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
+array-union@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
+ integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
+
autoprefixer@10.4.7:
version "10.4.7"
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.7.tgz#1db8d195f41a52ca5069b7593be167618edbbedf"
@@ -1641,6 +1873,11 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
+base64-js@^1.3.1:
+ version "1.5.1"
+ resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
+ integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -1656,6 +1893,15 @@ binary-extensions@^2.0.0:
resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
+bl@^4.0.3:
+ version "4.1.0"
+ resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a"
+ integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
+ dependencies:
+ buffer "^5.5.0"
+ inherits "^2.0.4"
+ readable-stream "^3.4.0"
+
body-parser@1.20.0:
version "1.20.0"
resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
@@ -1692,7 +1938,7 @@ brace-expansion@^1.1.7:
balanced-match "^1.0.0"
concat-map "0.0.1"
-braces@^3.0.1, braces@~3.0.2:
+braces@^3.0.1, braces@^3.0.2, braces@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
@@ -1709,11 +1955,29 @@ browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^
node-releases "^2.0.5"
update-browserslist-db "^1.0.4"
+buffer-crc32@~0.2.3:
+ version "0.2.13"
+ resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
+ integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
+
buffer-from@^1.0.0:
version "1.1.2"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
+buffer@^5.2.1, buffer@^5.5.0:
+ version "5.7.1"
+ resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
+ integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
+ dependencies:
+ base64-js "^1.3.1"
+ ieee754 "^1.1.13"
+
+bytes-iec@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/bytes-iec/-/bytes-iec-3.1.1.tgz#94cd36bf95c2c22a82002c247df8772d1d591083"
+ integrity sha512-fey6+4jDK7TFtFg/klGSvNKJctyU7n2aQdnM+CO0ruLPbqqMOM8Tio0Pc+deqUeVKX1tL5DQep1zQ7+37aTAsA==
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
@@ -1790,6 +2054,11 @@ chokidar@^3.5.3:
optionalDependencies:
fsevents "~2.3.2"
+chownr@^1.1.1:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b"
+ integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==
+
chrome-trace-event@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4"
@@ -1845,6 +2114,11 @@ commander@^7.0.0, commander@^7.2.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+commander@^9.1.0:
+ version "9.5.0"
+ resolved "https://registry.yarnpkg.com/commander/-/commander-9.5.0.tgz#bc08d1eb5cedf7ccb797a96199d41c7bc3e60d30"
+ integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
@@ -1945,6 +2219,13 @@ cross-env@7.0.3:
dependencies:
cross-spawn "^7.0.1"
+cross-fetch@3.1.5:
+ version "3.1.5"
+ resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f"
+ integrity sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==
+ dependencies:
+ node-fetch "2.6.7"
+
cross-spawn@^7.0.1, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -1980,6 +2261,13 @@ debug@2.6.9, debug@^2.6.8:
dependencies:
ms "2.0.0"
+debug@4, debug@4.3.4:
+ version "4.3.4"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
+ integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
+ dependencies:
+ ms "2.1.2"
+
debug@^4.1.0, debug@^4.1.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee"
@@ -2026,15 +2314,27 @@ detect-node@^2.0.4:
resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
+devtools-protocol@0.0.981744:
+ version "0.0.981744"
+ resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.981744.tgz#9960da0370284577d46c28979a0b32651022bacf"
+ integrity sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==
+
+dir-glob@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
+ integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
+ dependencies:
+ path-type "^4.0.0"
+
dns-equal@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
dns-packet@^5.2.2:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.3.1.tgz#eb94413789daec0f0ebe2fcc230bdc9d7c91b43d"
- integrity sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==
+ version "5.4.0"
+ resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
+ integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
dependencies:
"@leichtgewicht/ip-codec" "^2.0.1"
@@ -2068,10 +2368,25 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
-enhanced-resolve@^5.0.0, enhanced-resolve@^5.9.3:
- version "5.10.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
- integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
+end-of-stream@^1.1.0, end-of-stream@^1.4.1:
+ version "1.4.4"
+ resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
+ integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
+ dependencies:
+ once "^1.4.0"
+
+enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0:
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
+ integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
+enhanced-resolve@^5.15.0:
+ version "5.15.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz#1af946c7d93603eb88e9896cee4904dc012e9c35"
+ integrity sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -2093,6 +2408,11 @@ es-module-lexer@^0.9.0:
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-module-lexer@^1.2.1:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.3.0.tgz#6be9c9e0b4543a60cd166ff6f8b4e9dae0b0c16f"
+ integrity sha512-vZK7T0N2CBmBOixhmjdqx2gWVbFZ4DXZ/NyRMZVlJXPa7CyFS+/a4QQsDGDQy9ZfEzxFuNEsMLeQJnKP2p5/JA==
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -2123,6 +2443,17 @@ esrecurse@^4.3.0:
dependencies:
estraverse "^5.2.0"
+estimo@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/estimo/-/estimo-2.3.6.tgz#af0ea229d82a642e89570616d4349b267642fd00"
+ integrity sha512-aPd3VTQAL1TyDyhFfn6fqBTJ9WvbRZVN4Z29Buk6+P6xsI0DuF5Mh3dGv6kYCUxWnZkB4Jt3aYglUxOtuwtxoA==
+ dependencies:
+ "@sitespeed.io/tracium" "^0.3.3"
+ commander "^9.1.0"
+ find-chrome-bin "0.1.0"
+ nanoid "^3.3.2"
+ puppeteer-core "^13.5.1"
+
estraverse@^4.1.1:
version "4.3.0"
resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
@@ -2205,11 +2536,33 @@ express@^4.17.3:
utils-merge "1.0.1"
vary "~1.1.2"
+extract-zip@2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
+ integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
+ dependencies:
+ debug "^4.1.1"
+ get-stream "^5.1.0"
+ yauzl "^2.10.0"
+ optionalDependencies:
+ "@types/yauzl" "^2.9.1"
+
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
+fast-glob@^3.2.9:
+ version "3.2.12"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
+ integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
+ 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"
+
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
@@ -2220,6 +2573,13 @@ fastest-levenshtein@^1.0.12:
resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2"
integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==
+fastq@^1.6.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
+ dependencies:
+ reusify "^1.0.4"
+
faye-websocket@^0.11.3:
version "0.11.4"
resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
@@ -2227,6 +2587,13 @@ faye-websocket@^0.11.3:
dependencies:
websocket-driver ">=0.5.1"
+fd-slicer@~1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
+ integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
+ dependencies:
+ pend "~1.2.0"
+
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -2256,6 +2623,11 @@ find-cache-dir@^3.3.1:
make-dir "^3.0.2"
pkg-dir "^4.1.0"
+find-chrome-bin@0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/find-chrome-bin/-/find-chrome-bin-0.1.0.tgz#9fa3e6f86c275762c6d8be9da9af71e6fef05373"
+ integrity sha512-XoFZwaEn1R3pE6zNG8kH64l2e093hgB9+78eEKPmJK0o1EXEou+25cEWdtu2qq4DBQPDSe90VJAWVI2Sz9pX6Q==
+
find-up@^4.0.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
@@ -2284,6 +2656,11 @@ fresh@0.5.2:
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
+fs-constants@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad"
+ integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==
+
fs-monkey@1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
@@ -2318,12 +2695,19 @@ get-intrinsic@^1.0.2:
has "^1.0.3"
has-symbols "^1.0.1"
+get-stream@^5.1.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
+ integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
+ dependencies:
+ pump "^3.0.0"
+
get-stream@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718"
integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==
-glob-parent@~5.1.2:
+glob-parent@^5.1.2, glob-parent@~5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -2357,6 +2741,18 @@ globals@^9.18.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a"
integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==
+globby@^11.1.0:
+ version "11.1.0"
+ resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
+ integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
+ 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"
+
graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
@@ -2469,6 +2865,14 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
+https-proxy-agent@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
human-signals@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
@@ -2486,6 +2890,16 @@ icss-utils@^5.0.0, icss-utils@^5.1.0:
resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+ieee754@^1.1.13:
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
+ integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
+
+ignore@^5.2.0:
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
+
import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
@@ -2502,6 +2916,11 @@ import-local@^3.0.2:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
+import-meta-loader@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/import-meta-loader/-/import-meta-loader-1.1.0.tgz#927060305f2d0f88b495f2754aa33387ca6579d7"
+ integrity sha512-f96r2o8xT+b2KVlOY4x+1KTJmJiapZlf77j1WebR8NQgMG1dpdqijjGl4i/2jMoXch2CVqcQoTMfh5BR7bR8wA==
+
indexes-of@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
@@ -2515,7 +2934,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
+inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -2672,9 +3091,9 @@ json-schema-traverse@^1.0.0:
integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
json5@^2.1.2, json5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
- integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
kind-of@^6.0.2:
version "6.0.3"
@@ -2686,6 +3105,11 @@ klona@^2.0.4, klona@^2.0.5:
resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
+lilconfig@^2.0.6, lilconfig@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52"
+ integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+
lines-and-columns@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
@@ -2697,9 +3121,9 @@ loader-runner@^4.2.0:
integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
loader-utils@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1"
- integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==
+ version "2.0.4"
+ resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
+ integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
dependencies:
big.js "^5.2.2"
emojis-list "^3.0.0"
@@ -2722,7 +3146,7 @@ lodash@^4.17.20, lodash@^4.17.4:
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-loose-envify@^1.0.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -2765,6 +3189,11 @@ merge-stream@^2.0.0:
resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
+merge2@^1.3.0, merge2@^1.4.1:
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
+ integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
+
methods@~1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
@@ -2778,6 +3207,14 @@ micromatch@^4.0.0, micromatch@^4.0.2:
braces "^3.0.1"
picomatch "^2.2.3"
+micromatch@^4.0.4:
+ version "4.0.5"
+ resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
+ integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
+ dependencies:
+ braces "^3.0.2"
+ picomatch "^2.3.1"
+
mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
@@ -2829,6 +3266,11 @@ minimatch@^3.0.4:
dependencies:
brace-expansion "^1.1.7"
+mkdirp-classic@^0.5.2:
+ version "0.5.3"
+ resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
+ integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -2857,6 +3299,18 @@ nanoid@^3.3.1:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35"
integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==
+nanoid@^3.3.2, nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
+
+nanospinner@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/nanospinner/-/nanospinner-1.1.0.tgz#d17ff621cb1784b0a206b400da88a0ef6db39b97"
+ integrity sha512-yFvNYMig4AthKYfHFl1sLj7B2nkHL4lzdig4osvl9/LdGbXwrdFRoqBS98gsEsOakr0yH+r5NZ/1Y9gdVB8trA==
+ dependencies:
+ picocolors "^1.0.0"
+
negotiator@0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb"
@@ -2872,6 +3326,13 @@ neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+node-fetch@2.6.7:
+ version "2.6.7"
+ resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad"
+ integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==
+ dependencies:
+ whatwg-url "^5.0.0"
+
node-forge@^1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
@@ -2899,6 +3360,11 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
+object-assign@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
+ integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+
object-inspect@^1.9.0:
version "1.12.0"
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0"
@@ -2936,7 +3402,7 @@ on-headers@~1.0.2:
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-once@^1.3.0:
+once@^1.3.0, once@^1.3.1, once@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
@@ -3043,6 +3509,11 @@ path-type@^4.0.0:
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+pend@~1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
+ integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
+
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -3053,7 +3524,12 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3:
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972"
integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
+picomatch@^2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
+ integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+
+pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -3126,6 +3602,11 @@ process-nextick-args@~2.0.0:
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
+progress@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
+ integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
+
proxy-addr@~2.0.7:
version "2.0.7"
resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
@@ -3134,11 +3615,42 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
+proxy-from-env@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+ integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
+pump@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
+ integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
+ dependencies:
+ end-of-stream "^1.1.0"
+ once "^1.3.1"
+
punycode@^2.1.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+puppeteer-core@^13.5.1:
+ version "13.7.0"
+ resolved "https://registry.yarnpkg.com/puppeteer-core/-/puppeteer-core-13.7.0.tgz#3344bee3994163f49120a55ddcd144a40575ba5b"
+ integrity sha512-rXja4vcnAzFAP1OVLq/5dWNfwBGuzcOARJ6qGV7oAZhnLmVRU8G5MsdeQEAOy332ZhkIOnn9jp15R89LKHyp2Q==
+ dependencies:
+ cross-fetch "3.1.5"
+ debug "4.3.4"
+ devtools-protocol "0.0.981744"
+ extract-zip "2.0.1"
+ https-proxy-agent "5.0.1"
+ pkg-dir "4.2.0"
+ progress "2.0.3"
+ proxy-from-env "1.1.0"
+ rimraf "3.0.2"
+ tar-fs "2.1.1"
+ unbzip2-stream "1.4.3"
+ ws "8.5.0"
+
qs@6.10.3:
version "6.10.3"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
@@ -3146,6 +3658,11 @@ qs@6.10.3:
dependencies:
side-channel "^1.0.4"
+queue-microtask@^1.2.2:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
+ integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -3168,6 +3685,14 @@ raw-body@2.5.1:
iconv-lite "0.4.24"
unpipe "1.0.0"
+react@^17.0.2:
+ version "17.0.2"
+ resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037"
+ integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==
+ dependencies:
+ loose-envify "^1.1.0"
+ object-assign "^4.1.1"
+
readable-stream@^2.0.1:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@@ -3190,6 +3715,15 @@ readable-stream@^3.0.6:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@^3.1.1, readable-stream@^3.4.0:
+ version "3.6.2"
+ resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
+ integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
+ dependencies:
+ inherits "^2.0.3"
+ string_decoder "^1.1.1"
+ util-deprecate "^1.0.1"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -3297,13 +3831,25 @@ retry@^0.13.1:
resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
-rimraf@^3.0.2:
+reusify@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
+ integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
+
+rimraf@3.0.2, rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
dependencies:
glob "^7.1.3"
+run-parallel@^1.1.9:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
+ integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
+ dependencies:
+ queue-microtask "^1.2.2"
+
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
@@ -3345,6 +3891,15 @@ schema-utils@^3.1.0, schema-utils@^3.1.1:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
+schema-utils@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe"
+ integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
schema-utils@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
@@ -3372,6 +3927,13 @@ semver@7.0.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
+semver@7.5.3:
+ version "7.5.3"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.3.tgz#161ce8c2c6b4b3bdca6caadc9fa3317a4c4fe88e"
+ integrity sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==
+ dependencies:
+ lru-cache "^6.0.0"
+
semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
@@ -3410,6 +3972,13 @@ serialize-javascript@^6.0.0:
dependencies:
randombytes "^2.1.0"
+serialize-javascript@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c"
+ integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==
+ dependencies:
+ randombytes "^2.1.0"
+
serve-index@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
@@ -3485,6 +4054,35 @@ sirv@^1.0.7:
mime "^2.3.1"
totalist "^1.0.0"
+size-limit@8.2.4:
+ version "8.2.4"
+ resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-8.2.4.tgz#0ab0df7cbc89007d544a50b451f5fb4d110694ca"
+ integrity sha512-Un16nSreD1v2CYwSorattiJcHuAWqXvg4TsGgzpjnoByqQwsSfCIEQHuaD14HNStzredR8cdsO9oGH91ibypTA==
+ dependencies:
+ bytes-iec "^3.1.1"
+ chokidar "^3.5.3"
+ globby "^11.1.0"
+ lilconfig "^2.0.6"
+ nanospinner "^1.1.0"
+ picocolors "^1.0.0"
+
+size-limit@8.2.6:
+ version "8.2.6"
+ resolved "https://registry.yarnpkg.com/size-limit/-/size-limit-8.2.6.tgz#e41dbc74a4d7fc13be72551b6ef31ea50007d18d"
+ integrity sha512-zpznim/tX/NegjoQuRKgWTF4XiB0cn2qt90uJzxYNTFAqexk4b94DOAkBD3TwhC6c3kw2r0KcnA5upziVMZqDg==
+ dependencies:
+ bytes-iec "^3.1.1"
+ chokidar "^3.5.3"
+ globby "^11.1.0"
+ lilconfig "^2.1.0"
+ nanospinner "^1.1.0"
+ picocolors "^1.0.0"
+
+slash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
+ integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+
sockjs@^0.3.24:
version "0.3.24"
resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
@@ -3571,6 +4169,11 @@ strip-final-newline@^2.0.0:
resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
+style-loader@3.3.3:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff"
+ integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==
+
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
@@ -3602,6 +4205,27 @@ tapable@^2.1.1, tapable@^2.2.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
+tar-fs@2.1.1:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784"
+ integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==
+ dependencies:
+ chownr "^1.1.1"
+ mkdirp-classic "^0.5.2"
+ pump "^3.0.0"
+ tar-stream "^2.1.4"
+
+tar-stream@^2.1.4:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287"
+ integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==
+ 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"
+
terser-webpack-plugin@5.3.3, terser-webpack-plugin@^5.1.3:
version "5.3.3"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90"
@@ -3613,6 +4237,27 @@ terser-webpack-plugin@5.3.3, terser-webpack-plugin@^5.1.3:
serialize-javascript "^6.0.0"
terser "^5.7.2"
+terser-webpack-plugin@^5.3.7:
+ version "5.3.9"
+ resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz#832536999c51b46d468067f9e37662a3b96adfe1"
+ integrity sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==
+ 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"
+
+terser@^5.16.8:
+ version "5.19.1"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.1.tgz#dbd7231f224a9e2401d0f0959542ed74d76d340b"
+ integrity sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
terser@^5.7.2:
version "5.14.2"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10"
@@ -3623,6 +4268,11 @@ terser@^5.7.2:
commander "^2.20.0"
source-map-support "~0.5.20"
+through@^2.3.8:
+ version "2.3.8"
+ resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
+ integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
+
thunky@^1.0.2:
version "1.1.0"
resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
@@ -3655,6 +4305,11 @@ totalist@^1.0.0:
resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df"
integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g==
+tr46@~0.0.3:
+ version "0.0.3"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a"
+ integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==
+
ts-loader@9.3.1:
version "9.3.1"
resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4"
@@ -3678,10 +4333,18 @@ type-is@~1.6.18:
media-typer "0.3.0"
mime-types "~2.1.24"
-typescript@4.7.4:
- version "4.7.4"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
- integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
+typescript@4.9.4:
+ version "4.9.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
+ integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==
+
+unbzip2-stream@1.4.3:
+ version "1.4.3"
+ resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7"
+ integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==
+ dependencies:
+ buffer "^5.2.1"
+ through "^2.3.8"
unicode-canonical-property-names-ecmascript@^2.0.0:
version "2.0.0"
@@ -3751,10 +4414,10 @@ vary@~1.1.2:
resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
-watchpack@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
- integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
+watchpack@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
+ integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -3766,6 +4429,11 @@ wbuf@^1.1.0, wbuf@^1.7.3:
dependencies:
minimalistic-assert "^1.0.0"
+webidl-conversions@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
+ integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+
webpack-bundle-analyzer@4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.5.0.tgz#1b0eea2947e73528754a6f9af3e91b2b6e0f79d5"
@@ -3858,21 +4526,21 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@5.73.0:
- version "5.73.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38"
- integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==
+webpack@5.76.0:
+ version "5.76.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c"
+ integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
- acorn "^8.4.1"
+ acorn "^8.7.1"
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.9.3"
+ enhanced-resolve "^5.10.0"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
@@ -3885,7 +4553,37 @@ webpack@5.73.0:
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
- watchpack "^2.3.1"
+ watchpack "^2.4.0"
+ webpack-sources "^3.2.3"
+
+webpack@^5.88.0:
+ version "5.88.2"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.88.2.tgz#f62b4b842f1c6ff580f3fcb2ed4f0b579f4c210e"
+ integrity sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==
+ 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"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
@@ -3902,6 +4600,14 @@ websocket-extensions@>=0.1.1:
resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+whatwg-url@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d"
+ integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==
+ dependencies:
+ tr46 "~0.0.3"
+ webidl-conversions "^3.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
@@ -3919,6 +4625,11 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
+ws@8.5.0:
+ version "8.5.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f"
+ integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==
+
ws@^7.3.1:
version "7.4.6"
resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"
@@ -3938,3 +4649,11 @@ yaml@^1.10.0:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
+
+yauzl@^2.10.0:
+ version "2.10.0"
+ resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
+ integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
+ dependencies:
+ buffer-crc32 "~0.2.3"
+ fd-slicer "~1.1.0"
diff --git a/src/packages/utils.ts b/src/packages/utils.ts
index d81995080..8e55a1a05 100644
--- a/src/packages/utils.ts
+++ b/src/packages/utils.ts
@@ -5,7 +5,6 @@ import {
import { getDefaultAppState } from "../appState";
import { AppState, BinaryFiles } from "../types";
import { ExcalidrawElement, NonDeleted } from "../element/types";
-import { getNonDeletedElements } from "../element";
import { restore } from "../data/restore";
import { MIME_TYPES } from "../constants";
import { encodePngMetadata } from "../data/image";
@@ -15,6 +14,24 @@ import {
copyTextToSystemClipboard,
copyToClipboard,
} from "../clipboard";
+import Scene from "../scene/Scene";
+import { duplicateElements } from "../element/newElement";
+
+// getContainerElement and getBoundTextElement and potentially other helpers
+// depend on `Scene` which will not be available when these pure utils are
+// called outside initialized Excalidraw editor instance or even if called
+// from inside Excalidraw if the elements were never cached by Scene (e.g.
+// for library elements).
+//
+// As such, before passing the elements down, we need to initialize a custom
+// Scene instance and assign them to it.
+//
+// FIXME This is a super hacky workaround and we'll need to rewrite this soon.
+const passElementsSafely = (elements: readonly ExcalidrawElement[]) => {
+ const scene = new Scene();
+ scene.replaceAllElements(duplicateElements(elements));
+ return scene.getNonDeletedElements();
+};
export { MIME_TYPES };
@@ -46,7 +63,7 @@ export const exportToCanvas = ({
);
const { exportBackground, viewBackgroundColor } = restoredAppState;
return _exportToCanvas(
- getNonDeletedElements(restoredElements),
+ passElementsSafely(restoredElements),
{ ...restoredAppState, offsetTop: 0, offsetLeft: 0, width: 0, height: 0 },
files || {},
{ exportBackground, exportPadding, viewBackgroundColor },
@@ -62,7 +79,11 @@ export const exportToCanvas = ({
const max = Math.max(width, height);
- const scale = maxWidthOrHeight / max;
+ // if content is less then maxWidthOrHeight, fallback on supplied scale
+ const scale =
+ maxWidthOrHeight < max
+ ? maxWidthOrHeight / max
+ : appState?.exportScale ?? 1;
canvas.width = width * scale;
canvas.height = height * scale;
@@ -114,8 +135,10 @@ export const exportToBlob = async (
};
}
- const canvas = await exportToCanvas(opts);
-
+ const canvas = await exportToCanvas({
+ ...opts,
+ elements: passElementsSafely(opts.elements),
+ });
quality = quality ? quality : /image\/jpe?g/.test(mimeType) ? 0.92 : 0.8;
return new Promise((resolve, reject) => {
@@ -132,6 +155,9 @@ export const exportToBlob = async (
blob = await encodePngMetadata({
blob,
metadata: serializeAsJSON(
+ // NOTE as long as we're using the Scene hack, we need to ensure
+ // we pass the original, uncloned elements when serializing
+ // so that we keep ids stable
opts.elements,
opts.appState,
opts.files || {},
@@ -152,21 +178,35 @@ export const exportToSvg = async ({
appState = getDefaultAppState(),
files = {},
exportPadding,
+ renderEmbeddables,
}: Omit & {
exportPadding?: number;
+ renderEmbeddables?: boolean;
}): Promise => {
const { elements: restoredElements, appState: restoredAppState } = restore(
{ elements, appState },
null,
null,
);
+
+ const exportAppState = {
+ ...restoredAppState,
+ exportPadding,
+ };
+
return _exportToSvg(
- getNonDeletedElements(restoredElements),
- {
- ...restoredAppState,
- exportPadding,
- },
+ passElementsSafely(restoredElements),
+ exportAppState,
files,
+ {
+ renderEmbeddables,
+ // NOTE as long as we're using the Scene hack, we need to ensure
+ // we pass the original, uncloned elements when serializing
+ // so that we keep ids stable. Hence adding the serializeAsJSON helper
+ // support into the downstream exportToSvg function.
+ serializeAsJSON: () =>
+ serializeAsJSON(restoredElements, exportAppState, files || {}, "local"),
+ },
);
};
@@ -183,15 +223,7 @@ export const exportToClipboard = async (
} else if (opts.type === "png") {
await copyBlobToClipboardAsPng(exportToBlob(opts));
} else if (opts.type === "json") {
- const appState = {
- offsetTop: 0,
- offsetLeft: 0,
- width: 0,
- height: 0,
- ...getDefaultAppState(),
- ...opts.appState,
- };
- await copyToClipboard(opts.elements, appState, opts.files);
+ await copyToClipboard(opts.elements, opts.files);
} else {
throw new Error("Invalid export type");
}
diff --git a/src/packages/utils/README.md b/src/packages/utils/README.md
index 033378541..a6e4eabc2 100644
--- a/src/packages/utils/README.md
+++ b/src/packages/utils/README.md
@@ -28,7 +28,7 @@ Export an Excalidraw diagram to a [SVGElement](https://developer.mozilla.org/en-
## Usage
-Excalidraw utils is published as a UMD (Universal Module Definition). If you are using a Web bundler (for instance, Webpack), you can import it as an ES6 module:
+Excalidraw utils is published as a UMD (Universal Module Definition). If you are using a module bundler (for instance, Webpack), you can import it as an ES6 module:
```js
import { exportToSvg, exportToBlob } from "@excalidraw/utils";
diff --git a/src/packages/utils/package.json b/src/packages/utils/package.json
index b8aea2b6d..7375e8b58 100644
--- a/src/packages/utils/package.json
+++ b/src/packages/utils/package.json
@@ -48,7 +48,7 @@
"file-loader": "6.2.0",
"sass-loader": "13.0.2",
"ts-loader": "9.3.1",
- "webpack": "5.73.0",
+ "webpack": "5.76.0",
"webpack-bundle-analyzer": "4.5.0",
"webpack-cli": "4.10.0"
},
diff --git a/src/packages/utils/yarn.lock b/src/packages/utils/yarn.lock
index fd2043a0f..c5d00fd23 100644
--- a/src/packages/utils/yarn.lock
+++ b/src/packages/utils/yarn.lock
@@ -1187,10 +1187,10 @@ acorn-walk@^8.0.0:
resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.0.2.tgz#d4632bfc63fd93d0f15fd05ea0e984ffd3f5a8c3"
integrity sha512-+bpA9MJsHdZ4bgfDcpk0ozQyhhVct7rzOmO0s1IIr0AGGgKBljss8n2zp11rRP2wid5VGeh04CgeKzgat5/25A==
-acorn@^8.0.4, acorn@^8.4.1, acorn@^8.5.0:
- version "8.7.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30"
- integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==
+acorn@^8.0.4, acorn@^8.5.0, acorn@^8.7.1:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
ajv-keywords@^3.5.2:
version "3.5.2"
@@ -1383,18 +1383,7 @@ braces@^3.0.1:
dependencies:
fill-range "^7.0.1"
-browserslist@^4.14.5:
- version "4.19.3"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.19.3.tgz#29b7caad327ecf2859485f696f9604214bedd383"
- integrity sha512-XK3X4xtKJ+Txj8G5c30B4gsm71s69lqXlkYui4s6EkKxuv49qjYlY6oVd+IFJ73d4YymtM3+djvvt/R/iJwwDg==
- dependencies:
- caniuse-lite "^1.0.30001312"
- electron-to-chromium "^1.4.71"
- escalade "^3.1.1"
- node-releases "^2.0.2"
- picocolors "^1.0.0"
-
-browserslist@^4.20.2, browserslist@^4.21.2:
+browserslist@^4.14.5, browserslist@^4.20.2, browserslist@^4.21.2:
version "4.21.2"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf"
integrity sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==
@@ -1417,11 +1406,6 @@ call-bind@^1.0.0:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
-caniuse-lite@^1.0.30001312:
- version "1.0.30001312"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f"
- integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ==
-
caniuse-lite@^1.0.30001366:
version "1.0.30001367"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001367.tgz#2b97fe472e8fa29c78c5970615d7cd2ee414108a"
@@ -1601,20 +1585,15 @@ electron-to-chromium@^1.4.188:
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.195.tgz#139b2d95a42a3f17df217589723a1deac71d1473"
integrity sha512-vefjEh0sk871xNmR5whJf9TEngX+KTKS3hOHpjoMpauKkwlGwtMz1H8IaIjAT/GNnX0TbGwAdmVoXCAzXf+PPg==
-electron-to-chromium@^1.4.71:
- version "1.4.75"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.75.tgz#d1ad9bb46f2f1bf432118c2be21d27ffeae82fdd"
- integrity sha512-LxgUNeu3BVU7sXaKjUDD9xivocQLxFtq6wgERrutdY/yIOps3ODOZExK1jg8DTEg4U8TUCb5MLGeWFOYuxjF3Q==
-
emojis-list@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-enhanced-resolve@^5.0.0, enhanced-resolve@^5.9.3:
- version "5.9.3"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88"
- integrity sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==
+enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0:
+ version "5.12.0"
+ resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz#300e1c90228f5b570c4d35babf263f6da7155634"
+ integrity sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
@@ -1895,9 +1874,9 @@ json-schema-traverse@^0.4.1:
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json5@^2.1.2, json5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
- integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
kind-of@^6.0.2:
version "6.0.3"
@@ -2011,11 +1990,6 @@ neo-async@^2.6.2:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-node-releases@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01"
- integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==
-
node-releases@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
@@ -2494,10 +2468,10 @@ util-deprecate@^1.0.2:
resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
-watchpack@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.1.tgz#4200d9447b401156eeca7767ee610f8809bc9d25"
- integrity sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==
+watchpack@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
+ integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
@@ -2548,21 +2522,21 @@ webpack-sources@^3.2.3:
resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@5.73.0:
- version "5.73.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38"
- integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==
+webpack@5.76.0:
+ version "5.76.0"
+ resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.76.0.tgz#f9fb9fb8c4a7dbdcd0d56a98e56b8a942ee2692c"
+ integrity sha512-l5sOdYBDunyf72HW8dF23rFtWq/7Zgvt/9ftMof71E/yUb1YLOBmTgA2K4vQthB3kotMrSj609txVE0dnr2fjA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
- acorn "^8.4.1"
+ acorn "^8.7.1"
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.9.3"
+ enhanced-resolve "^5.10.0"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
@@ -2575,7 +2549,7 @@ webpack@5.73.0:
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
- watchpack "^2.3.1"
+ watchpack "^2.4.0"
webpack-sources "^3.2.3"
which@^2.0.1:
diff --git a/src/renderer/renderElement.ts b/src/renderer/renderElement.ts
index 0c7882cad..b320c81ac 100644
--- a/src/renderer/renderElement.ts
+++ b/src/renderer/renderElement.ts
@@ -14,6 +14,7 @@ import {
isFreeDrawElement,
isInitializedImageElement,
isArrowElement,
+ hasBoundTextElement,
} from "../element/typeChecks";
import {
getDiamondPoints,
@@ -26,26 +27,40 @@ import { RoughSVG } from "roughjs/bin/svg";
import { RoughGenerator } from "roughjs/bin/generator";
import { RenderConfig } from "../scene/types";
-import { distance, getFontString, getFontFamilyString, isRTL } from "../utils";
-import { getCornerRadius, isPathALoop } from "../math";
+import {
+ distance,
+ getFontString,
+ getFontFamilyString,
+ isRTL,
+ isTransparent,
+} from "../utils";
+import { getCornerRadius, isPathALoop, isRightAngle } from "../math";
import rough from "roughjs/bin/rough";
import { AppState, BinaryFiles, Zoom } from "../types";
import { getDefaultAppState } from "../appState";
import {
BOUND_TEXT_PADDING,
+ FRAME_STYLE,
MAX_DECIMALS_FOR_SVG_EXPORT,
MIME_TYPES,
SVG_NS,
- VERTICAL_ALIGN,
} from "../constants";
import { getStroke, StrokeOptions } from "perfect-freehand";
import {
- getApproxLineHeight,
getBoundTextElement,
- getBoundTextElementOffset,
+ getContainerCoords,
getContainerElement,
+ getLineHeightInPx,
+ getBoundTextMaxHeight,
+ getBoundTextMaxWidth,
} from "../element/textElement";
import { LinearElementEditor } from "../element/linearElementEditor";
+import {
+ createPlaceholderEmbeddableLabel,
+ getEmbedLink,
+} from "../element/embeddable";
+import { getContainingFrame } from "../frame";
+import { normalizeLink, toValidURL } from "../data/url";
// using a stronger invert (100% vs our regular 93%) and saturate
// as a temp hack to make images in dark theme look closer to original
@@ -85,12 +100,68 @@ export interface ExcalidrawElementWithCanvas {
element: ExcalidrawElement | ExcalidrawTextElement;
canvas: HTMLCanvasElement;
theme: RenderConfig["theme"];
- canvasZoom: Zoom["value"];
+ scale: number;
+ zoomValue: RenderConfig["zoom"]["value"];
canvasOffsetX: number;
canvasOffsetY: number;
boundTextElementVersion: number | null;
+ containingFrameOpacity: number;
}
+const cappedElementCanvasSize = (
+ element: NonDeletedExcalidrawElement,
+ zoom: Zoom,
+): {
+ width: number;
+ height: number;
+ scale: number;
+} => {
+ // these limits are ballpark, they depend on specific browsers and device.
+ // We've chosen lower limits to be safe. We might want to change these limits
+ // based on browser/device type, if we get reports of low quality rendering
+ // on zoom.
+ //
+ // ~ safari mobile canvas area limit
+ const AREA_LIMIT = 16777216;
+ // ~ safari width/height limit based on developer.mozilla.org.
+ const WIDTH_HEIGHT_LIMIT = 32767;
+
+ const padding = getCanvasPadding(element);
+
+ const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
+ const elementWidth =
+ isLinearElement(element) || isFreeDrawElement(element)
+ ? distance(x1, x2)
+ : element.width;
+ const elementHeight =
+ isLinearElement(element) || isFreeDrawElement(element)
+ ? distance(y1, y2)
+ : element.height;
+
+ let width = elementWidth * window.devicePixelRatio + padding * 2;
+ let height = elementHeight * window.devicePixelRatio + padding * 2;
+
+ let scale: number = zoom.value;
+
+ // rescale to ensure width and height is within limits
+ if (
+ width * scale > WIDTH_HEIGHT_LIMIT ||
+ height * scale > WIDTH_HEIGHT_LIMIT
+ ) {
+ scale = Math.min(WIDTH_HEIGHT_LIMIT / width, WIDTH_HEIGHT_LIMIT / height);
+ }
+
+ // rescale to ensure canvas area is within limits
+ if (width * height * scale * scale > AREA_LIMIT) {
+ scale = Math.sqrt(AREA_LIMIT / (width * height));
+ }
+
+ width = Math.floor(width * scale);
+ height = Math.floor(height * scale);
+
+ return { width, height, scale };
+};
+
const generateElementCanvas = (
element: NonDeletedExcalidrawElement,
zoom: Zoom,
@@ -100,44 +171,35 @@ const generateElementCanvas = (
const context = canvas.getContext("2d")!;
const padding = getCanvasPadding(element);
+ const { width, height, scale } = cappedElementCanvasSize(element, zoom);
+
+ canvas.width = width;
+ canvas.height = height;
+
let canvasOffsetX = 0;
let canvasOffsetY = 0;
if (isLinearElement(element) || isFreeDrawElement(element)) {
- const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
-
- canvas.width =
- distance(x1, x2) * window.devicePixelRatio * zoom.value +
- padding * zoom.value * 2;
- canvas.height =
- distance(y1, y2) * window.devicePixelRatio * zoom.value +
- padding * zoom.value * 2;
+ const [x1, y1] = getElementAbsoluteCoords(element);
canvasOffsetX =
element.x > x1
- ? distance(element.x, x1) * window.devicePixelRatio * zoom.value
+ ? distance(element.x, x1) * window.devicePixelRatio * scale
: 0;
canvasOffsetY =
element.y > y1
- ? distance(element.y, y1) * window.devicePixelRatio * zoom.value
+ ? distance(element.y, y1) * window.devicePixelRatio * scale
: 0;
context.translate(canvasOffsetX, canvasOffsetY);
- } else {
- canvas.width =
- element.width * window.devicePixelRatio * zoom.value +
- padding * zoom.value * 2;
- canvas.height =
- element.height * window.devicePixelRatio * zoom.value +
- padding * zoom.value * 2;
}
context.save();
- context.translate(padding * zoom.value, padding * zoom.value);
+ context.translate(padding * scale, padding * scale);
context.scale(
- window.devicePixelRatio * zoom.value,
- window.devicePixelRatio * zoom.value,
+ window.devicePixelRatio * scale,
+ window.devicePixelRatio * scale,
);
const rc = rough.canvas(canvas);
@@ -154,10 +216,12 @@ const generateElementCanvas = (
element,
canvas,
theme: renderConfig.theme,
- canvasZoom: zoom.value,
+ scale,
+ zoomValue: zoom.value,
canvasOffsetX,
canvasOffsetY,
boundTextElementVersion: getBoundTextElement(element)?.version || null,
+ containingFrameOpacity: getContainingFrame(element)?.opacity || 100,
};
};
@@ -198,16 +262,17 @@ const drawImagePlaceholder = (
size,
);
};
-
const drawElementOnCanvas = (
element: NonDeletedExcalidrawElement,
rc: RoughCanvas,
context: CanvasRenderingContext2D,
renderConfig: RenderConfig,
) => {
- context.globalAlpha = element.opacity / 100;
+ context.globalAlpha =
+ ((getContainingFrame(element)?.opacity ?? 100) * element.opacity) / 10000;
switch (element.type) {
case "rectangle":
+ case "embeddable":
case "diamond":
case "ellipse": {
context.lineJoin = "round";
@@ -277,13 +342,6 @@ const drawElementOnCanvas = (
// Canvas does not support multiline text by default
const lines = element.text.replace(/\r\n?/g, "\n").split("\n");
- const lineHeight = element.containerId
- ? getApproxLineHeight(getFontString(element))
- : element.height / lines.length;
- let verticalOffset = element.height - element.baseline;
- if (element.verticalAlign === VERTICAL_ALIGN.BOTTOM) {
- verticalOffset = getBoundTextElementOffset(element);
- }
const horizontalOffset =
element.textAlign === "center"
@@ -291,11 +349,16 @@ const drawElementOnCanvas = (
: element.textAlign === "right"
? element.width
: 0;
+ const lineHeightPx = getLineHeightInPx(
+ element.fontSize,
+ element.lineHeight,
+ );
+ const verticalOffset = element.height - element.baseline;
for (let index = 0; index < lines.length; index++) {
context.fillText(
lines[index],
horizontalOffset,
- (index + 1) * lineHeight - verticalOffset,
+ (index + 1) * lineHeightPx - verticalOffset,
);
}
context.restore();
@@ -375,13 +438,13 @@ export const generateRoughOptions = (
switch (element.type) {
case "rectangle":
+ case "embeddable":
case "diamond":
case "ellipse": {
options.fillStyle = element.fillStyle;
- options.fill =
- element.backgroundColor === "transparent"
- ? undefined
- : element.backgroundColor;
+ options.fill = isTransparent(element.backgroundColor)
+ ? undefined
+ : element.backgroundColor;
if (element.type === "ellipse") {
options.curveFitting = 1;
}
@@ -406,6 +469,26 @@ export const generateRoughOptions = (
}
};
+const modifyEmbeddableForRoughOptions = (
+ element: NonDeletedExcalidrawElement,
+ isExporting: boolean,
+) => {
+ if (
+ element.type === "embeddable" &&
+ (isExporting || !element.validated) &&
+ isTransparent(element.backgroundColor) &&
+ isTransparent(element.strokeColor)
+ ) {
+ return {
+ ...element,
+ roughness: 0,
+ backgroundColor: "#d3d3d3",
+ fillStyle: "solid",
+ } as const;
+ }
+ return element;
+};
+
/**
* Generates the element's shape and puts it into the cache.
* @param element
@@ -414,8 +497,9 @@ export const generateRoughOptions = (
const generateElementShape = (
element: NonDeletedExcalidrawElement,
generator: RoughGenerator,
+ isExporting: boolean = false,
) => {
- let shape = shapeCache.get(element);
+ let shape = isExporting ? undefined : shapeCache.get(element);
// `null` indicates no rc shape applicable for this element type
// (= do not generate anything)
@@ -424,6 +508,10 @@ const generateElementShape = (
switch (element.type) {
case "rectangle":
+ case "embeddable": {
+ // this is for rendering the stroke/bg of the embeddable, especially
+ // when the src url is not set
+
if (element.roundness) {
const w = element.width;
const h = element.height;
@@ -434,7 +522,10 @@ const generateElementShape = (
} Q ${w} ${h}, ${w - r} ${h} L ${r} ${h} Q 0 ${h}, 0 ${
h - r
} L 0 ${r} Q 0 0, ${r} 0`,
- generateRoughOptions(element, true),
+ generateRoughOptions(
+ modifyEmbeddableForRoughOptions(element, isExporting),
+ true,
+ ),
);
} else {
shape = generator.rectangle(
@@ -442,12 +533,16 @@ const generateElementShape = (
0,
element.width,
element.height,
- generateRoughOptions(element),
+ generateRoughOptions(
+ modifyEmbeddableForRoughOptions(element, isExporting),
+ false,
+ ),
);
}
setShapeForElement(element, shape);
break;
+ }
case "diamond": {
const [topX, topY, rightX, rightY, bottomX, bottomY, leftX, leftY] =
getDiamondPoints(element);
@@ -668,15 +763,17 @@ const generateElementWithCanvas = (
const prevElementWithCanvas = elementWithCanvasCache.get(element);
const shouldRegenerateBecauseZoom =
prevElementWithCanvas &&
- prevElementWithCanvas.canvasZoom !== zoom.value &&
+ prevElementWithCanvas.zoomValue !== zoom.value &&
!renderConfig?.shouldCacheIgnoreZoom;
const boundTextElementVersion = getBoundTextElement(element)?.version || null;
+ const containingFrameOpacity = getContainingFrame(element)?.opacity || 100;
if (
!prevElementWithCanvas ||
shouldRegenerateBecauseZoom ||
prevElementWithCanvas.theme !== renderConfig.theme ||
- prevElementWithCanvas.boundTextElementVersion !== boundTextElementVersion
+ prevElementWithCanvas.boundTextElementVersion !== boundTextElementVersion ||
+ prevElementWithCanvas.containingFrameOpacity !== containingFrameOpacity
) {
const elementWithCanvas = generateElementCanvas(
element,
@@ -699,7 +796,7 @@ const drawElementFromCanvas = (
) => {
const element = elementWithCanvas.element;
const padding = getCanvasPadding(element);
- const zoom = elementWithCanvas.canvasZoom;
+ const zoom = elementWithCanvas.scale;
let [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
// Free draw elements will otherwise "shuffle" as the min x and y change
@@ -713,22 +810,8 @@ const drawElementFromCanvas = (
const cx = ((x1 + x2) / 2 + renderConfig.scrollX) * window.devicePixelRatio;
const cy = ((y1 + y2) / 2 + renderConfig.scrollY) * window.devicePixelRatio;
- const _isPendingImageElement = isPendingImageElement(element, renderConfig);
-
- const scaleXFactor =
- "scale" in elementWithCanvas.element && !_isPendingImageElement
- ? elementWithCanvas.element.scale[0]
- : 1;
- const scaleYFactor =
- "scale" in elementWithCanvas.element && !_isPendingImageElement
- ? elementWithCanvas.element.scale[1]
- : 1;
-
context.save();
- context.scale(
- (1 / window.devicePixelRatio) * scaleXFactor,
- (1 / window.devicePixelRatio) * scaleYFactor,
- );
+ context.scale(1 / window.devicePixelRatio, 1 / window.devicePixelRatio);
const boundTextElement = getBoundTextElement(element);
if (isArrowElement(element) && boundTextElement) {
@@ -740,10 +823,10 @@ const drawElementFromCanvas = (
const maxDim = Math.max(distance(x1, x2), distance(y1, y2));
tempCanvas.width =
maxDim * window.devicePixelRatio * zoom +
- padding * elementWithCanvas.canvasZoom * 10;
+ padding * elementWithCanvas.scale * 10;
tempCanvas.height =
maxDim * window.devicePixelRatio * zoom +
- padding * elementWithCanvas.canvasZoom * 10;
+ padding * elementWithCanvas.scale * 10;
const offsetX = (tempCanvas.width - elementWithCanvas.canvas!.width) / 2;
const offsetY = (tempCanvas.height - elementWithCanvas.canvas!.height) / 2;
@@ -793,7 +876,7 @@ const drawElementFromCanvas = (
zoom,
);
- context.translate(cx * scaleXFactor, cy * scaleYFactor);
+ context.translate(cx, cy);
context.drawImage(
tempCanvas,
(-(x2 - x1) / 2) * window.devicePixelRatio - offsetX / zoom - padding,
@@ -802,19 +885,53 @@ const drawElementFromCanvas = (
tempCanvas.height / zoom,
);
} else {
- context.translate(cx * scaleXFactor, cy * scaleYFactor);
+ // we translate context to element center so that rotation and scale
+ // originates from the element center
+ context.translate(cx, cy);
- context.rotate(element.angle * scaleXFactor * scaleYFactor);
+ context.rotate(element.angle);
+
+ if (
+ "scale" in elementWithCanvas.element &&
+ !isPendingImageElement(element, renderConfig)
+ ) {
+ context.scale(
+ elementWithCanvas.element.scale[0],
+ elementWithCanvas.element.scale[1],
+ );
+ }
+
+ // revert afterwards we don't have account for it during drawing
+ context.translate(-cx, -cy);
context.drawImage(
elementWithCanvas.canvas!,
- (-(x2 - x1) / 2) * window.devicePixelRatio -
- (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom,
- (-(y2 - y1) / 2) * window.devicePixelRatio -
- (padding * elementWithCanvas.canvasZoom) / elementWithCanvas.canvasZoom,
- elementWithCanvas.canvas!.width / elementWithCanvas.canvasZoom,
- elementWithCanvas.canvas!.height / elementWithCanvas.canvasZoom,
+ (x1 + renderConfig.scrollX) * window.devicePixelRatio -
+ (padding * elementWithCanvas.scale) / elementWithCanvas.scale,
+ (y1 + renderConfig.scrollY) * window.devicePixelRatio -
+ (padding * elementWithCanvas.scale) / elementWithCanvas.scale,
+ elementWithCanvas.canvas!.width / elementWithCanvas.scale,
+ elementWithCanvas.canvas!.height / elementWithCanvas.scale,
);
+
+ if (
+ import.meta.env.VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX ===
+ "true" &&
+ hasBoundTextElement(element)
+ ) {
+ const textElement = getBoundTextElement(
+ element,
+ ) as ExcalidrawTextElementWithContainer;
+ const coords = getContainerCoords(element);
+ context.strokeStyle = "#c92a2a";
+ context.lineWidth = 3;
+ context.strokeRect(
+ (coords.x + renderConfig.scrollX) * window.devicePixelRatio,
+ (coords.y + renderConfig.scrollY) * window.devicePixelRatio,
+ getBoundTextMaxWidth(element) * window.devicePixelRatio,
+ getBoundTextMaxHeight(element, textElement) * window.devicePixelRatio,
+ );
+ }
}
context.restore();
@@ -831,25 +948,63 @@ export const renderElement = (
const generator = rc.generator;
switch (element.type) {
case "selection": {
- context.save();
- context.translate(
- element.x + renderConfig.scrollX,
- element.y + renderConfig.scrollY,
- );
- context.fillStyle = "rgba(0, 0, 200, 0.04)";
+ // do not render selection when exporting
+ if (!renderConfig.isExporting) {
+ context.save();
+ context.translate(
+ element.x + renderConfig.scrollX,
+ element.y + renderConfig.scrollY,
+ );
+ context.fillStyle = "rgba(0, 0, 200, 0.04)";
- // render from 0.5px offset to get 1px wide line
- // https://stackoverflow.com/questions/7530593/html5-canvas-and-line-width/7531540#7531540
- // TODO can be be improved by offseting to the negative when user selects
- // from right to left
- const offset = 0.5 / renderConfig.zoom.value;
+ // render from 0.5px offset to get 1px wide line
+ // https://stackoverflow.com/questions/7530593/html5-canvas-and-line-width/7531540#7531540
+ // TODO can be be improved by offseting to the negative when user selects
+ // from right to left
+ const offset = 0.5 / renderConfig.zoom.value;
- context.fillRect(offset, offset, element.width, element.height);
- context.lineWidth = 1 / renderConfig.zoom.value;
- context.strokeStyle = "rgb(105, 101, 219)";
- context.strokeRect(offset, offset, element.width, element.height);
+ context.fillRect(offset, offset, element.width, element.height);
+ context.lineWidth = 1 / renderConfig.zoom.value;
+ context.strokeStyle = " rgb(105, 101, 219)";
+ context.strokeRect(offset, offset, element.width, element.height);
- context.restore();
+ context.restore();
+ }
+ break;
+ }
+ case "frame": {
+ if (
+ !renderConfig.isExporting &&
+ appState.frameRendering.enabled &&
+ appState.frameRendering.outline
+ ) {
+ context.save();
+ context.translate(
+ element.x + renderConfig.scrollX,
+ element.y + renderConfig.scrollY,
+ );
+ context.fillStyle = "rgba(0, 0, 200, 0.04)";
+
+ context.lineWidth = 2 / renderConfig.zoom.value;
+ context.strokeStyle = FRAME_STYLE.strokeColor;
+
+ if (FRAME_STYLE.radius && context.roundRect) {
+ context.beginPath();
+ context.roundRect(
+ 0,
+ 0,
+ element.width,
+ element.height,
+ FRAME_STYLE.radius / renderConfig.zoom.value,
+ );
+ context.stroke();
+ context.closePath();
+ } else {
+ context.strokeRect(0, 0, element.width, element.height);
+ }
+
+ context.restore();
+ }
break;
}
case "freedraw": {
@@ -883,8 +1038,9 @@ export const renderElement = (
case "line":
case "arrow":
case "image":
- case "text": {
- generateElementShape(element, generator);
+ case "text":
+ case "embeddable": {
+ generateElementShape(element, generator, renderConfig.isExporting);
if (renderConfig.isExporting) {
const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
const cx = (x1 + x2) / 2 + renderConfig.scrollX;
@@ -905,9 +1061,6 @@ export const renderElement = (
}
context.save();
context.translate(cx, cy);
- if (element.type === "image") {
- context.scale(element.scale[0], element.scale[1]);
- }
if (shouldResetImageFilter(element, renderConfig)) {
context.filter = "none";
@@ -973,6 +1126,12 @@ export const renderElement = (
);
} else {
context.rotate(element.angle);
+
+ if (element.type === "image") {
+ // note: scale must be applied *after* rotating
+ context.scale(element.scale[0], element.scale[1]);
+ }
+
context.translate(-shiftX, -shiftY);
drawElementOnCanvas(element, rc, context, renderConfig);
}
@@ -985,7 +1144,33 @@ export const renderElement = (
element,
renderConfig,
);
+
+ const currentImageSmoothingStatus = context.imageSmoothingEnabled;
+
+ if (
+ // do not disable smoothing during zoom as blurry shapes look better
+ // on low resolution (while still zooming in) than sharp ones
+ !renderConfig?.shouldCacheIgnoreZoom &&
+ // angle is 0 -> always disable smoothing
+ (!element.angle ||
+ // or check if angle is a right angle in which case we can still
+ // disable smoothing without adversely affecting the result
+ isRightAngle(element.angle))
+ ) {
+ // Disabling smoothing makes output much sharper, especially for
+ // text. Unless for non-right angles, where the aliasing is really
+ // terrible on Chromium.
+ //
+ // Note that `context.imageSmoothingQuality="high"` has almost
+ // zero effect.
+ //
+ context.imageSmoothingEnabled = false;
+ }
+
drawElementFromCanvas(elementWithCanvas, rc, context, renderConfig);
+
+ // reset
+ context.imageSmoothingEnabled = currentImageSmoothingStatus;
}
break;
}
@@ -1012,6 +1197,23 @@ const roughSVGDrawWithPrecision = (
return rsvg.draw(pshape);
};
+const maybeWrapNodesInFrameClipPath = (
+ element: NonDeletedExcalidrawElement,
+ root: SVGElement,
+ nodes: SVGElement[],
+ exportedFrameId?: string | null,
+) => {
+ const frame = getContainingFrame(element);
+ if (frame && frame.id === exportedFrameId) {
+ const g = root.ownerDocument!.createElementNS(SVG_NS, "g");
+ g.setAttributeNS(SVG_NS, "clip-path", `url(#${frame.id})`);
+ nodes.forEach((node) => g.appendChild(node));
+ return g;
+ }
+
+ return null;
+};
+
export const renderElementToSvg = (
element: NonDeletedExcalidrawElement,
rsvg: RoughSVG,
@@ -1020,7 +1222,10 @@ export const renderElementToSvg = (
offsetX: number,
offsetY: number,
exportWithDarkMode?: boolean,
+ exportingFrameId?: string | null,
+ renderEmbeddables?: boolean,
) => {
+ const offset = { x: offsetX, y: offsetY };
const [x1, y1, x2, y2] = getElementAbsoluteCoords(element);
let cx = (x2 - x1) / 2 - (element.x - x1);
let cy = (y2 - y1) / 2 - (element.y - y1);
@@ -1048,11 +1253,14 @@ export const renderElementToSvg = (
// if the element has a link, create an anchor tag and make that the new root
if (element.link) {
const anchorTag = svgRoot.ownerDocument!.createElementNS(SVG_NS, "a");
- anchorTag.setAttribute("href", element.link);
+ anchorTag.setAttribute("href", normalizeLink(element.link));
root.appendChild(anchorTag);
root = anchorTag;
}
+ const opacity =
+ ((getContainingFrame(element)?.opacity ?? 100) * element.opacity) / 10000;
+
switch (element.type) {
case "selection": {
// Since this is used only during editing experience, which is canvas based,
@@ -1068,6 +1276,36 @@ export const renderElementToSvg = (
getShapeForElement(element)!,
MAX_DECIMALS_FOR_SVG_EXPORT,
);
+ if (opacity !== 1) {
+ node.setAttribute("stroke-opacity", `${opacity}`);
+ node.setAttribute("fill-opacity", `${opacity}`);
+ }
+ node.setAttribute("stroke-linecap", "round");
+ node.setAttribute(
+ "transform",
+ `translate(${offsetX || 0} ${
+ offsetY || 0
+ }) rotate(${degree} ${cx} ${cy})`,
+ );
+
+ const g = maybeWrapNodesInFrameClipPath(
+ element,
+ root,
+ [node],
+ exportingFrameId,
+ );
+
+ g ? root.appendChild(g) : root.appendChild(node);
+ break;
+ }
+ case "embeddable": {
+ // render placeholder rectangle
+ generateElementShape(element, generator, true);
+ const node = roughSVGDrawWithPrecision(
+ rsvg,
+ getShapeForElement(element)!,
+ MAX_DECIMALS_FOR_SVG_EXPORT,
+ );
const opacity = element.opacity / 100;
if (opacity !== 1) {
node.setAttribute("stroke-opacity", `${opacity}`);
@@ -1081,6 +1319,83 @@ export const renderElementToSvg = (
}) rotate(${degree} ${cx} ${cy})`,
);
root.appendChild(node);
+
+ const label: ExcalidrawElement =
+ createPlaceholderEmbeddableLabel(element);
+ renderElementToSvg(
+ label,
+ rsvg,
+ root,
+ files,
+ label.x + offset.x - element.x,
+ label.y + offset.y - element.y,
+ exportWithDarkMode,
+ exportingFrameId,
+ renderEmbeddables,
+ );
+
+ // render embeddable element + iframe
+ const embeddableNode = roughSVGDrawWithPrecision(
+ rsvg,
+ getShapeForElement(element)!,
+ MAX_DECIMALS_FOR_SVG_EXPORT,
+ );
+ embeddableNode.setAttribute("stroke-linecap", "round");
+ embeddableNode.setAttribute(
+ "transform",
+ `translate(${offsetX || 0} ${
+ offsetY || 0
+ }) rotate(${degree} ${cx} ${cy})`,
+ );
+ while (embeddableNode.firstChild) {
+ embeddableNode.removeChild(embeddableNode.firstChild);
+ }
+ const radius = getCornerRadius(
+ Math.min(element.width, element.height),
+ element,
+ );
+
+ const embedLink = getEmbedLink(toValidURL(element.link || ""));
+
+ // if rendering embeddables explicitly disabled or
+ // embedding documents via srcdoc (which doesn't seem to work for SVGs)
+ // replace with a link instead
+ if (renderEmbeddables === false || embedLink?.type === "document") {
+ const anchorTag = svgRoot.ownerDocument!.createElementNS(SVG_NS, "a");
+ anchorTag.setAttribute("href", normalizeLink(element.link || ""));
+ anchorTag.setAttribute("target", "_blank");
+ anchorTag.setAttribute("rel", "noopener noreferrer");
+ anchorTag.style.borderRadius = `${radius}px`;
+
+ embeddableNode.appendChild(anchorTag);
+ } else {
+ const foreignObject = svgRoot.ownerDocument!.createElementNS(
+ SVG_NS,
+ "foreignObject",
+ );
+ foreignObject.style.width = `${element.width}px`;
+ foreignObject.style.height = `${element.height}px`;
+ foreignObject.style.border = "none";
+ const div = foreignObject.ownerDocument!.createElementNS(SVG_NS, "div");
+ div.setAttribute("xmlns", "http://www.w3.org/1999/xhtml");
+ div.style.width = "100%";
+ div.style.height = "100%";
+ const iframe = div.ownerDocument!.createElement("iframe");
+ iframe.src = embedLink?.link ?? "";
+ iframe.style.width = "100%";
+ iframe.style.height = "100%";
+ iframe.style.border = "none";
+ iframe.style.borderRadius = `${radius}px`;
+ iframe.style.top = "0";
+ iframe.style.left = "0";
+ iframe.allowFullscreen = true;
+ div.appendChild(iframe);
+ foreignObject.appendChild(div);
+
+ embeddableNode.appendChild(foreignObject);
+ }
+
+ root.appendChild(embeddableNode);
break;
}
case "line":
@@ -1133,7 +1448,6 @@ export const renderElementToSvg = (
if (boundText) {
group.setAttribute("mask", `url(#mask-${element.id})`);
}
- const opacity = element.opacity / 100;
group.setAttribute("stroke-linecap", "round");
getShapeForElement(element)!.forEach((shape) => {
@@ -1161,14 +1475,24 @@ export const renderElementToSvg = (
}
group.appendChild(node);
});
- root.appendChild(group);
- root.append(maskPath);
+
+ const g = maybeWrapNodesInFrameClipPath(
+ element,
+ root,
+ [group, maskPath],
+ exportingFrameId,
+ );
+ if (g) {
+ root.appendChild(g);
+ } else {
+ root.appendChild(group);
+ root.append(maskPath);
+ }
break;
}
case "freedraw": {
generateElementShape(element, generator);
generateFreeDrawShape(element);
- const opacity = element.opacity / 100;
const shape = getShapeForElement(element);
const node = shape
? roughSVGDrawWithPrecision(rsvg, shape, MAX_DECIMALS_FOR_SVG_EXPORT)
@@ -1188,7 +1512,15 @@ export const renderElementToSvg = (
path.setAttribute("fill", element.strokeColor);
path.setAttribute("d", getFreeDrawSvgPath(element));
node.appendChild(path);
- root.appendChild(node);
+
+ const g = maybeWrapNodesInFrameClipPath(
+ element,
+ root,
+ [node],
+ exportingFrameId,
+ );
+
+ g ? root.appendChild(g) : root.appendChild(node);
break;
}
case "image": {
@@ -1224,6 +1556,7 @@ export const renderElementToSvg = (
use.setAttribute("width", `${width}`);
use.setAttribute("height", `${height}`);
+ use.setAttribute("opacity", `${opacity}`);
// We first apply `scale` transforms (horizontal/vertical mirroring)
// on the element, then apply translation and rotation
@@ -1249,13 +1582,22 @@ export const renderElementToSvg = (
}) rotate(${degree} ${cx} ${cy})`,
);
- root.appendChild(g);
+ const clipG = maybeWrapNodesInFrameClipPath(
+ element,
+ root,
+ [g],
+ exportingFrameId,
+ );
+ clipG ? root.appendChild(clipG) : root.appendChild(g);
}
break;
}
+ // frames are not rendered and only acts as a container
+ case "frame": {
+ break;
+ }
default: {
if (isTextElement(element)) {
- const opacity = element.opacity / 100;
const node = svgRoot.ownerDocument!.createElementNS(SVG_NS, "g");
if (opacity !== 1) {
node.setAttribute("stroke-opacity", `${opacity}`);
@@ -1269,8 +1611,10 @@ export const renderElementToSvg = (
}) rotate(${degree} ${cx} ${cy})`,
);
const lines = element.text.replace(/\r\n?/g, "\n").split("\n");
- const lineHeight = element.height / lines.length;
- const verticalOffset = element.height - element.baseline;
+ const lineHeightPx = getLineHeightInPx(
+ element.fontSize,
+ element.lineHeight,
+ );
const horizontalOffset =
element.textAlign === "center"
? element.width / 2
@@ -1288,16 +1632,25 @@ export const renderElementToSvg = (
const text = svgRoot.ownerDocument!.createElementNS(SVG_NS, "text");
text.textContent = lines[i];
text.setAttribute("x", `${horizontalOffset}`);
- text.setAttribute("y", `${(i + 1) * lineHeight - verticalOffset}`);
+ text.setAttribute("y", `${i * lineHeightPx}`);
text.setAttribute("font-family", getFontFamilyString(element));
text.setAttribute("font-size", `${element.fontSize}px`);
text.setAttribute("fill", element.strokeColor);
text.setAttribute("text-anchor", textAnchor);
text.setAttribute("style", "white-space: pre;");
text.setAttribute("direction", direction);
+ text.setAttribute("dominant-baseline", "text-before-edge");
node.appendChild(text);
}
- root.appendChild(node);
+
+ const g = maybeWrapNodesInFrameClipPath(
+ element,
+ root,
+ [node],
+ exportingFrameId,
+ );
+
+ g ? root.appendChild(g) : root.appendChild(node);
} else {
// @ts-ignore
throw new Error(`Unimplemented type ${element.type}`);
diff --git a/src/renderer/renderScene.ts b/src/renderer/renderScene.ts
index c8b64b47b..f8fa79ed7 100644
--- a/src/renderer/renderScene.ts
+++ b/src/renderer/renderScene.ts
@@ -10,6 +10,7 @@ import {
NonDeleted,
GroupId,
ExcalidrawBindableElement,
+ ExcalidrawFrameElement,
} from "../element/types";
import {
getElementAbsoluteCoords,
@@ -30,12 +31,13 @@ import {
import { getSelectedElements } from "../scene/selection";
import { renderElement, renderElementToSvg } from "./renderElement";
-import { getClientColors } from "../clients";
+import { getClientColor } from "../clients";
import { LinearElementEditor } from "../element/linearElementEditor";
import {
isSelectedViaGroup,
getSelectedGroupIds,
getElementsInGroup,
+ selectGroupsFromGivenElements,
} from "../groups";
import { maxBindingGap } from "../element/collision";
import {
@@ -44,24 +46,38 @@ import {
isBindingEnabled,
} from "../element/binding";
import {
+ OMIT_SIDES_FOR_FRAME,
shouldShowBoundingBox,
TransformHandles,
TransformHandleType,
} from "../element/transformHandles";
import {
viewportCoordsToSceneCoords,
- supportsEmoji,
throttleRAF,
+ isOnlyExportingSingleFrame,
} from "../utils";
import { UserIdleState } from "../types";
-import { THEME_FILTER } from "../constants";
+import { FRAME_STYLE, THEME_FILTER } from "../constants";
import {
EXTERNAL_LINK_IMG,
getLinkHandleFromCoords,
} from "../element/Hyperlink";
-import { isLinearElement } from "../element/typeChecks";
+import {
+ isEmbeddableElement,
+ isFrameElement,
+ isLinearElement,
+} from "../element/typeChecks";
+import {
+ isEmbeddableOrFrameLabel,
+ createPlaceholderEmbeddableLabel,
+} from "../element/embeddable";
+import {
+ elementOverlapsWithFrame,
+ getTargetFrame,
+ isElementInFrame,
+} from "../frame";
+import "canvas-roundrect-polyfill";
-const hasEmojiSupport = supportsEmoji();
export const DEFAULT_SPACING = 2;
const strokeRectWithRotation = (
@@ -74,6 +90,8 @@ const strokeRectWithRotation = (
cy: number,
angle: number,
fill: boolean = false,
+ /** should account for zoom */
+ radius: number = 0,
) => {
context.save();
context.translate(cx, cy);
@@ -81,7 +99,14 @@ const strokeRectWithRotation = (
if (fill) {
context.fillRect(x - cx, y - cy, width, height);
}
- context.strokeRect(x - cx, y - cy, width, height);
+ if (radius && context.roundRect) {
+ context.beginPath();
+ context.roundRect(x - cx, y - cy, width, height, radius);
+ context.stroke();
+ context.closePath();
+ } else {
+ context.strokeRect(x - cx, y - cy, width, height);
+ }
context.restore();
};
@@ -137,29 +162,57 @@ const fillCircle = (
const strokeGrid = (
context: CanvasRenderingContext2D,
gridSize: number,
- offsetX: number,
- offsetY: number,
+ scrollX: number,
+ scrollY: number,
+ zoom: Zoom,
width: number,
height: number,
) => {
+ const BOLD_LINE_FREQUENCY = 5;
+
+ enum GridLineColor {
+ Bold = "#cccccc",
+ Regular = "#e5e5e5",
+ }
+
+ const offsetX =
+ -Math.round(zoom.value / gridSize) * gridSize + (scrollX % gridSize);
+ const offsetY =
+ -Math.round(zoom.value / gridSize) * gridSize + (scrollY % gridSize);
+
+ const lineWidth = Math.min(1 / zoom.value, 1);
+
+ const spaceWidth = 1 / zoom.value;
+ const lineDash = [lineWidth * 3, spaceWidth + (lineWidth + spaceWidth)];
+
context.save();
- context.strokeStyle = "rgba(0,0,0,0.1)";
- context.beginPath();
+ context.lineWidth = lineWidth;
+
for (let x = offsetX; x < offsetX + width + gridSize * 2; x += gridSize) {
+ const isBold =
+ Math.round(x - scrollX) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
+ context.beginPath();
+ context.setLineDash(isBold ? [] : lineDash);
+ context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
context.moveTo(x, offsetY - gridSize);
context.lineTo(x, offsetY + height + gridSize * 2);
+ context.stroke();
}
for (let y = offsetY; y < offsetY + height + gridSize * 2; y += gridSize) {
+ const isBold =
+ Math.round(y - scrollY) % (BOLD_LINE_FREQUENCY * gridSize) === 0;
+ context.beginPath();
+ context.setLineDash(isBold ? [] : lineDash);
+ context.strokeStyle = isBold ? GridLineColor.Bold : GridLineColor.Regular;
context.moveTo(offsetX - gridSize, y);
context.lineTo(offsetX + width + gridSize * 2, y);
+ context.stroke();
}
- context.stroke();
context.restore();
};
const renderSingleLinearPoint = (
context: CanvasRenderingContext2D,
- appState: AppState,
renderConfig: RenderConfig,
point: Point,
radius: number,
@@ -206,14 +259,7 @@ const renderLinearPointHandles = (
const isSelected =
!!appState.editingLinearElement?.selectedPointsIndices?.includes(idx);
- renderSingleLinearPoint(
- context,
- appState,
- renderConfig,
- point,
- radius,
- isSelected,
- );
+ renderSingleLinearPoint(context, renderConfig, point, radius, isSelected);
});
//Rendering segment mid points
@@ -237,7 +283,6 @@ const renderLinearPointHandles = (
if (appState.editingLinearElement) {
renderSingleLinearPoint(
context,
- appState,
renderConfig,
segmentMidPoint,
radius,
@@ -248,7 +293,6 @@ const renderLinearPointHandles = (
highlightPoint(segmentMidPoint, context, renderConfig);
renderSingleLinearPoint(
context,
- appState,
renderConfig,
segmentMidPoint,
radius,
@@ -258,7 +302,6 @@ const renderLinearPointHandles = (
} else if (appState.editingLinearElement || points.length === 2) {
renderSingleLinearPoint(
context,
- appState,
renderConfig,
segmentMidPoint,
POINT_HANDLE_SIZE / 2,
@@ -314,6 +357,34 @@ const renderLinearElementPointHighlight = (
context.restore();
};
+const frameClip = (
+ frame: ExcalidrawFrameElement,
+ context: CanvasRenderingContext2D,
+ renderConfig: RenderConfig,
+) => {
+ context.translate(
+ frame.x + renderConfig.scrollX,
+ frame.y + renderConfig.scrollY,
+ );
+ context.beginPath();
+ if (context.roundRect && !renderConfig.isExporting) {
+ context.roundRect(
+ 0,
+ 0,
+ frame.width,
+ frame.height,
+ FRAME_STYLE.radius / renderConfig.zoom.value,
+ );
+ } else {
+ context.rect(0, 0, frame.width, frame.height);
+ }
+ context.clip();
+ context.translate(
+ -(frame.x + renderConfig.scrollX),
+ -(frame.y + renderConfig.scrollY),
+ );
+};
+
export const _renderScene = ({
elements,
appState,
@@ -335,7 +406,7 @@ export const _renderScene = ({
return { atLeastOneVisibleElement: false };
}
const {
- renderScrollbars = true,
+ renderScrollbars = false,
renderSelection = true,
renderGrid = true,
isExporting,
@@ -383,12 +454,9 @@ export const _renderScene = ({
strokeGrid(
context,
appState.gridSize,
- -Math.ceil(renderConfig.zoom.value / appState.gridSize) *
- appState.gridSize +
- (renderConfig.scrollX % appState.gridSize),
- -Math.ceil(renderConfig.zoom.value / appState.gridSize) *
- appState.gridSize +
- (renderConfig.scrollY % appState.gridSize),
+ renderConfig.scrollX,
+ renderConfig.scrollY,
+ renderConfig.zoom,
normalizedCanvasWidth / renderConfig.zoom.value,
normalizedCanvasHeight / renderConfig.zoom.value,
);
@@ -405,28 +473,124 @@ export const _renderScene = ({
}),
);
- let editingLinearElement: NonDeleted | undefined =
- undefined;
+ const groupsToBeAddedToFrame = new Set();
+
visibleElements.forEach((element) => {
- try {
- renderElement(element, rc, context, renderConfig, appState);
- // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
- // ShapeCache returns empty hence making sure that we get the
- // correct element from visible elements
- if (appState.editingLinearElement?.elementId === element.id) {
- if (element) {
- editingLinearElement =
- element as NonDeleted;
- }
- }
- if (!isExporting) {
- renderLinkIcon(element, context, appState);
- }
- } catch (error: any) {
- console.error(error);
+ if (
+ element.groupIds.length > 0 &&
+ appState.frameToHighlight &&
+ appState.selectedElementIds[element.id] &&
+ (elementOverlapsWithFrame(element, appState.frameToHighlight) ||
+ element.groupIds.find((groupId) =>
+ groupsToBeAddedToFrame.has(groupId),
+ ))
+ ) {
+ element.groupIds.forEach((groupId) =>
+ groupsToBeAddedToFrame.add(groupId),
+ );
}
});
+ let editingLinearElement: NonDeleted | undefined =
+ undefined;
+
+ visibleElements
+ .filter((el) => !isEmbeddableOrFrameLabel(el))
+ .forEach((element) => {
+ try {
+ // - when exporting the whole canvas, we DO NOT apply clipping
+ // - when we are exporting a particular frame, apply clipping
+ // if the containing frame is not selected, apply clipping
+ const frameId = element.frameId || appState.frameToHighlight?.id;
+
+ if (
+ frameId &&
+ ((renderConfig.isExporting &&
+ isOnlyExportingSingleFrame(elements)) ||
+ (!renderConfig.isExporting &&
+ appState.frameRendering.enabled &&
+ appState.frameRendering.clip))
+ ) {
+ context.save();
+
+ const frame = getTargetFrame(element, appState);
+
+ if (frame && isElementInFrame(element, elements, appState)) {
+ frameClip(frame, context, renderConfig);
+ }
+ renderElement(element, rc, context, renderConfig, appState);
+ context.restore();
+ } else {
+ renderElement(element, rc, context, renderConfig, appState);
+ }
+ // Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
+ // ShapeCache returns empty hence making sure that we get the
+ // correct element from visible elements
+ if (appState.editingLinearElement?.elementId === element.id) {
+ if (element) {
+ editingLinearElement =
+ element as NonDeleted;
+ }
+ }
+ if (!isExporting) {
+ renderLinkIcon(element, context, appState);
+ }
+ } catch (error: any) {
+ console.error(error);
+ }
+ });
+
+ // render embeddables on top
+ visibleElements
+ .filter((el) => isEmbeddableOrFrameLabel(el))
+ .forEach((element) => {
+ try {
+ const render = () => {
+ renderElement(element, rc, context, renderConfig, appState);
+
+ if (
+ isEmbeddableElement(element) &&
+ (isExporting || !element.validated) &&
+ element.width &&
+ element.height
+ ) {
+ const label = createPlaceholderEmbeddableLabel(element);
+ renderElement(label, rc, context, renderConfig, appState);
+ }
+ if (!isExporting) {
+ renderLinkIcon(element, context, appState);
+ }
+ };
+ // - when exporting the whole canvas, we DO NOT apply clipping
+ // - when we are exporting a particular frame, apply clipping
+ // if the containing frame is not selected, apply clipping
+ const frameId = element.frameId || appState.frameToHighlight?.id;
+
+ if (
+ frameId &&
+ ((renderConfig.isExporting &&
+ isOnlyExportingSingleFrame(elements)) ||
+ (!renderConfig.isExporting &&
+ appState.frameRendering.enabled &&
+ appState.frameRendering.clip))
+ ) {
+ context.save();
+
+ const frame = getTargetFrame(element, appState);
+
+ if (frame && isElementInFrame(element, elements, appState)) {
+ frameClip(frame, context, renderConfig);
+ }
+ render();
+ context.restore();
+ } else {
+ render();
+ }
+ } catch (error: any) {
+ console.error(error);
+ }
+ });
+
if (editingLinearElement) {
renderLinearPointHandles(
context,
@@ -458,7 +622,24 @@ export const _renderScene = ({
renderBindingHighlight(context, renderConfig, suggestedBinding!);
});
}
+
+ if (appState.frameToHighlight) {
+ renderFrameHighlight(context, renderConfig, appState.frameToHighlight);
+ }
+
+ if (appState.elementsToHighlight) {
+ renderElementsBoxHighlight(
+ context,
+ renderConfig,
+ appState.elementsToHighlight,
+ appState,
+ );
+ }
+
const locallySelectedElements = getSelectedElements(elements, appState);
+ const isFrameSelected = locallySelectedElements.some((element) =>
+ isFrameElement(element),
+ );
// Getting the element using LinearElementEditor during collab mismatches version - being one head of visible elements due to
// ShapeCache returns empty hence making sure that we get the
@@ -527,7 +708,7 @@ export const _renderScene = ({
selectionColors.push(
...renderConfig.remoteSelectedElementIds[element.id].map(
(socketId) => {
- const { background } = getClientColors(socketId, appState);
+ const background = getClientColor(socketId);
return background;
},
),
@@ -547,10 +728,13 @@ export const _renderScene = ({
dashed: !!renderConfig.remoteSelectedElementIds[element.id],
cx,
cy,
+ activeEmbeddable:
+ appState.activeEmbeddable?.element === element &&
+ appState.activeEmbeddable.state === "active",
});
}
return acc;
- }, [] as { angle: number; elementX1: number; elementY1: number; elementX2: number; elementY2: number; selectionColors: string[]; dashed?: boolean; cx: number; cy: number }[]);
+ }, [] as { angle: number; elementX1: number; elementY1: number; elementX2: number; elementY2: number; selectionColors: string[]; dashed?: boolean; cx: number; cy: number; activeEmbeddable: boolean }[]);
const addSelectionForGroupId = (groupId: GroupId) => {
const groupElements = getElementsInGroup(elements, groupId);
@@ -566,6 +750,7 @@ export const _renderScene = ({
dashed: true,
cx: elementX1 + (elementX2 - elementX1) / 2,
cy: elementY1 + (elementY2 - elementY1) / 2,
+ activeEmbeddable: false,
});
};
@@ -628,7 +813,9 @@ export const _renderScene = ({
0,
renderConfig.zoom,
"mouse",
- OMIT_SIDES_FOR_MULTIPLE_ELEMENTS,
+ isFrameSelected
+ ? OMIT_SIDES_FOR_FRAME
+ : OMIT_SIDES_FOR_MULTIPLE_ELEMENTS,
);
if (locallySelectedElements.some((element) => !element.locked)) {
renderTransformHandles(context, renderConfig, transformHandles, 0);
@@ -647,7 +834,7 @@ export const _renderScene = ({
x -= appState.offsetLeft;
y -= appState.offsetTop;
- const width = 9;
+ const width = 11;
const height = 14;
const isOutOfBounds =
@@ -661,15 +848,20 @@ export const _renderScene = ({
y = Math.max(y, 0);
y = Math.min(y, normalizedCanvasHeight - height);
- const { background, stroke } = getClientColors(clientId, appState);
+ const background = getClientColor(clientId);
context.save();
- context.strokeStyle = stroke;
+ context.strokeStyle = background;
context.fillStyle = background;
const userState = renderConfig.remotePointerUserStates[clientId];
- if (isOutOfBounds || userState === UserIdleState.AWAY) {
- context.globalAlpha = 0.48;
+ const isInactive =
+ isOutOfBounds ||
+ userState === UserIdleState.IDLE ||
+ userState === UserIdleState.AWAY;
+
+ if (isInactive) {
+ context.globalAlpha = 0.3;
}
if (
@@ -686,73 +878,86 @@ export const _renderScene = ({
context.beginPath();
context.arc(x, y, 15, 0, 2 * Math.PI, false);
context.lineWidth = 1;
- context.strokeStyle = stroke;
+ context.strokeStyle = background;
context.stroke();
context.closePath();
}
+ // Background (white outline) for arrow
+ context.fillStyle = oc.white;
+ context.strokeStyle = oc.white;
+ context.lineWidth = 6;
+ context.lineJoin = "round";
context.beginPath();
context.moveTo(x, y);
- context.lineTo(x + 1, y + 14);
+ context.lineTo(x + 0, y + 14);
context.lineTo(x + 4, y + 9);
- context.lineTo(x + 9, y + 10);
- context.lineTo(x, y);
- context.fill();
+ context.lineTo(x + 11, y + 8);
+ context.closePath();
context.stroke();
+ context.fill();
- const username = renderConfig.remotePointerUsernames[clientId];
-
- let idleState = "";
- if (userState === UserIdleState.AWAY) {
- idleState = hasEmojiSupport ? "⚫️" : ` (${UserIdleState.AWAY})`;
- } else if (userState === UserIdleState.IDLE) {
- idleState = hasEmojiSupport ? "💤" : ` (${UserIdleState.IDLE})`;
+ // Arrow
+ context.fillStyle = background;
+ context.strokeStyle = background;
+ context.lineWidth = 2;
+ context.lineJoin = "round";
+ context.beginPath();
+ if (isInactive) {
+ context.moveTo(x - 1, y - 1);
+ context.lineTo(x - 1, y + 15);
+ context.lineTo(x + 5, y + 10);
+ context.lineTo(x + 12, y + 9);
+ context.closePath();
+ context.fill();
+ } else {
+ context.moveTo(x, y);
+ context.lineTo(x + 0, y + 14);
+ context.lineTo(x + 4, y + 9);
+ context.lineTo(x + 11, y + 8);
+ context.closePath();
+ context.fill();
+ context.stroke();
}
- const usernameAndIdleState = `${username || ""}${
- idleState ? ` ${idleState}` : ""
- }`;
+ const username = renderConfig.remotePointerUsernames[clientId] || "";
- if (!isOutOfBounds && usernameAndIdleState) {
- const offsetX = x + width;
- const offsetY = y + height;
- const paddingHorizontal = 4;
- const paddingVertical = 4;
- const measure = context.measureText(usernameAndIdleState);
+ if (!isOutOfBounds && username) {
+ context.font = "600 12px sans-serif"; // font has to be set before context.measureText()
+
+ const offsetX = x + width / 2;
+ const offsetY = y + height + 2;
+ const paddingHorizontal = 5;
+ const paddingVertical = 3;
+ const measure = context.measureText(username);
const measureHeight =
measure.actualBoundingBoxDescent + measure.actualBoundingBoxAscent;
+ const finalHeight = Math.max(measureHeight, 12);
const boxX = offsetX - 1;
const boxY = offsetY - 1;
- const boxWidth = measure.width + 2 * paddingHorizontal + 2;
- const boxHeight = measureHeight + 2 * paddingVertical + 2;
+ const boxWidth = measure.width + 2 + paddingHorizontal * 2 + 2;
+ const boxHeight = finalHeight + 2 + paddingVertical * 2 + 2;
if (context.roundRect) {
context.beginPath();
- context.roundRect(
- boxX,
- boxY,
- boxWidth,
- boxHeight,
- 4 / renderConfig.zoom.value,
- );
+ context.roundRect(boxX, boxY, boxWidth, boxHeight, 8);
context.fillStyle = background;
context.fill();
- context.fillStyle = stroke;
+ context.strokeStyle = oc.white;
context.stroke();
} else {
- // Border
- context.fillStyle = stroke;
- context.fillRect(boxX, boxY, boxWidth, boxHeight);
- // Background
- context.fillStyle = background;
- context.fillRect(offsetX, offsetY, boxWidth - 2, boxHeight - 2);
+ roundRect(context, boxX, boxY, boxWidth, boxHeight, 8, oc.white);
}
- context.fillStyle = oc.white;
+ context.fillStyle = oc.black;
context.fillText(
- usernameAndIdleState,
- offsetX + paddingHorizontal,
- offsetY + paddingVertical + measure.actualBoundingBoxAscent,
+ username,
+ offsetX + paddingHorizontal + 1,
+ offsetY +
+ paddingVertical +
+ measure.actualBoundingBoxAscent +
+ Math.floor((finalHeight - measureHeight) / 2) +
+ 2,
);
}
@@ -887,6 +1092,7 @@ const renderSelectionBorder = (
dashed?: boolean;
cx: number;
cy: number;
+ activeEmbeddable: boolean;
},
padding = DEFAULT_SPACING * 2,
) => {
@@ -900,6 +1106,7 @@ const renderSelectionBorder = (
cx,
cy,
dashed,
+ activeEmbeddable,
} = elementProperties;
const elementWidth = elementX2 - elementX1;
const elementHeight = elementY2 - elementY1;
@@ -910,7 +1117,7 @@ const renderSelectionBorder = (
context.save();
context.translate(renderConfig.scrollX, renderConfig.scrollY);
- context.lineWidth = 1 / renderConfig.zoom.value;
+ context.lineWidth = (activeEmbeddable ? 4 : 1) / renderConfig.zoom.value;
const count = selectionColors.length;
for (let index = 0; index < count; ++index) {
@@ -971,6 +1178,8 @@ const renderBindingHighlightForBindableElement = (
case "rectangle":
case "text":
case "image":
+ case "embeddable":
+ case "frame":
strokeRectWithRotation(
context,
x1 - padding,
@@ -1008,6 +1217,83 @@ const renderBindingHighlightForBindableElement = (
}
};
+const renderFrameHighlight = (
+ context: CanvasRenderingContext2D,
+ renderConfig: RenderConfig,
+ frame: NonDeleted,
+) => {
+ const [x1, y1, x2, y2] = getElementAbsoluteCoords(frame);
+ const width = x2 - x1;
+ const height = y2 - y1;
+
+ context.strokeStyle = "rgb(0,118,255)";
+ context.lineWidth = (FRAME_STYLE.strokeWidth * 2) / renderConfig.zoom.value;
+
+ context.save();
+ context.translate(renderConfig.scrollX, renderConfig.scrollY);
+ strokeRectWithRotation(
+ context,
+ x1,
+ y1,
+ width,
+ height,
+ x1 + width / 2,
+ y1 + height / 2,
+ frame.angle,
+ false,
+ FRAME_STYLE.radius / renderConfig.zoom.value,
+ );
+ context.restore();
+};
+
+const renderElementsBoxHighlight = (
+ context: CanvasRenderingContext2D,
+ renderConfig: RenderConfig,
+ elements: NonDeleted[],
+ appState: AppState,
+) => {
+ const individualElements = elements.filter(
+ (element) => element.groupIds.length === 0,
+ );
+
+ const elementsInGroups = elements.filter(
+ (element) => element.groupIds.length > 0,
+ );
+
+ const getSelectionFromElements = (elements: ExcalidrawElement[]) => {
+ const [elementX1, elementY1, elementX2, elementY2] =
+ getCommonBounds(elements);
+ return {
+ angle: 0,
+ elementX1,
+ elementX2,
+ elementY1,
+ elementY2,
+ selectionColors: ["rgb(0,118,255)"],
+ dashed: false,
+ cx: elementX1 + (elementX2 - elementX1) / 2,
+ cy: elementY1 + (elementY2 - elementY1) / 2,
+ activeEmbeddable: false,
+ };
+ };
+
+ const getSelectionForGroupId = (groupId: GroupId) => {
+ const groupElements = getElementsInGroup(elements, groupId);
+ return getSelectionFromElements(groupElements);
+ };
+
+ Object.entries(selectGroupsFromGivenElements(elementsInGroups, appState))
+ .filter(([id, isSelected]) => isSelected)
+ .map(([id, isSelected]) => id)
+ .map((groupId) => getSelectionForGroupId(groupId))
+ .concat(
+ individualElements.map((element) => getSelectionFromElements([element])),
+ )
+ .forEach((selection) =>
+ renderSelectionBorder(context, renderConfig, selection),
+ );
+};
+
const renderBindingHighlightForSuggestedPointBinding = (
context: CanvasRenderingContext2D,
suggestedBinding: SuggestedPointBinding,
@@ -1089,7 +1375,7 @@ const renderLinkIcon = (
}
};
-const isVisibleElement = (
+export const isVisibleElement = (
element: ExcalidrawElement,
canvasWidth: number,
canvasHeight: number,
@@ -1135,31 +1421,63 @@ export const renderSceneToSvg = (
offsetX = 0,
offsetY = 0,
exportWithDarkMode = false,
+ exportingFrameId = null,
+ renderEmbeddables,
}: {
offsetX?: number;
offsetY?: number;
exportWithDarkMode?: boolean;
+ exportingFrameId?: string | null;
+ renderEmbeddables?: boolean;
} = {},
) => {
if (!svgRoot) {
return;
}
+
// render elements
- elements.forEach((element, index) => {
- if (!element.isDeleted) {
- try {
- renderElementToSvg(
- element,
- rsvg,
- svgRoot,
- files,
- element.x + offsetX,
- element.y + offsetY,
- exportWithDarkMode,
- );
- } catch (error: any) {
- console.error(error);
+ elements
+ .filter((el) => !isEmbeddableOrFrameLabel(el))
+ .forEach((element) => {
+ if (!element.isDeleted) {
+ try {
+ renderElementToSvg(
+ element,
+ rsvg,
+ svgRoot,
+ files,
+ element.x + offsetX,
+ element.y + offsetY,
+ exportWithDarkMode,
+ exportingFrameId,
+ renderEmbeddables,
+ );
+ } catch (error: any) {
+ console.error(error);
+ }
}
- }
- });
+ });
+
+ // render embeddables on top
+ elements
+ .filter((el) => isEmbeddableElement(el))
+ .forEach((element) => {
+ if (!element.isDeleted) {
+ try {
+ renderElementToSvg(
+ element,
+ rsvg,
+ svgRoot,
+ files,
+ element.x + offsetX,
+ element.y + offsetY,
+ exportWithDarkMode,
+ exportingFrameId,
+ renderEmbeddables,
+ );
+ } catch (error: any) {
+ console.error(error);
+ }
+ }
+ });
};
diff --git a/src/renderer/roundRect.ts b/src/renderer/roundRect.ts
index be842a522..bbb98306d 100644
--- a/src/renderer/roundRect.ts
+++ b/src/renderer/roundRect.ts
@@ -15,6 +15,7 @@ export const roundRect = (
width: number,
height: number,
radius: number,
+ strokeColor?: string,
) => {
context.beginPath();
context.moveTo(x + radius, y);
@@ -33,5 +34,8 @@ export const roundRect = (
context.quadraticCurveTo(x, y, x + radius, y);
context.closePath();
context.fill();
+ if (strokeColor) {
+ context.strokeStyle = strokeColor;
+ }
context.stroke();
};
diff --git a/src/scene/Fonts.ts b/src/scene/Fonts.ts
index cc206c776..e245eb16e 100644
--- a/src/scene/Fonts.ts
+++ b/src/scene/Fonts.ts
@@ -1,5 +1,6 @@
import { isTextElement, refreshTextDimensions } from "../element";
import { newElementWith } from "../element/mutateElement";
+import { isBoundToContainer } from "../element/typeChecks";
import { ExcalidrawElement, ExcalidrawTextElement } from "../element/types";
import { invalidateShapeForElement } from "../renderer/renderElement";
import { getFontString } from "../utils";
@@ -52,7 +53,7 @@ export class Fonts {
let didUpdate = false;
this.scene.mapElements((element) => {
- if (isTextElement(element)) {
+ if (isTextElement(element) && !isBoundToContainer(element)) {
invalidateShapeForElement(element);
didUpdate = true;
return newElementWith(element, {
diff --git a/src/scene/Scene.ts b/src/scene/Scene.ts
index e9fc98f89..5b5b7970b 100644
--- a/src/scene/Scene.ts
+++ b/src/scene/Scene.ts
@@ -2,9 +2,18 @@ import {
ExcalidrawElement,
NonDeletedExcalidrawElement,
NonDeleted,
+ ExcalidrawFrameElement,
} from "../element/types";
-import { getNonDeletedElements, isNonDeletedElement } from "../element";
+import {
+ getNonDeletedElements,
+ getNonDeletedFrames,
+ isNonDeletedElement,
+} from "../element";
import { LinearElementEditor } from "../element/linearElementEditor";
+import { isFrameElement } from "../element/typeChecks";
+import { getSelectedElements } from "./selection";
+import { AppState } from "../types";
+import { Assert, SameType } from "../utility-types";
type ElementIdKey = InstanceType["elementId"];
type ElementKey = ExcalidrawElement | ElementIdKey;
@@ -12,6 +21,35 @@ type ElementKey = ExcalidrawElement | ElementIdKey;
type SceneStateCallback = () => void;
type SceneStateCallbackRemover = () => void;
+type SelectionHash = string & { __brand: "selectionHash" };
+
+const hashSelectionOpts = (
+ opts: Parameters["getSelectedElements"]>[0],
+) => {
+ const keys = ["includeBoundTextElement", "includeElementsInFrames"] as const;
+
+ type HashableKeys = Omit;
+
+ // just to ensure we're hashing all expected keys
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ type _ = Assert<
+ SameType<
+ Required,
+ Pick, typeof keys[number]>
+ >
+ >;
+
+ let hash = "";
+ for (const key of keys) {
+ hash += `${key}:${opts[key] ? "1" : "0"}`;
+ }
+ return hash as SelectionHash;
+};
+
+// ideally this would be a branded type but it'd be insanely hard to work with
+// in our codebase
+export type ExcalidrawElementsIncludingDeleted = readonly ExcalidrawElement[];
+
const isIdKey = (elementKey: ElementKey): elementKey is ElementIdKey => {
if (typeof elementKey === "string") {
return true;
@@ -55,7 +93,18 @@ class Scene {
private nonDeletedElements: readonly NonDeletedExcalidrawElement[] = [];
private elements: readonly ExcalidrawElement[] = [];
+ private nonDeletedFrames: readonly NonDeleted[] = [];
+ private frames: readonly ExcalidrawFrameElement[] = [];
private elementsMap = new Map();
+ private selectedElementsCache: {
+ selectedElementIds: AppState["selectedElementIds"] | null;
+ elements: readonly NonDeletedExcalidrawElement[] | null;
+ cache: Map;
+ } = {
+ selectedElementIds: null,
+ elements: null,
+ cache: new Map(),
+ };
getElementsIncludingDeleted() {
return this.elements;
@@ -65,6 +114,60 @@ class Scene {
return this.nonDeletedElements;
}
+ getFramesIncludingDeleted() {
+ return this.frames;
+ }
+
+ getSelectedElements(opts: {
+ // NOTE can be ommitted by making Scene constructor require App instance
+ selectedElementIds: AppState["selectedElementIds"];
+ /**
+ * for specific cases where you need to use elements not from current
+ * scene state. This in effect will likely result in cache-miss, and
+ * the cache won't be updated in this case.
+ */
+ elements?: readonly ExcalidrawElement[];
+ // selection-related options
+ includeBoundTextElement?: boolean;
+ includeElementsInFrames?: boolean;
+ }): NonDeleted[] {
+ const hash = hashSelectionOpts(opts);
+
+ const elements = opts?.elements || this.nonDeletedElements;
+ if (
+ this.selectedElementsCache.elements === elements &&
+ this.selectedElementsCache.selectedElementIds === opts.selectedElementIds
+ ) {
+ const cached = this.selectedElementsCache.cache.get(hash);
+ if (cached) {
+ return cached;
+ }
+ } else if (opts?.elements == null) {
+ // if we're operating on latest scene elements and the cache is not
+ // storing the latest elements, clear the cache
+ this.selectedElementsCache.cache.clear();
+ }
+
+ const selectedElements = getSelectedElements(
+ elements,
+ { selectedElementIds: opts.selectedElementIds },
+ opts,
+ );
+
+ // cache only if we're not using custom elements
+ if (opts?.elements == null) {
+ this.selectedElementsCache.selectedElementIds = opts.selectedElementIds;
+ this.selectedElementsCache.elements = this.nonDeletedElements;
+ this.selectedElementsCache.cache.set(hash, selectedElements);
+ }
+
+ return selectedElements;
+ }
+
+ getNonDeletedFrames(): readonly NonDeleted[] {
+ return this.nonDeletedFrames;
+ }
+
getElement(id: T["id"]): T | null {
return (this.elementsMap.get(id) as T | undefined) || null;
}
@@ -110,12 +213,19 @@ class Scene {
replaceAllElements(nextElements: readonly ExcalidrawElement[]) {
this.elements = nextElements;
+ const nextFrames: ExcalidrawFrameElement[] = [];
this.elementsMap.clear();
nextElements.forEach((element) => {
+ if (isFrameElement(element)) {
+ nextFrames.push(element);
+ }
this.elementsMap.set(element.id, element);
Scene.mapElementToScene(element, this);
});
this.nonDeletedElements = getNonDeletedElements(this.elements);
+ this.frames = nextFrames;
+ this.nonDeletedFrames = getNonDeletedFrames(this.frames);
+
this.informMutation();
}
@@ -141,11 +251,21 @@ class Scene {
}
destroy() {
+ this.nonDeletedElements = [];
+ this.elements = [];
+ this.nonDeletedFrames = [];
+ this.frames = [];
+ this.elementsMap.clear();
+ this.selectedElementsCache.selectedElementIds = null;
+ this.selectedElementsCache.elements = null;
+ this.selectedElementsCache.cache.clear();
+
Scene.sceneMapById.forEach((scene, elementKey) => {
if (scene === this) {
Scene.sceneMapById.delete(elementKey);
}
});
+
// done not for memory leaks, but to guard against possible late fires
// (I guess?)
this.callbacks.clear();
@@ -165,6 +285,29 @@ class Scene {
this.replaceAllElements(nextElements);
}
+ insertElementsAtIndex(elements: ExcalidrawElement[], index: number) {
+ if (!Number.isFinite(index) || index < 0) {
+ throw new Error(
+ "insertElementAtIndex can only be called with index >= 0",
+ );
+ }
+ const nextElements = [
+ ...this.elements.slice(0, index),
+ ...elements,
+ ...this.elements.slice(index),
+ ];
+
+ this.replaceAllElements(nextElements);
+ }
+
+ addNewElement = (element: ExcalidrawElement) => {
+ if (element.frameId) {
+ this.insertElementAtIndex(element, this.getElementIndex(element.frameId));
+ } else {
+ this.replaceAllElements([...this.elements, element]);
+ }
+ };
+
getElementIndex(elementId: string) {
return this.elements.findIndex((element) => element.id === elementId);
}
diff --git a/src/scene/comparisons.ts b/src/scene/comparisons.ts
index b88c8b1ea..b6bdf03b5 100644
--- a/src/scene/comparisons.ts
+++ b/src/scene/comparisons.ts
@@ -1,16 +1,23 @@
-import { NonDeletedExcalidrawElement } from "../element/types";
+import { isEmbeddableElement } from "../element/typeChecks";
+import {
+ ExcalidrawEmbeddableElement,
+ NonDeletedExcalidrawElement,
+} from "../element/types";
export const hasBackground = (type: string) =>
type === "rectangle" ||
+ type === "embeddable" ||
type === "ellipse" ||
type === "diamond" ||
type === "line" ||
type === "freedraw";
-export const hasStrokeColor = (type: string) => type !== "image";
+export const hasStrokeColor = (type: string) =>
+ type !== "image" && type !== "frame";
export const hasStrokeWidth = (type: string) =>
type === "rectangle" ||
+ type === "embeddable" ||
type === "ellipse" ||
type === "diamond" ||
type === "freedraw" ||
@@ -19,6 +26,7 @@ export const hasStrokeWidth = (type: string) =>
export const hasStrokeStyle = (type: string) =>
type === "rectangle" ||
+ type === "embeddable" ||
type === "ellipse" ||
type === "diamond" ||
type === "arrow" ||
@@ -26,6 +34,7 @@ export const hasStrokeStyle = (type: string) =>
export const canChangeRoundness = (type: string) =>
type === "rectangle" ||
+ type === "embeddable" ||
type === "arrow" ||
type === "line" ||
type === "diamond";
@@ -60,9 +69,21 @@ export const getElementsAtPosition = (
elements: readonly NonDeletedExcalidrawElement[],
isAtPositionFn: (element: NonDeletedExcalidrawElement) => boolean,
) => {
+ const embeddables: ExcalidrawEmbeddableElement[] = [];
// The parameter elements comes ordered from lower z-index to higher.
// We want to preserve that order on the returned array.
- return elements.filter(
- (element) => !element.isDeleted && isAtPositionFn(element),
- );
+ // Exception being embeddables which should be on top of everything else in
+ // terms of hit testing.
+ const elsAtPos = elements.filter((element) => {
+ const hit = !element.isDeleted && isAtPositionFn(element);
+ if (hit) {
+ if (isEmbeddableElement(element)) {
+ embeddables.push(element);
+ return false;
+ }
+ return true;
+ }
+ return false;
+ });
+ return elsAtPos.concat(embeddables);
};
diff --git a/src/scene/export.ts b/src/scene/export.ts
index 21d1b7fc3..d0100d2d0 100644
--- a/src/scene/export.ts
+++ b/src/scene/export.ts
@@ -1,8 +1,8 @@
import rough from "roughjs/bin/rough";
import { NonDeletedExcalidrawElement } from "../element/types";
-import { getCommonBounds } from "../element/bounds";
+import { getCommonBounds, getElementAbsoluteCoords } from "../element/bounds";
import { renderScene, renderSceneToSvg } from "../renderer/renderScene";
-import { distance } from "../utils";
+import { distance, isOnlyExportingSingleFrame } from "../utils";
import { AppState, BinaryFiles } from "../types";
import { DEFAULT_EXPORT_PADDING, SVG_NS, THEME_FILTER } from "../constants";
import { getDefaultAppState } from "../appState";
@@ -11,7 +11,7 @@ import {
getInitializedImageElements,
updateImageCache,
} from "../element/image";
-import Scene from "../scene/Scene";
+import Scene from "./Scene";
export const SVG_EXPORT_TAG = ``;
@@ -65,6 +65,8 @@ export const exportToCanvas = async (
files,
});
+ const onlyExportingSingleFrame = isOnlyExportingSingleFrame(elements);
+
renderScene({
elements,
appState,
@@ -73,8 +75,8 @@ export const exportToCanvas = async (
canvas,
renderConfig: {
viewBackgroundColor: exportBackground ? viewBackgroundColor : null,
- scrollX: -minX + exportPadding,
- scrollY: -minY + exportPadding,
+ scrollX: -minX + (onlyExportingSingleFrame ? 0 : exportPadding),
+ scrollY: -minY + (onlyExportingSingleFrame ? 0 : exportPadding),
zoom: defaultAppState.zoom,
remotePointerViewportCoords: {},
remoteSelectedElementIds: {},
@@ -103,8 +105,13 @@ export const exportToSvg = async (
viewBackgroundColor: string;
exportWithDarkMode?: boolean;
exportEmbedScene?: boolean;
+ renderFrame?: boolean;
},
files: BinaryFiles | null,
+ opts?: {
+ serializeAsJSON?: () => string;
+ renderEmbeddables?: boolean;
+ },
): Promise => {
const {
exportPadding = DEFAULT_EXPORT_PADDING,
@@ -119,7 +126,9 @@ export const exportToSvg = async (
metadata = await (
await import(/* webpackChunkName: "image" */ "../../src/data/image")
).encodeSvgMetadata({
- text: serializeAsJSON(elements, appState, files || {}, "local"),
+ text: opts?.serializeAsJSON
+ ? opts?.serializeAsJSON?.()
+ : serializeAsJSON(elements, appState, files || {}, "local"),
});
} catch (error: any) {
console.error(error);
@@ -139,18 +148,52 @@ export const exportToSvg = async (
}
let assetPath = "https://excalidraw.com/";
-
// Asset path needs to be determined only when using package
- if (process.env.IS_EXCALIDRAW_NPM_PACKAGE) {
+ if (import.meta.env.VITE_IS_EXCALIDRAW_NPM_PACKAGE) {
assetPath =
window.EXCALIDRAW_ASSET_PATH ||
- `https://unpkg.com/${process.env.PKG_NAME}@${process.env.PKG_VERSION}`;
+ `https://unpkg.com/${import.meta.env.VITE_PKG_NAME}@${
+ import.meta.env.PKG_VERSION
+ }`;
if (assetPath?.startsWith("/")) {
assetPath = assetPath.replace("/", `${window.location.origin}/`);
}
assetPath = `${assetPath}/dist/excalidraw-assets/`;
}
+
+ // do not apply clipping when we're exporting the whole scene
+ const isExportingWholeCanvas =
+ Scene.getScene(elements[0])?.getNonDeletedElements()?.length ===
+ elements.length;
+
+ const onlyExportingSingleFrame = isOnlyExportingSingleFrame(elements);
+
+ const offsetX = -minX + (onlyExportingSingleFrame ? 0 : exportPadding);
+ const offsetY = -minY + (onlyExportingSingleFrame ? 0 : exportPadding);
+
+ const exportingFrame =
+ isExportingWholeCanvas || !onlyExportingSingleFrame
+ ? undefined
+ : elements.find((element) => element.type === "frame");
+
+ let exportingFrameClipPath = "";
+ if (exportingFrame) {
+ const [x1, y1, x2, y2] = getElementAbsoluteCoords(exportingFrame);
+ const cx = (x2 - x1) / 2 - (exportingFrame.x - x1);
+ const cy = (y2 - y1) / 2 - (exportingFrame.y - y1);
+
+ exportingFrameClipPath = `
+
+
+ `;
+ }
+
svgRoot.innerHTML = `
${SVG_EXPORT_TAG}
${metadata}
@@ -165,8 +208,10 @@ export const exportToSvg = async (
src: url("${assetPath}Cascadia.woff2");
}
+ ${exportingFrameClipPath}
`;
+
// render background rect
if (appState.exportBackground && viewBackgroundColor) {
const rect = svgRoot.ownerDocument!.createElementNS(SVG_NS, "rect");
@@ -180,9 +225,11 @@ export const exportToSvg = async (
const rsvg = rough.svg(svgRoot);
renderSceneToSvg(elements, rsvg, svgRoot, files || {}, {
- offsetX: -minX + exportPadding,
- offsetY: -minY + exportPadding,
+ offsetX,
+ offsetY,
exportWithDarkMode: appState.exportWithDarkMode,
+ exportingFrameId: exportingFrame?.id || null,
+ renderEmbeddables: opts?.renderEmbeddables,
});
scene?.destroy();
@@ -194,9 +241,36 @@ const getCanvasSize = (
elements: readonly NonDeletedExcalidrawElement[],
exportPadding: number,
): [number, number, number, number] => {
+ // we should decide if we are exporting the whole canvas
+ // if so, we are not clipping elements in the frame
+ // and therefore, we should not do anything special
+
+ const isExportingWholeCanvas =
+ Scene.getScene(elements[0])?.getNonDeletedElements()?.length ===
+ elements.length;
+
+ const onlyExportingSingleFrame = isOnlyExportingSingleFrame(elements);
+
+ if (!isExportingWholeCanvas || onlyExportingSingleFrame) {
+ const frames = elements.filter((element) => element.type === "frame");
+
+ const exportedFrameIds = frames.reduce((acc, frame) => {
+ acc[frame.id] = true;
+ return acc;
+ }, {} as Record);
+
+ // elements in a frame do not affect the canvas size if we're not exporting
+ // the whole canvas
+ elements = elements.filter(
+ (element) => !exportedFrameIds[element.frameId ?? ""],
+ );
+ }
+
const [minX, minY, maxX, maxY] = getCommonBounds(elements);
- const width = distance(minX, maxX) + exportPadding * 2;
- const height = distance(minY, maxY) + exportPadding + exportPadding;
+ const width =
+ distance(minX, maxX) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);
+ const height =
+ distance(minY, maxY) + (onlyExportingSingleFrame ? 0 : exportPadding * 2);
return [minX, minY, width, height];
};
diff --git a/src/scene/scroll.ts b/src/scene/scroll.ts
index 4fce5e641..114d6db05 100644
--- a/src/scene/scroll.ts
+++ b/src/scene/scroll.ts
@@ -41,8 +41,8 @@ export const centerScrollOn = ({
zoom: Zoom;
}) => {
return {
- scrollX: (viewportDimensions.width / 2) * (1 / zoom.value) - scenePoint.x,
- scrollY: (viewportDimensions.height / 2) * (1 / zoom.value) - scenePoint.y,
+ scrollX: viewportDimensions.width / 2 / zoom.value - scenePoint.x,
+ scrollY: viewportDimensions.height / 2 / zoom.value - scenePoint.y,
};
};
diff --git a/src/scene/scrollbars.ts b/src/scene/scrollbars.ts
index c36acde04..76a04d606 100644
--- a/src/scene/scrollbars.ts
+++ b/src/scene/scrollbars.ts
@@ -41,10 +41,10 @@ export const getScrollBars = (
const viewportHeightDiff = viewportHeight - viewportHeightWithZoom;
const safeArea = {
- top: parseInt(getGlobalCSSVariable("sat")),
- bottom: parseInt(getGlobalCSSVariable("sab")),
- left: parseInt(getGlobalCSSVariable("sal")),
- right: parseInt(getGlobalCSSVariable("sar")),
+ top: parseInt(getGlobalCSSVariable("sat")) || 0,
+ bottom: parseInt(getGlobalCSSVariable("sab")) || 0,
+ left: parseInt(getGlobalCSSVariable("sal")) || 0,
+ right: parseInt(getGlobalCSSVariable("sar")) || 0,
};
const isRTL = getLanguage().rtl;
diff --git a/src/scene/selection.test.ts b/src/scene/selection.test.ts
new file mode 100644
index 000000000..644d2129f
--- /dev/null
+++ b/src/scene/selection.test.ts
@@ -0,0 +1,35 @@
+import { makeNextSelectedElementIds } from "./selection";
+
+describe("makeNextSelectedElementIds", () => {
+ const _makeNextSelectedElementIds = (
+ selectedElementIds: { [id: string]: true },
+ prevSelectedElementIds: { [id: string]: true },
+ expectUpdated: boolean,
+ ) => {
+ const ret = makeNextSelectedElementIds(selectedElementIds, {
+ selectedElementIds: prevSelectedElementIds,
+ });
+ expect(ret === selectedElementIds).toBe(expectUpdated);
+ };
+ it("should return prevState selectedElementIds if no change", () => {
+ _makeNextSelectedElementIds({}, {}, false);
+ _makeNextSelectedElementIds({ 1: true }, { 1: true }, false);
+ _makeNextSelectedElementIds(
+ { 1: true, 2: true },
+ { 1: true, 2: true },
+ false,
+ );
+ });
+ it("should return new selectedElementIds if changed", () => {
+ // _makeNextSelectedElementIds({ 1: true }, { 1: false }, true);
+ _makeNextSelectedElementIds({ 1: true }, {}, true);
+ _makeNextSelectedElementIds({}, { 1: true }, true);
+ _makeNextSelectedElementIds({ 1: true }, { 2: true }, true);
+ _makeNextSelectedElementIds({ 1: true }, { 1: true, 2: true }, true);
+ _makeNextSelectedElementIds(
+ { 1: true, 2: true },
+ { 1: true, 3: true },
+ true,
+ );
+ });
+});
diff --git a/src/scene/selection.ts b/src/scene/selection.ts
index 39d3518b1..bbb629d3c 100644
--- a/src/scene/selection.ts
+++ b/src/scene/selection.ts
@@ -5,17 +5,62 @@ import {
import { getElementAbsoluteCoords, getElementBounds } from "../element";
import { AppState } from "../types";
import { isBoundToContainer } from "../element/typeChecks";
+import {
+ elementOverlapsWithFrame,
+ getContainingFrame,
+ getFrameElements,
+} from "../frame";
+import { isShallowEqual } from "../utils";
+
+/**
+ * Frames and their containing elements are not to be selected at the same time.
+ * Given an array of selected elements, if there are frames and their containing elements
+ * we only keep the frames.
+ * @param selectedElements
+ */
+export const excludeElementsInFramesFromSelection = <
+ T extends ExcalidrawElement,
+>(
+ selectedElements: readonly T[],
+) => {
+ const framesInSelection = new Set();
+
+ selectedElements.forEach((element) => {
+ if (element.type === "frame") {
+ framesInSelection.add(element.id);
+ }
+ });
+
+ return selectedElements.filter((element) => {
+ if (element.frameId && framesInSelection.has(element.frameId)) {
+ return false;
+ }
+ return true;
+ });
+};
export const getElementsWithinSelection = (
elements: readonly NonDeletedExcalidrawElement[],
selection: NonDeletedExcalidrawElement,
+ excludeElementsInFrames: boolean = true,
) => {
const [selectionX1, selectionY1, selectionX2, selectionY2] =
getElementAbsoluteCoords(selection);
- return elements.filter((element) => {
- const [elementX1, elementY1, elementX2, elementY2] =
+
+ let elementsInSelection = elements.filter((element) => {
+ let [elementX1, elementY1, elementX2, elementY2] =
getElementBounds(element);
+ const containingFrame = getContainingFrame(element);
+ if (containingFrame) {
+ const [fx1, fy1, fx2, fy2] = getElementBounds(containingFrame);
+
+ elementX1 = Math.max(fx1, elementX1);
+ elementY1 = Math.max(fy1, elementY1);
+ elementX2 = Math.min(fx2, elementX2);
+ elementY2 = Math.min(fy2, elementY2);
+ }
+
return (
element.locked === false &&
element.type !== "selection" &&
@@ -26,13 +71,59 @@ export const getElementsWithinSelection = (
selectionY2 >= elementY2
);
});
+
+ elementsInSelection = excludeElementsInFrames
+ ? excludeElementsInFramesFromSelection(elementsInSelection)
+ : elementsInSelection;
+
+ elementsInSelection = elementsInSelection.filter((element) => {
+ const containingFrame = getContainingFrame(element);
+
+ if (containingFrame) {
+ return elementOverlapsWithFrame(element, containingFrame);
+ }
+
+ return true;
+ });
+
+ return elementsInSelection;
};
-export const isSomeElementSelected = (
- elements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
-): boolean =>
- elements.some((element) => appState.selectedElementIds[element.id]);
+// FIXME move this into the editor instance to keep utility methods stateless
+export const isSomeElementSelected = (function () {
+ let lastElements: readonly NonDeletedExcalidrawElement[] | null = null;
+ let lastSelectedElementIds: AppState["selectedElementIds"] | null = null;
+ let isSelected: boolean | null = null;
+
+ const ret = (
+ elements: readonly NonDeletedExcalidrawElement[],
+ appState: Pick,
+ ): boolean => {
+ if (
+ isSelected != null &&
+ elements === lastElements &&
+ appState.selectedElementIds === lastSelectedElementIds
+ ) {
+ return isSelected;
+ }
+
+ isSelected = elements.some(
+ (element) => appState.selectedElementIds[element.id],
+ );
+ lastElements = elements;
+ lastSelectedElementIds = appState.selectedElementIds;
+
+ return isSelected;
+ };
+
+ ret.clearCache = () => {
+ lastElements = null;
+ lastSelectedElementIds = null;
+ isSelected = null;
+ };
+
+ return ret;
+})();
/**
* Returns common attribute (picked by `getAttribute` callback) of selected
@@ -40,7 +131,7 @@ export const isSomeElementSelected = (
*/
export const getCommonAttributeOfSelectedElements = (
elements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
+ appState: Pick,
getAttribute: (element: ExcalidrawElement) => T,
): T | null => {
const attributes = Array.from(
@@ -55,15 +146,18 @@ export const getCommonAttributeOfSelectedElements = (
export const getSelectedElements = (
elements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
- includeBoundTextElement: boolean = false,
-) =>
- elements.filter((element) => {
+ appState: Pick,
+ opts?: {
+ includeBoundTextElement?: boolean;
+ includeElementsInFrames?: boolean;
+ },
+) => {
+ const selectedElements = elements.filter((element) => {
if (appState.selectedElementIds[element.id]) {
return element;
}
if (
- includeBoundTextElement &&
+ opts?.includeBoundTextElement &&
isBoundToContainer(element) &&
appState.selectedElementIds[element?.containerId]
) {
@@ -72,10 +166,44 @@ export const getSelectedElements = (
return null;
});
+ if (opts?.includeElementsInFrames) {
+ const elementsToInclude: ExcalidrawElement[] = [];
+ selectedElements.forEach((element) => {
+ if (element.type === "frame") {
+ getFrameElements(elements, element.id).forEach((e) =>
+ elementsToInclude.push(e),
+ );
+ }
+ elementsToInclude.push(element);
+ });
+
+ return elementsToInclude;
+ }
+
+ return selectedElements;
+};
+
export const getTargetElements = (
elements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
+ appState: Pick,
) =>
appState.editingElement
? [appState.editingElement]
- : getSelectedElements(elements, appState, true);
+ : getSelectedElements(elements, appState, {
+ includeBoundTextElement: true,
+ });
+
+/**
+ * returns prevState's selectedElementids if no change from previous, so as to
+ * retain reference identity for memoization
+ */
+export const makeNextSelectedElementIds = (
+ nextSelectedElementIds: AppState["selectedElementIds"],
+ prevState: Pick,
+) => {
+ if (isShallowEqual(prevState.selectedElementIds, nextSelectedElementIds)) {
+ return prevState.selectedElementIds;
+ }
+
+ return nextSelectedElementIds;
+};
diff --git a/src/serviceWorker.tsx b/src/serviceWorker.tsx
deleted file mode 100644
index 6a2608807..000000000
--- a/src/serviceWorker.tsx
+++ /dev/null
@@ -1,162 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read https://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
- window.location.hostname === "localhost" ||
- // [::1] is the IPv6 localhost address.
- window.location.hostname === "[::1]" ||
- // 127.0.0.0/8 are considered localhost for IPv4.
- window.location.hostname.match(
- /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,
- ),
-);
-
-type Config = {
- onSuccess?: (registration: ServiceWorkerRegistration) => void;
- onUpdate?: (registration: ServiceWorkerRegistration) => void;
-};
-
-export const register = (config?: Config) => {
- if (
- (process.env.NODE_ENV === "production" ||
- process.env.REACT_APP_DEV_ENABLE_SW?.toLowerCase() === "true") &&
- "serviceWorker" in navigator
- ) {
- // The URL constructor is available in all browsers that support SW.
- const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
- if (publicUrl.origin !== window.location.origin) {
- // Our service worker won't work if PUBLIC_URL is on a different origin
- // from what our page is served on. This might happen if a CDN is used to
- // serve assets; see https://github.com/facebook/create-react-app/issues/2374
- return;
- }
-
- window.addEventListener("load", () => {
- const isWebexLP = window.location.pathname.startsWith("/webex");
- if (isWebexLP) {
- unregister(() => {
- window.location.reload();
- });
- return false;
- }
- const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
-
- if (isLocalhost) {
- // This is running on localhost. Let's check if a service worker still exists or not.
- checkValidServiceWorker(swUrl, config);
-
- // Add some additional logging to localhost, pointing developers to the
- // service worker/PWA documentation.
- navigator.serviceWorker.ready.then(() => {
- console.info(
- "This web app is being served cache-first by a service " +
- "worker. To learn more, visit https://bit.ly/CRA-PWA",
- );
- });
- } else {
- // Is not localhost. Just register service worker
- registerValidSW(swUrl, config);
- }
- });
- }
-};
-
-const registerValidSW = (swUrl: string, config?: Config) => {
- navigator.serviceWorker
- .register(swUrl)
- .then((registration) => {
- registration.onupdatefound = () => {
- const installingWorker = registration.installing;
- if (installingWorker == null) {
- return;
- }
- installingWorker.onstatechange = () => {
- if (installingWorker.state === "installed") {
- if (navigator.serviceWorker.controller) {
- // At this point, the updated precached content has been fetched,
- // but the previous service worker will still serve the older
- // content until all client tabs are closed.
-
- console.info(
- "New content is available and will be used when all tabs for this page are closed.",
- );
-
- // Execute callback
- if (config && config.onUpdate) {
- config.onUpdate(registration);
- }
- } else {
- // At this point, everything has been precached.
- // It's the perfect time to display a
- // "Content is cached for offline use." message.
-
- console.info("Content is cached for offline use.");
-
- // Execute callback
- if (config && config.onSuccess) {
- config.onSuccess(registration);
- }
- }
- }
- };
- };
- })
- .catch((error) => {
- console.error("Error during service worker registration:", error);
- });
-};
-
-const checkValidServiceWorker = (swUrl: string, config?: Config) => {
- // Check if the service worker can be found. If it can't reload the page.
- fetch(swUrl, {
- headers: { "Service-Worker": "script" },
- })
- .then((response) => {
- // Ensure service worker exists, and that we really are getting a JS file.
- const contentType = response.headers.get("content-type");
- if (
- response.status === 404 ||
- (contentType != null && contentType.indexOf("javascript") === -1)
- ) {
- // No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then((registration) => {
- registration.unregister().then(() => {
- window.location.reload();
- });
- });
- } else {
- // Service worker found. Proceed as normal.
- registerValidSW(swUrl, config);
- }
- })
- .catch((error) => {
- console.info(
- "No internet connection found. App is running in offline mode.",
- error.message,
- );
- });
-};
-
-export const unregister = (callback?: () => void) => {
- if ("serviceWorker" in navigator) {
- navigator.serviceWorker.ready
- .then((registration) => {
- return registration.unregister();
- })
- .then(() => {
- callback?.();
- })
- .catch((error) => {
- console.error(error.message);
- });
- }
-};
diff --git a/src/setupTests.ts b/src/setupTests.ts
index 698b2d4ce..342e532d1 100644
--- a/src/setupTests.ts
+++ b/src/setupTests.ts
@@ -1,19 +1,16 @@
+// vitest.setup.ts
+import "vitest-canvas-mock";
import "@testing-library/jest-dom";
-import "jest-canvas-mock";
-import dotenv from "dotenv";
+import { vi } from "vitest";
import polyfill from "./polyfill";
require("fake-indexeddb/auto");
polyfill();
-// jest doesn't know of .env.development so we need to init it ourselves
-dotenv.config({
- path: require("path").resolve(__dirname, "../.env.development"),
-});
-jest.mock("nanoid", () => {
+vi.mock("nanoid", () => {
return {
- nanoid: jest.fn(() => "test-id"),
+ nanoid: vi.fn(() => "test-id"),
};
});
// ReactDOM is located inside index.tsx file
diff --git a/src/shapes.tsx b/src/shapes.tsx
index a8b9b5301..bb827995b 100644
--- a/src/shapes.tsx
+++ b/src/shapes.tsx
@@ -83,6 +83,14 @@ export const SHAPES = [
numericKey: KEYS["0"],
fillable: false,
},
+ // TODO: frame, create icon and set up numeric key
+ // {
+ // icon: RectangleIcon,
+ // value: "frame",
+ // key: KEYS.F,
+ // numericKey: KEYS.SUBTRACT,
+ // fillable: false,
+ // },
] as const;
export const findShapeByKey = (key: string) => {
diff --git a/src/tests/MobileMenu.test.tsx b/src/tests/MobileMenu.test.tsx
new file mode 100644
index 000000000..a5014062d
--- /dev/null
+++ b/src/tests/MobileMenu.test.tsx
@@ -0,0 +1,45 @@
+import ExcalidrawApp from "../excalidraw-app";
+import {
+ mockBoundingClientRect,
+ render,
+ restoreOriginalGetBoundingClientRect,
+} from "./test-utils";
+
+import { UI } from "./helpers/ui";
+
+describe("Test MobileMenu", () => {
+ const { h } = window;
+ const dimensions = { height: 400, width: 800 };
+
+ beforeAll(() => {
+ mockBoundingClientRect(dimensions);
+ });
+
+ beforeEach(async () => {
+ await render( );
+ //@ts-ignore
+ h.app.refreshDeviceState(h.app.excalidrawContainerRef.current!);
+ });
+
+ afterAll(() => {
+ restoreOriginalGetBoundingClientRect();
+ });
+
+ it("should set device correctly", () => {
+ expect(h.app.device).toMatchInlineSnapshot(`
+ {
+ "canDeviceFitSidebar": false,
+ "isLandscape": true,
+ "isMobile": true,
+ "isSmScreen": false,
+ "isTouchScreen": false,
+ }
+ `);
+ });
+
+ it("should initialize with welcome screen and hide once user interacts", async () => {
+ expect(document.querySelector(".welcome-screen-center")).toMatchSnapshot();
+ UI.clickTool("rectangle");
+ expect(document.querySelector(".welcome-screen-center")).toBeNull();
+ });
+});
diff --git a/src/tests/__snapshots__/MobileMenu.test.tsx.snap b/src/tests/__snapshots__/MobileMenu.test.tsx.snap
new file mode 100644
index 000000000..d85989e68
--- /dev/null
+++ b/src/tests/__snapshots__/MobileMenu.test.tsx.snap
@@ -0,0 +1,240 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`Test MobileMenu > should initialize with welcome screen and hide once user interacts 1`] = `
+
+
+
+
+
+
+
+
+ Excalidraw
+
+
+ All your data is saved locally in your browser.
+
+
+
+`;
diff --git a/src/tests/__snapshots__/charts.test.tsx.snap b/src/tests/__snapshots__/charts.test.tsx.snap
index 1bb5c2a40..868e27e84 100644
--- a/src/tests/__snapshots__/charts.test.tsx.snap
+++ b/src/tests/__snapshots__/charts.test.tsx.snap
@@ -1,15 +1,15 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`tryParseSpreadsheet works for numbers with comma in them 1`] = `
-Object {
- "spreadsheet": Object {
- "labels": Array [
+exports[`tryParseSpreadsheet > works for numbers with comma in them 1`] = `
+{
+ "spreadsheet": {
+ "labels": [
"Week 1",
"Week 2",
"Week 3",
],
"title": "Users",
- "values": Array [
+ "values": [
814,
10301,
4264,
diff --git a/src/tests/__snapshots__/contextmenu.test.tsx.snap b/src/tests/__snapshots__/contextmenu.test.tsx.snap
index 1c3ccccae..8ed2c3083 100644
--- a/src/tests/__snapshots__/contextmenu.test.tsx.snap
+++ b/src/tests/__snapshots__/contextmenu.test.tsx.snap
@@ -1,14 +1,292 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.cut",
+ "keyTest": [Function],
+ "name": "cut",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copy",
+ "keyTest": undefined,
+ "name": "copy",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.selectAllElementsInFrame",
+ "name": "selectAllElementsInFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.removeAllElementsFromFrame",
+ "name": "removeAllElementsFromFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "history",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyStyles",
+ "keyTest": [Function],
+ "name": "copyStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.pasteStyles",
+ "keyTest": [Function],
+ "name": "pasteStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.group",
+ "keyTest": [Function],
+ "name": "group",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.unbindText",
+ "name": "unbindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.bindText",
+ "name": "bindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.createContainerFromText",
+ "name": "wrapTextInContainer",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.ungroup",
+ "keyTest": [Function],
+ "name": "ungroup",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.addToLibrary",
+ "name": "addToLibrary",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendBackward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "sendBackward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringForward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "bringForward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendToBack",
+ "keyTest": [Function],
+ "name": "sendToBack",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringToFront",
+ "keyTest": [Function],
+ "name": "bringToFront",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.flipHorizontal",
+ "keyTest": [Function],
+ "name": "flipHorizontal",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.flipVertical",
+ "keyTest": [Function],
+ "name": "flipVertical",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": [Function],
+ "name": "toggleLinearEditor",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "hyperlink",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "action": "click",
+ "category": "hyperlink",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.duplicateSelection",
+ "keyTest": [Function],
+ "name": "duplicateSelection",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "toggleElementLock",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.delete",
+ "keyTest": [Function],
+ "name": "deleteSelectedElements",
+ "perform": [Function],
+ "trackEvent": {
+ "action": "delete",
+ "category": "element",
+ },
+ },
+ ],
+ "left": 30,
+ "top": 40,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -19,28 +297,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -50,23 +337,24 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"g1": true,
},
"selectedLinearElement": null,
@@ -76,26 +364,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "solid",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"g1",
],
"height": 100,
@@ -105,11 +394,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -122,13 +411,14 @@ Object {
}
`;
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "solid",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"g1",
],
"height": 100,
@@ -138,11 +428,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -155,39 +445,41 @@ Object {
}
`;
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element right-clicking on a group should select whole group: [end of test] number of renders 1`] = `6`;
+exports[`contextMenu element > right-clicking on a group should select whole group > [end of test] number of renders 1`] = `7`;
-exports[`contextMenu element selecting 'Add to library' in context menu adds element to library: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Add to library' in context menu adds element to library > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -198,28 +490,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -229,22 +530,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -252,28 +554,29 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
- "toast": Object {
+ "toast": {
"message": "Added to library",
},
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Add to library' in context menu adds element to library: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Add to library' in context menu adds element to library > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -281,11 +584,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -298,40 +601,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Add to library' in context menu adds element to library: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Add to library' in context menu adds element to library > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -339,11 +643,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -360,19 +664,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Add to library' in context menu adds element to library: [end of test] number of elements 1`] = `1`;
+exports[`contextMenu element > selecting 'Add to library' in context menu adds element to library > [end of test] number of elements 1`] = `1`;
-exports[`contextMenu element selecting 'Add to library' in context menu adds element to library: [end of test] number of renders 1`] = `11`;
+exports[`contextMenu element > selecting 'Add to library' in context menu adds element to library > [end of test] number of renders 1`] = `14`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -383,28 +689,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -414,22 +729,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -437,26 +753,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -464,11 +781,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -481,13 +798,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -495,11 +813,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -512,40 +830,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -553,11 +872,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -570,24 +889,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -595,11 +915,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -610,12 +930,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -623,11 +944,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -640,24 +961,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -665,11 +987,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -680,12 +1002,13 @@ Object {
"x": 20,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -693,11 +1016,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -714,19 +1037,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Bring forward' in context menu brings element forward: [end of test] number of renders 1`] = `16`;
+exports[`contextMenu element > selecting 'Bring forward' in context menu brings element forward > [end of test] number of renders 1`] = `18`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -737,28 +1062,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -768,22 +1102,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -791,26 +1126,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -818,11 +1154,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -835,13 +1171,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -849,11 +1186,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -866,40 +1203,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -907,11 +1245,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -924,24 +1262,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -949,11 +1288,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -964,12 +1303,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -977,11 +1317,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -994,24 +1334,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -1019,11 +1360,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1034,12 +1375,13 @@ Object {
"x": 20,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1047,11 +1389,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1068,19 +1410,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Bring to front' in context menu brings element to front: [end of test] number of renders 1`] = `16`;
+exports[`contextMenu element > selecting 'Bring to front' in context menu brings element to front > [end of test] number of renders 1`] = `18`;
-exports[`contextMenu element selecting 'Copy styles' in context menu copies styles: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Copy styles' in context menu copies styles > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -1091,28 +1435,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -1122,22 +1475,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -1145,28 +1499,29 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
- "toast": Object {
+ "toast": {
"message": "Copied styles.",
},
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Copy styles' in context menu copies styles: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Copy styles' in context menu copies styles > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1174,16 +1529,211 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
+ "versionNonce": 449462985,
+ "width": 20,
+ "x": -10,
+ "y": 0,
+}
+`;
+
+exports[`contextMenu element > selecting 'Copy styles' in context menu copies styles > [end of test] history 1`] = `
+{
+ "recording": false,
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
+ "editingGroupId": null,
+ "editingLinearElement": null,
+ "name": "Untitled-201933152653",
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
+ "viewBackgroundColor": "#ffffff",
+ },
+ "elements": [],
+ },
+ {
+ "appState": {
+ "editingGroupId": null,
+ "editingLinearElement": null,
+ "name": "Untitled-201933152653",
+ "selectedElementIds": {
+ "id0": true,
+ },
+ "selectedGroupIds": {},
+ "viewBackgroundColor": "#ffffff",
+ },
+ "elements": [
+ {
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
+ "height": 20,
+ "id": "id0",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 2,
+ "versionNonce": 449462985,
+ "width": 20,
+ "x": -10,
+ "y": 0,
+ },
+ ],
+ },
+ ],
+}
+`;
+
+exports[`contextMenu element > selecting 'Copy styles' in context menu copies styles > [end of test] number of elements 1`] = `1`;
+
+exports[`contextMenu element > selecting 'Copy styles' in context menu copies styles > [end of test] number of renders 1`] = `14`;
+
+exports[`contextMenu element > selecting 'Delete' in context menu deletes element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
+ "customType": null,
+ "lastActiveTool": null,
+ "locked": false,
+ "type": "selection",
+ },
+ "collaborators": Map {},
+ "contextMenu": null,
+ "currentChartType": "bar",
+ "currentItemBackgroundColor": "transparent",
+ "currentItemEndArrowhead": "arrow",
+ "currentItemFillStyle": "hachure",
+ "currentItemFontFamily": 1,
+ "currentItemFontSize": 20,
+ "currentItemOpacity": 100,
+ "currentItemRoughness": 1,
+ "currentItemRoundness": "round",
+ "currentItemStartArrowhead": null,
+ "currentItemStrokeColor": "#1e1e1e",
+ "currentItemStrokeStyle": "solid",
+ "currentItemStrokeWidth": 1,
+ "currentItemTextAlign": "left",
+ "cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": null,
+ "editingElement": null,
+ "editingFrame": null,
+ "editingGroupId": null,
+ "editingLinearElement": null,
+ "elementsToHighlight": null,
+ "errorMessage": null,
+ "exportBackground": true,
+ "exportEmbedScene": false,
+ "exportScale": 1,
+ "exportWithDarkMode": false,
+ "fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
+ "gridSize": null,
+ "height": 100,
+ "isBindingEnabled": true,
+ "isLoading": false,
+ "isResizing": false,
+ "isRotating": false,
+ "lastPointerDownWith": "mouse",
+ "multiElement": null,
+ "name": "Untitled-201933152653",
+ "offsetLeft": 20,
+ "offsetTop": 10,
+ "openDialog": null,
+ "openMenu": null,
+ "openPopup": null,
+ "openSidebar": null,
+ "pasteDialog": {
+ "data": null,
+ "shown": false,
+ },
+ "penDetected": false,
+ "penMode": false,
+ "pendingImageElementId": null,
+ "previousSelectedElementIds": {},
+ "resizingElement": null,
+ "scrollX": 0,
+ "scrollY": 0,
+ "scrolledOutside": false,
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
+ "selectedLinearElement": null,
+ "selectionElement": null,
+ "shouldCacheIgnoreZoom": false,
+ "showHyperlinkPopup": false,
+ "showStats": false,
+ "showWelcomeScreen": true,
+ "startBoundElement": null,
+ "suggestedBindings": [],
+ "theme": "light",
+ "toast": null,
+ "viewBackgroundColor": "#ffffff",
+ "viewModeEnabled": false,
+ "width": 200,
+ "zenModeEnabled": false,
+ "zoom": {
+ "value": 1,
+ },
+}
+`;
+
+exports[`contextMenu element > selecting 'Delete' in context menu deletes element > [end of test] element 0 1`] = `
+{
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
+ "height": 20,
+ "id": "id0",
+ "isDeleted": true,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 3,
"versionNonce": 453191,
"width": 20,
"x": -10,
@@ -1191,40 +1741,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Copy styles' in context menu copies styles: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Delete' in context menu deletes element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1232,16 +1783,57 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
+ "versionNonce": 449462985,
+ "width": 20,
+ "x": -10,
+ "y": 0,
+ },
+ ],
+ },
+ {
+ "appState": {
+ "editingGroupId": null,
+ "editingLinearElement": null,
+ "name": "Untitled-201933152653",
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
+ "viewBackgroundColor": "#ffffff",
+ },
+ "elements": [
+ {
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
+ "height": 20,
+ "id": "id0",
+ "isDeleted": true,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 3,
"versionNonce": 453191,
"width": 20,
"x": -10,
@@ -1253,19 +1845,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Copy styles' in context menu copies styles: [end of test] number of elements 1`] = `1`;
+exports[`contextMenu element > selecting 'Delete' in context menu deletes element > [end of test] number of elements 1`] = `1`;
-exports[`contextMenu element selecting 'Copy styles' in context menu copies styles: [end of test] number of renders 1`] = `11`;
+exports[`contextMenu element > selecting 'Delete' in context menu deletes element > [end of test] number of renders 1`] = `14`;
-exports[`contextMenu element selecting 'Delete' in context menu deletes element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -1276,28 +1870,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -1307,243 +1910,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
- "selectedLinearElement": null,
- "selectionElement": null,
- "shouldCacheIgnoreZoom": false,
- "showHyperlinkPopup": false,
- "showStats": false,
- "showWelcomeScreen": true,
- "startBoundElement": null,
- "suggestedBindings": Array [],
- "theme": "light",
- "toast": null,
- "viewBackgroundColor": "#ffffff",
- "viewModeEnabled": false,
- "width": 200,
- "zenModeEnabled": false,
- "zoom": Object {
- "value": 1,
- },
-}
-`;
-
-exports[`contextMenu element selecting 'Delete' in context menu deletes element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id0",
- "isDeleted": true,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 20,
- "x": -10,
- "y": 0,
-}
-`;
-
-exports[`contextMenu element selecting 'Delete' in context menu deletes element: [end of test] history 1`] = `
-Object {
- "recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
- "editingGroupId": null,
- "editingLinearElement": null,
- "name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
- "viewBackgroundColor": "#ffffff",
- },
- "elements": Array [],
- },
- Object {
- "appState": Object {
- "editingGroupId": null,
- "editingLinearElement": null,
- "name": "Untitled-201933152653",
- "selectedElementIds": Object {
- "id0": true,
- },
- "selectedGroupIds": Object {},
- "viewBackgroundColor": "#ffffff",
- },
- "elements": Array [
- Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 20,
- "x": -10,
- "y": 0,
- },
- ],
- },
- Object {
- "appState": Object {
- "editingGroupId": null,
- "editingLinearElement": null,
- "name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
- "viewBackgroundColor": "#ffffff",
- },
- "elements": Array [
- Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id0",
- "isDeleted": true,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 20,
- "x": -10,
- "y": 0,
- },
- ],
- },
- ],
-}
-`;
-
-exports[`contextMenu element selecting 'Delete' in context menu deletes element: [end of test] number of elements 1`] = `1`;
-
-exports[`contextMenu element selecting 'Delete' in context menu deletes element: [end of test] number of renders 1`] = `11`;
-
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
- "customType": null,
- "lastActiveToolBeforeEraser": null,
- "locked": false,
- "type": "selection",
- },
- "collaborators": Map {},
- "currentChartType": "bar",
- "currentItemBackgroundColor": "transparent",
- "currentItemEndArrowhead": "arrow",
- "currentItemFillStyle": "hachure",
- "currentItemFontFamily": 1,
- "currentItemFontSize": 20,
- "currentItemOpacity": 100,
- "currentItemRoughness": 1,
- "currentItemRoundness": "round",
- "currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
- "currentItemStrokeStyle": "solid",
- "currentItemStrokeWidth": 1,
- "currentItemTextAlign": "left",
- "cursorButton": "up",
- "draggingElement": null,
- "editingElement": null,
- "editingGroupId": null,
- "editingLinearElement": null,
- "errorMessage": null,
- "exportBackground": true,
- "exportEmbedScene": false,
- "exportScale": 1,
- "exportWithDarkMode": false,
- "fileHandle": null,
- "gridSize": null,
- "height": 100,
- "isBindingEnabled": true,
- "isLoading": false,
- "isResizing": false,
- "isRotating": false,
- "isSidebarDocked": false,
- "lastPointerDownWith": "mouse",
- "multiElement": null,
- "name": "Untitled-201933152653",
- "offsetLeft": 20,
- "offsetTop": 10,
- "openDialog": null,
- "openMenu": null,
- "openPopup": null,
- "openSidebar": null,
- "pasteDialog": Object {
- "data": null,
- "shown": false,
- },
- "penDetected": false,
- "penMode": false,
- "pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
- "resizingElement": null,
- "scrollX": 0,
- "scrollY": 0,
- "scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0_copy": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -1551,26 +1934,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1578,11 +1962,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1595,13 +1979,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0_copy",
"isDeleted": false,
@@ -1609,11 +1994,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1626,40 +2011,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1667,11 +2053,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1684,24 +2070,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0_copy": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1709,11 +2096,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1724,12 +2111,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0_copy",
"isDeleted": false,
@@ -1737,11 +2125,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1758,19 +2146,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Duplicate' in context menu duplicates element: [end of test] number of renders 1`] = `11`;
+exports[`contextMenu element > selecting 'Duplicate' in context menu duplicates element > [end of test] number of renders 1`] = `14`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -1781,28 +2171,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -1812,26 +2211,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id1": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id3": true,
},
"selectedLinearElement": null,
@@ -1841,26 +2240,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 20,
@@ -1870,11 +2270,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1887,13 +2287,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 20,
@@ -1903,11 +2304,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1920,40 +2321,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -1961,11 +2363,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1978,24 +2380,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2003,11 +2406,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2018,12 +2421,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2031,11 +2435,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2048,28 +2452,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id3": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 20,
@@ -2079,11 +2483,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2094,12 +2498,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 20,
@@ -2109,11 +2514,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2130,21 +2535,23 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Group selection' in context menu groups selected elements: [end of test] number of renders 1`] = `17`;
+exports[`contextMenu element > selecting 'Group selection' in context menu groups selected elements > [end of test] number of renders 1`] = `20`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
- "currentItemBackgroundColor": "#e64980",
+ "currentItemBackgroundColor": "#a5d8ff",
"currentItemEndArrowhead": "arrow",
"currentItemFillStyle": "cross-hatch",
"currentItemFontFamily": 1,
@@ -2153,28 +2560,37 @@ Object {
"currentItemRoughness": 2,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#c92a2a",
+ "currentItemStrokeColor": "#e03131",
"currentItemStrokeStyle": "dotted",
"currentItemStrokeWidth": 2,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -2182,24 +2598,25 @@ Object {
"offsetTop": 10,
"openDialog": null,
"openMenu": null,
- "openPopup": "backgroundColorPicker",
+ "openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -2207,28 +2624,29 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
- "toast": Object {
+ "toast": {
"message": "Copied styles.",
},
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] element 0 1`] = `
+{
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2236,11 +2654,11 @@ Object {
"locked": false,
"opacity": 60,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2253,13 +2671,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] element 1 1`] = `
+{
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2267,11 +2686,11 @@ Object {
"locked": false,
"opacity": 60,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2284,40 +2703,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2325,11 +2745,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2342,24 +2762,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2367,11 +2788,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2382,12 +2803,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2395,11 +2817,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2412,24 +2834,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2437,11 +2860,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2452,12 +2875,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2465,11 +2889,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2482,24 +2906,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2507,11 +2932,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2522,12 +2947,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2535,11 +2961,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2552,24 +2978,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2577,11 +3004,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2592,12 +3019,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2605,11 +3033,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2622,24 +3050,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2647,11 +3076,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2662,12 +3091,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2675,11 +3105,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "solid",
"strokeWidth": 2,
"type": "rectangle",
@@ -2692,24 +3122,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2717,11 +3148,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2732,12 +3163,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2745,11 +3177,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2762,24 +3194,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2787,11 +3220,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2802,12 +3235,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2815,11 +3249,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2832,24 +3266,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2857,11 +3292,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2872,12 +3307,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2885,11 +3321,11 @@ Object {
"locked": false,
"opacity": 60,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2902,24 +3338,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -2927,11 +3364,11 @@ Object {
"locked": false,
"opacity": 60,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2942,12 +3379,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#e64980",
+ "backgroundColor": "#a5d8ff",
"boundElements": null,
"fillStyle": "cross-hatch",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -2955,11 +3393,11 @@ Object {
"locked": false,
"opacity": 60,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#c92a2a",
+ "strokeColor": "#e03131",
"strokeStyle": "dotted",
"strokeWidth": 2,
"type": "rectangle",
@@ -2976,19 +3414,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Paste styles' in context menu pastes styles: [end of test] number of renders 1`] = `28`;
+exports[`contextMenu element > selecting 'Paste styles' in context menu pastes styles > [end of test] number of renders 1`] = `32`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -2999,28 +3439,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3030,22 +3479,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3053,26 +3503,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3080,11 +3531,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3097,13 +3548,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3111,11 +3563,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3128,40 +3580,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3169,11 +3622,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3186,24 +3639,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3211,11 +3665,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3226,12 +3680,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3239,11 +3694,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3256,24 +3711,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3281,11 +3737,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3296,12 +3752,13 @@ Object {
"x": 20,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3309,11 +3766,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3330,19 +3787,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Send backward' in context menu sends element backward: [end of test] number of renders 1`] = `15`;
+exports[`contextMenu element > selecting 'Send backward' in context menu sends element backward > [end of test] number of renders 1`] = `18`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -3353,28 +3812,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3384,22 +3852,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3407,26 +3876,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3434,11 +3904,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3451,13 +3921,14 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3465,11 +3936,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3482,40 +3953,41 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3523,11 +3995,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3540,24 +4012,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3565,11 +4038,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3580,12 +4053,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3593,11 +4067,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3610,24 +4084,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3635,11 +4110,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3650,12 +4125,13 @@ Object {
"x": 20,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3663,11 +4139,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3684,19 +4160,21 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Send to back' in context menu sends element to back: [end of test] number of renders 1`] = `15`;
+exports[`contextMenu element > selecting 'Send to back' in context menu sends element to back > [end of test] number of renders 1`] = `18`;
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -3707,28 +4185,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3738,26 +4225,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id1": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3765,26 +4252,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3792,11 +4280,43 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 4,
+ "versionNonce": 1014066025,
+ "width": 20,
+ "x": -10,
+ "y": 0,
+}
+`;
+
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] element 1 1`] = `
+{
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
+ "height": 20,
+ "id": "id1",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3804,76 +4324,46 @@ Object {
"version": 4,
"versionNonce": 238820263,
"width": 20,
- "x": -10,
- "y": 0,
-}
-`;
-
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 400692809,
- "width": 20,
"x": 20,
"y": 30,
}
`;
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3881,41 +4371,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 453191,
+ "versionNonce": 449462985,
"width": 20,
"x": -10,
"y": 0,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -3923,27 +4414,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 453191,
+ "versionNonce": 449462985,
"width": 20,
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -3951,45 +4443,45 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 401146281,
- "strokeColor": "#000000",
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 2019559783,
+ "versionNonce": 401146281,
"width": 20,
"x": 20,
"y": 30,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id3": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 20,
@@ -3999,11 +4491,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 3,
+ "versionNonce": 1150084233,
+ "width": 20,
+ "x": -10,
+ "y": 0,
+ },
+ {
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [
+ "id3",
+ ],
+ "height": 20,
+ "id": "id1",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4011,61 +4534,31 @@ Object {
"version": 3,
"versionNonce": 1116226695,
"width": 20,
- "x": -10,
- "y": 0,
- },
- Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id3",
- ],
- "height": 20,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 20,
"x": 20,
"y": 30,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -4073,27 +4566,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 4,
- "versionNonce": 238820263,
+ "versionNonce": 1014066025,
"width": 20,
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -4101,17 +4595,17 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 401146281,
- "strokeColor": "#000000",
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 4,
- "versionNonce": 400692809,
+ "versionNonce": 238820263,
"width": 20,
"x": 20,
"y": 30,
@@ -4122,19 +4616,297 @@ Object {
}
`;
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element selecting 'Ungroup selection' in context menu ungroups selected group: [end of test] number of renders 1`] = `18`;
+exports[`contextMenu element > selecting 'Ungroup selection' in context menu ungroups selected group > [end of test] number of renders 1`] = `21`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.cut",
+ "keyTest": [Function],
+ "name": "cut",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copy",
+ "keyTest": undefined,
+ "name": "copy",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.selectAllElementsInFrame",
+ "name": "selectAllElementsInFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.removeAllElementsFromFrame",
+ "name": "removeAllElementsFromFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "history",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyStyles",
+ "keyTest": [Function],
+ "name": "copyStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.pasteStyles",
+ "keyTest": [Function],
+ "name": "pasteStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.group",
+ "keyTest": [Function],
+ "name": "group",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.unbindText",
+ "name": "unbindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.bindText",
+ "name": "bindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.createContainerFromText",
+ "name": "wrapTextInContainer",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.ungroup",
+ "keyTest": [Function],
+ "name": "ungroup",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.addToLibrary",
+ "name": "addToLibrary",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendBackward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "sendBackward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringForward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "bringForward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendToBack",
+ "keyTest": [Function],
+ "name": "sendToBack",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringToFront",
+ "keyTest": [Function],
+ "name": "bringToFront",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.flipHorizontal",
+ "keyTest": [Function],
+ "name": "flipHorizontal",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.flipVertical",
+ "keyTest": [Function],
+ "name": "flipVertical",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": [Function],
+ "name": "toggleLinearEditor",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "hyperlink",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "action": "click",
+ "category": "hyperlink",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.duplicateSelection",
+ "keyTest": [Function],
+ "name": "duplicateSelection",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "toggleElementLock",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.delete",
+ "keyTest": [Function],
+ "name": "deleteSelectedElements",
+ "perform": [Function],
+ "trackEvent": {
+ "action": "delete",
+ "category": "element",
+ },
+ },
+ ],
+ "left": -19,
+ "top": -9,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4145,28 +4917,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4176,28 +4957,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4205,26 +4984,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4232,11 +5012,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4249,13 +5029,14 @@ Object {
}
`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -4263,11 +5044,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4280,40 +5061,41 @@ Object {
}
`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4321,11 +5103,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4338,24 +5120,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4363,11 +5146,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4378,12 +5161,13 @@ Object {
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -4391,11 +5175,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 453191,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4412,19 +5196,297 @@ Object {
}
`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element shows 'Group selection' in context menu for multiple selected elements: [end of test] number of renders 1`] = `18`;
+exports[`contextMenu element > shows 'Group selection' in context menu for multiple selected elements > [end of test] number of renders 1`] = `20`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.cut",
+ "keyTest": [Function],
+ "name": "cut",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copy",
+ "keyTest": undefined,
+ "name": "copy",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.selectAllElementsInFrame",
+ "name": "selectAllElementsInFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.removeAllElementsFromFrame",
+ "name": "removeAllElementsFromFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "history",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyStyles",
+ "keyTest": [Function],
+ "name": "copyStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.pasteStyles",
+ "keyTest": [Function],
+ "name": "pasteStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.group",
+ "keyTest": [Function],
+ "name": "group",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.unbindText",
+ "name": "unbindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.bindText",
+ "name": "bindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.createContainerFromText",
+ "name": "wrapTextInContainer",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.ungroup",
+ "keyTest": [Function],
+ "name": "ungroup",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.addToLibrary",
+ "name": "addToLibrary",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendBackward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "sendBackward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringForward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "bringForward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendToBack",
+ "keyTest": [Function],
+ "name": "sendToBack",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringToFront",
+ "keyTest": [Function],
+ "name": "bringToFront",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.flipHorizontal",
+ "keyTest": [Function],
+ "name": "flipHorizontal",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.flipVertical",
+ "keyTest": [Function],
+ "name": "flipVertical",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": [Function],
+ "name": "toggleLinearEditor",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "hyperlink",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "action": "click",
+ "category": "hyperlink",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.duplicateSelection",
+ "keyTest": [Function],
+ "name": "duplicateSelection",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "toggleElementLock",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.delete",
+ "keyTest": [Function],
+ "name": "deleteSelectedElements",
+ "perform": [Function],
+ "trackEvent": {
+ "action": "delete",
+ "category": "element",
+ },
+ },
+ ],
+ "left": -19,
+ "top": -9,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4435,28 +5497,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4466,28 +5537,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id4": true,
},
"selectedLinearElement": null,
@@ -4497,26 +5566,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -4526,30 +5596,31 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 3,
- "versionNonce": 1014066025,
+ "versionNonce": 1116226695,
"width": 10,
"x": -10,
"y": 0,
}
`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -4559,57 +5630,58 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 401146281,
- "strokeColor": "#000000",
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 3,
- "versionNonce": 238820263,
+ "versionNonce": 1014066025,
"width": 10,
"x": 10,
"y": 0,
}
`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4617,41 +5689,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 453191,
+ "versionNonce": 449462985,
"width": 10,
"x": -10,
"y": 0,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4659,27 +5732,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 453191,
+ "versionNonce": 449462985,
"width": 10,
"x": -10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -4687,46 +5761,45 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 401146281,
- "strokeColor": "#000000",
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 2019559783,
+ "versionNonce": 401146281,
"width": 10,
"x": 10,
"y": 0,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -4736,11 +5809,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 449462985,
- "strokeColor": "#000000",
+ "seed": 1278240551,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 3,
+ "versionNonce": 1116226695,
+ "width": 10,
+ "x": -10,
+ "y": 0,
+ },
+ {
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [
+ "id4",
+ ],
+ "height": 10,
+ "id": "id1",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 453191,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4748,36 +5852,6 @@ Object {
"version": 3,
"versionNonce": 1014066025,
"width": 10,
- "x": -10,
- "y": 0,
- },
- Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 238820263,
- "width": 10,
"x": 10,
"y": 0,
},
@@ -4787,19 +5861,136 @@ Object {
}
`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] number of elements 1`] = `2`;
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] number of elements 1`] = `2`;
-exports[`contextMenu element shows 'Ungroup selection' in context menu for group inside selected elements: [end of test] number of renders 1`] = `19`;
+exports[`contextMenu element > shows 'Ungroup selection' in context menu for group inside selected elements > [end of test] number of renders 1`] = `21`;
-exports[`contextMenu element shows context menu for canvas: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > shows context menu for canvas > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.selectAll",
+ "keyTest": [Function],
+ "name": "selectAll",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.elementLock.unlockAll",
+ "name": "unlockAllElements",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ "viewMode": false,
+ },
+ "separator",
+ {
+ "checked": [Function],
+ "contextItemLabel": "labels.showGrid",
+ "keyTest": [Function],
+ "name": "gridMode",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ "predicate": [Function],
+ },
+ "viewMode": true,
+ },
+ {
+ "checked": [Function],
+ "contextItemLabel": "buttons.zenMode",
+ "keyTest": [Function],
+ "name": "zenMode",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ "predicate": [Function],
+ },
+ "viewMode": true,
+ },
+ {
+ "checked": [Function],
+ "contextItemLabel": "labels.viewMode",
+ "keyTest": [Function],
+ "name": "viewMode",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ "predicate": [Function],
+ },
+ "viewMode": true,
+ },
+ {
+ "checked": [Function],
+ "contextItemLabel": "stats.title",
+ "keyTest": [Function],
+ "name": "stats",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "menu",
+ },
+ "viewMode": true,
+ },
+ ],
+ "left": -19,
+ "top": -9,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4810,28 +6001,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4841,20 +6041,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4862,52 +6063,330 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element shows context menu for canvas: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > shows context menu for canvas > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`contextMenu element shows context menu for canvas: [end of test] number of elements 1`] = `0`;
+exports[`contextMenu element > shows context menu for canvas > [end of test] number of elements 1`] = `0`;
-exports[`contextMenu element shows context menu for canvas: [end of test] number of renders 1`] = `4`;
+exports[`contextMenu element > shows context menu for canvas > [end of test] number of renders 1`] = `6`;
-exports[`contextMenu element shows context menu for element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > shows context menu for element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.cut",
+ "keyTest": [Function],
+ "name": "cut",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copy",
+ "keyTest": undefined,
+ "name": "copy",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.selectAllElementsInFrame",
+ "name": "selectAllElementsInFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.removeAllElementsFromFrame",
+ "name": "removeAllElementsFromFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "history",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyStyles",
+ "keyTest": [Function],
+ "name": "copyStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.pasteStyles",
+ "keyTest": [Function],
+ "name": "pasteStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.group",
+ "keyTest": [Function],
+ "name": "group",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.unbindText",
+ "name": "unbindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.bindText",
+ "name": "bindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.createContainerFromText",
+ "name": "wrapTextInContainer",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.ungroup",
+ "keyTest": [Function],
+ "name": "ungroup",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.addToLibrary",
+ "name": "addToLibrary",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendBackward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "sendBackward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringForward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "bringForward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendToBack",
+ "keyTest": [Function],
+ "name": "sendToBack",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringToFront",
+ "keyTest": [Function],
+ "name": "bringToFront",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.flipHorizontal",
+ "keyTest": [Function],
+ "name": "flipHorizontal",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.flipVertical",
+ "keyTest": [Function],
+ "name": "flipVertical",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": [Function],
+ "name": "toggleLinearEditor",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "hyperlink",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "action": "click",
+ "category": "hyperlink",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.duplicateSelection",
+ "keyTest": [Function],
+ "name": "duplicateSelection",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "toggleElementLock",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.delete",
+ "keyTest": [Function],
+ "name": "deleteSelectedElements",
+ "perform": [Function],
+ "trackEvent": {
+ "action": "delete",
+ "category": "element",
+ },
+ },
+ ],
+ "left": -19,
+ "top": -9,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4918,28 +6397,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4949,22 +6437,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4972,28 +6461,306 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] appState 2`] = `
-Object {
- "activeTool": Object {
+exports[`contextMenu element > shows context menu for element > [end of test] appState 2`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": {
+ "items": [
+ {
+ "contextItemLabel": "labels.cut",
+ "keyTest": [Function],
+ "name": "cut",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copy",
+ "keyTest": undefined,
+ "name": "copy",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.paste",
+ "keyTest": undefined,
+ "name": "paste",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.selectAllElementsInFrame",
+ "name": "selectAllElementsInFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "canvas",
+ },
+ },
+ {
+ "contextItemLabel": "labels.removeAllElementsFromFrame",
+ "name": "removeAllElementsFromFrame",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "history",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyAsPng",
+ "keyTest": [Function],
+ "name": "copyAsPng",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyAsSvg",
+ "name": "copyAsSvg",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.copyText",
+ "name": "copyText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.copyStyles",
+ "keyTest": [Function],
+ "name": "copyStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.pasteStyles",
+ "keyTest": [Function],
+ "name": "pasteStyles",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.group",
+ "keyTest": [Function],
+ "name": "group",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.unbindText",
+ "name": "unbindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.bindText",
+ "name": "bindText",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.createContainerFromText",
+ "name": "wrapTextInContainer",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.ungroup",
+ "keyTest": [Function],
+ "name": "ungroup",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.addToLibrary",
+ "name": "addToLibrary",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendBackward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "sendBackward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringForward",
+ "keyPriority": 40,
+ "keyTest": [Function],
+ "name": "bringForward",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.sendToBack",
+ "keyTest": [Function],
+ "name": "sendToBack",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.bringToFront",
+ "keyTest": [Function],
+ "name": "bringToFront",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": "labels.flipHorizontal",
+ "keyTest": [Function],
+ "name": "flipHorizontal",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": "labels.flipVertical",
+ "keyTest": [Function],
+ "name": "flipVertical",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "contextItemLabel": [Function],
+ "name": "toggleLinearEditor",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "hyperlink",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "action": "click",
+ "category": "hyperlink",
+ },
+ },
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.duplicateSelection",
+ "keyTest": [Function],
+ "name": "duplicateSelection",
+ "perform": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ {
+ "contextItemLabel": [Function],
+ "keyTest": [Function],
+ "name": "toggleElementLock",
+ "perform": [Function],
+ "predicate": [Function],
+ "trackEvent": {
+ "category": "element",
+ },
+ },
+ "separator",
+ {
+ "PanelComponent": [Function],
+ "contextItemLabel": "labels.delete",
+ "keyTest": [Function],
+ "name": "deleteSelectedElements",
+ "perform": [Function],
+ "trackEvent": {
+ "action": "delete",
+ "category": "element",
+ },
+ },
+ ],
+ "left": 80,
+ "top": 90,
+ },
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -5004,28 +6771,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 100,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -5035,22 +6811,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -5058,26 +6835,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 200,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] element 0 1`] = `
-Object {
+exports[`contextMenu element > shows context menu for element > [end of test] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -5085,11 +6863,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5102,13 +6880,14 @@ Object {
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] element 0 2`] = `
-Object {
+exports[`contextMenu element > shows context menu for element > [end of test] element 0 2`] = `
+{
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id0",
"isDeleted": false,
@@ -5116,11 +6895,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5133,13 +6912,14 @@ Object {
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] element 1 1`] = `
-Object {
+exports[`contextMenu element > shows context menu for element > [end of test] element 1 1`] = `
+{
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id1",
"isDeleted": false,
@@ -5147,11 +6927,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5164,40 +6944,41 @@ Object {
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] history 1`] = `
-Object {
+exports[`contextMenu element > shows context menu for element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id0",
"isDeleted": false,
@@ -5205,11 +6986,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5226,30 +7007,30 @@ Object {
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] history 2`] = `
-Object {
+exports[`contextMenu element > shows context menu for element > [end of test] history 2`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`contextMenu element shows context menu for element: [end of test] number of elements 1`] = `1`;
+exports[`contextMenu element > shows context menu for element > [end of test] number of elements 1`] = `1`;
-exports[`contextMenu element shows context menu for element: [end of test] number of elements 2`] = `2`;
+exports[`contextMenu element > shows context menu for element > [end of test] number of elements 2`] = `2`;
-exports[`contextMenu element shows context menu for element: [end of test] number of renders 1`] = `10`;
+exports[`contextMenu element > shows context menu for element > [end of test] number of renders 1`] = `12`;
-exports[`contextMenu element shows context menu for element: [end of test] number of renders 2`] = `7`;
+exports[`contextMenu element > shows context menu for element > [end of test] number of renders 2`] = `11`;
diff --git a/src/tests/__snapshots__/dragCreate.test.tsx.snap b/src/tests/__snapshots__/dragCreate.test.tsx.snap
index ffcf57b0d..3f527ded1 100644
--- a/src/tests/__snapshots__/dragCreate.test.tsx.snap
+++ b/src/tests/__snapshots__/dragCreate.test.tsx.snap
@@ -1,16 +1,17 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`Test dragCreate add element to the scene when pointer dragging long enough arrow 1`] = `1`;
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > arrow 1`] = `1`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough arrow 2`] = `
-Object {
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > arrow 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -18,24 +19,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
30,
50,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -48,15 +49,16 @@ Object {
}
`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough diamond 1`] = `1`;
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > diamond 1`] = `1`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough diamond 2`] = `
-Object {
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > diamond 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -64,11 +66,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -81,15 +83,16 @@ Object {
}
`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough ellipse 1`] = `1`;
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > ellipse 1`] = `1`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough ellipse 2`] = `
-Object {
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > ellipse 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -97,11 +100,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -114,15 +117,16 @@ Object {
}
`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough line 1`] = `
-Object {
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > line 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -130,24 +134,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
30,
50,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -160,15 +164,16 @@ Object {
}
`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough rectangle 1`] = `1`;
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > rectangle 1`] = `1`;
-exports[`Test dragCreate add element to the scene when pointer dragging long enough rectangle 2`] = `
-Object {
+exports[`Test dragCreate > add element to the scene when pointer dragging long enough > rectangle 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -176,11 +181,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
diff --git a/src/tests/__snapshots__/export.test.tsx.snap b/src/tests/__snapshots__/export.test.tsx.snap
index f292d199a..8eb93c74e 100644
--- a/src/tests/__snapshots__/export.test.tsx.snap
+++ b/src/tests/__snapshots__/export.test.tsx.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`export exporting svg containing transformed images: svg export output 1`] = `
+exports[`export > exporting svg containing transformed images > svg export output 1`] = `
"
@@ -15,6 +15,7 @@ exports[`export exporting svg containing transformed images: svg export output 1
src: url(\\"https://excalidraw.com/Cascadia.woff2\\");
}
+
- "
+ "
`;
diff --git a/src/tests/__snapshots__/linearElementEditor.test.tsx.snap b/src/tests/__snapshots__/linearElementEditor.test.tsx.snap
new file mode 100644
index 000000000..190f4b92f
--- /dev/null
+++ b/src/tests/__snapshots__/linearElementEditor.test.tsx.snap
@@ -0,0 +1,12 @@
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
+
+exports[`Test Linear Elements > Test bound text element > should match styles for text editor 1`] = `
+
+`;
diff --git a/src/tests/__snapshots__/move.test.tsx.snap b/src/tests/__snapshots__/move.test.tsx.snap
index 7c0eed29b..e7b73d67a 100644
--- a/src/tests/__snapshots__/move.test.tsx.snap
+++ b/src/tests/__snapshots__/move.test.tsx.snap
@@ -1,12 +1,13 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`duplicate element on move when ALT is clicked rectangle 1`] = `
-Object {
+exports[`duplicate element on move when ALT is clicked > rectangle 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0_copy",
"isDeleted": false,
@@ -14,11 +15,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -31,13 +32,14 @@ Object {
}
`;
-exports[`duplicate element on move when ALT is clicked rectangle 2`] = `
-Object {
+exports[`duplicate element on move when ALT is clicked > rectangle 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -45,11 +47,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -62,13 +64,14 @@ Object {
}
`;
-exports[`move element rectangle 1`] = `
-Object {
+exports[`move element > rectangle 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -76,11 +79,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -93,18 +96,19 @@ Object {
}
`;
-exports[`move element rectangles with binding arrow 1`] = `
-Object {
+exports[`move element > rectangles with binding arrow 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [
- Object {
+ "boundElements": [
+ {
"id": "id2",
"type": "arrow",
},
],
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id0",
"isDeleted": false,
@@ -112,11 +116,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -129,18 +133,19 @@ Object {
}
`;
-exports[`move element rectangles with binding arrow 2`] = `
-Object {
+exports[`move element > rectangles with binding arrow 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [
- Object {
+ "boundElements": [
+ {
"id": "id2",
"type": "arrow",
},
],
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 300,
"id": "id1",
"isDeleted": false,
@@ -148,11 +153,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -165,19 +170,20 @@ Object {
}
`;
-exports[`move element rectangles with binding arrow 3`] = `
-Object {
+exports[`move element > rectangles with binding arrow 3`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
- "endBinding": Object {
+ "endBinding": {
"elementId": "id1",
"focus": -0.46666666666666673,
"gap": 10,
},
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 81.48231043525051,
"id": "id2",
"isDeleted": false,
@@ -185,28 +191,28 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
81,
81.48231043525051,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
"startArrowhead": null,
- "startBinding": Object {
+ "startBinding": {
"elementId": "id0",
"focus": -0.6000000000000001,
"gap": 10,
},
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
diff --git a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap
index 03ef0d26b..27a6647f7 100644
--- a/src/tests/__snapshots__/multiPointCreate.test.tsx.snap
+++ b/src/tests/__snapshots__/multiPointCreate.test.tsx.snap
@@ -1,46 +1,47 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`multi point mode in linear elements arrow 1`] = `
-Object {
+exports[`multi point mode in linear elements > arrow 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 110,
"id": "id0",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
70,
110,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
20,
30,
],
- Array [
+ [
70,
110,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -53,47 +54,48 @@ Object {
}
`;
-exports[`multi point mode in linear elements line 1`] = `
-Object {
+exports[`multi point mode in linear elements > line 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 110,
"id": "id0",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
70,
110,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
20,
30,
],
- Array [
+ [
70,
110,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
diff --git a/src/tests/__snapshots__/regressionTests.test.tsx.snap b/src/tests/__snapshots__/regressionTests.test.tsx.snap
index ca181ddbf..8c8dd713b 100644
--- a/src/tests/__snapshots__/regressionTests.test.tsx.snap
+++ b/src/tests/__snapshots__/regressionTests.test.tsx.snap
@@ -1,14 +1,16 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -19,28 +21,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -50,31 +61,28 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id4": true,
- "id6": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id7": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id5": true,
},
"selectedLinearElement": null,
@@ -84,150 +92,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 0,
- "y": 30,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- ],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 238820263,
- "width": 10,
- "x": 0,
- "y": 60,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] history 1`] = `
-Object {
+exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -235,11 +147,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -252,24 +164,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -277,11 +190,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -292,12 +205,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -305,11 +219,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -322,24 +236,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -347,11 +262,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -362,12 +277,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -375,11 +291,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -390,12 +306,13 @@ Object {
"x": 0,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -403,11 +320,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -420,29 +337,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id3": true,
- "id4": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id5": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -450,11 +366,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -465,12 +381,13 @@ Object {
"x": 0,
"y": 30,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
],
"height": 10,
@@ -480,11 +397,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -495,12 +412,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
],
"height": 10,
@@ -510,11 +428,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -531,19 +449,21 @@ Object {
}
`;
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] number of elements 1`] = `3`;
+exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected > [end of test] number of elements 1`] = `0`;
-exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected: [end of test] number of renders 1`] = `28`;
+exports[`given element A and group of elements B and given both are selected when user clicks on B, on pointer up only elements from B should be selected > [end of test] number of renders 1`] = `28`;
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -554,28 +474,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -585,39 +514,31 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id5": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": false,
+ "selectedElementIds": {
"id1": true,
- "id2": false,
- "id3": true,
- "id5": true,
- "id6": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
"id4": false,
- "id5": true,
},
"selectedLinearElement": null,
"selectionElement": null,
@@ -626,150 +547,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 100,
- "x": 110,
- "y": 110,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 100,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1116226695,
- "width": 100,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 100,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 100,
- "x": 220,
- "y": 220,
-}
-`;
-
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] history 1`] = `
-Object {
+exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id0",
"isDeleted": false,
@@ -777,11 +602,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -794,24 +619,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id0",
"isDeleted": false,
@@ -819,11 +645,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -834,12 +660,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -847,11 +674,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -864,24 +691,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id0",
"isDeleted": false,
@@ -889,11 +717,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -904,12 +732,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -917,11 +746,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -932,12 +761,13 @@ Object {
"x": 110,
"y": 110,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id2",
"isDeleted": false,
@@ -945,11 +775,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -962,28 +792,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -991,11 +821,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1006,12 +836,13 @@ Object {
"x": 110,
"y": 110,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 100,
@@ -1021,11 +852,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1036,12 +867,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 100,
@@ -1051,11 +883,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1072,19 +904,21 @@ Object {
}
`;
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] number of elements 1`] = `3`;
+exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected > [end of test] number of elements 1`] = `0`;
-exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected: [end of test] number of renders 1`] = `24`;
+exports[`given element A and group of elements B and given both are selected when user shift-clicks on B, on pointer up only element A should be selected > [end of test] number of renders 1`] = `24`;
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > Cmd/Ctrl-click exclusively select element under pointer > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -1095,28 +929,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": "id10",
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": false,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -1126,23 +969,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id12": true,
+ "selectedElementIds": {
"id7": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -1150,154 +993,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- "id10",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 493213705,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- "id10",
- ],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 915032327,
- "width": 10,
- "x": 30,
- "y": 0,
-}
-`;
-
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id10",
- ],
- "height": 10,
- "id": "id7",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 400692809,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 81784553,
- "width": 10,
- "x": 60,
- "y": 0,
-}
-`;
-
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] history 1`] = `
-Object {
+exports[`regression tests > Cmd/Ctrl-click exclusively select element under pointer > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -1305,11 +1048,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1322,24 +1065,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -1347,11 +1091,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1362,12 +1106,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -1375,11 +1120,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1392,29 +1137,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1424,11 +1168,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1439,12 +1183,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1454,11 +1199,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1471,25 +1216,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": "id4",
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1499,11 +1244,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1514,12 +1259,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1529,11 +1275,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1546,24 +1292,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id7": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1573,11 +1320,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1588,12 +1335,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -1603,11 +1351,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1618,12 +1366,13 @@ Object {
"x": 30,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id7",
"isDeleted": false,
@@ -1631,11 +1380,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1648,30 +1397,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id7": true,
- "id8": true,
- "id9": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id10": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1682,11 +1430,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1697,12 +1445,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1713,11 +1462,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1728,12 +1477,13 @@ Object {
"x": 30,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id10",
],
"height": 10,
@@ -1743,11 +1493,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1760,25 +1510,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": "id4",
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id11": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1789,11 +1539,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1804,12 +1554,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1820,11 +1571,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1835,12 +1586,13 @@ Object {
"x": 30,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id10",
],
"height": 10,
@@ -1850,11 +1602,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1867,25 +1619,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": "id10",
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
- "id12": true,
+ "selectedElementIds": {
"id7": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1896,11 +1648,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1911,12 +1663,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -1927,11 +1680,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1942,12 +1695,13 @@ Object {
"x": 30,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id10",
],
"height": 10,
@@ -1957,11 +1711,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -1978,19 +1732,21 @@ Object {
}
`;
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > Cmd/Ctrl-click exclusively select element under pointer > [end of test] number of elements 1`] = `0`;
-exports[`regression tests Cmd/Ctrl-click exclusively select element under pointer: [end of test] number of renders 1`] = `43`;
+exports[`regression tests > Cmd/Ctrl-click exclusively select element under pointer > [end of test] number of renders 1`] = `43`;
-exports[`regression tests Drags selected element when hitting only bounding box and keeps element selected: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > Drags selected element when hitting only bounding box and keeps element selected > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -2001,28 +1757,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -2032,25 +1797,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -2058,84 +1823,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests Drags selected element when hitting only bounding box and keeps element selected: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 3,
- "versionNonce": 453191,
- "width": 10,
- "x": 25,
- "y": 25,
-}
-`;
-
-exports[`regression tests Drags selected element when hitting only bounding box and keeps element selected: [end of test] history 1`] = `
-Object {
+exports[`regression tests > Drags selected element when hitting only bounding box and keeps element selected > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2143,11 +1878,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -2160,25 +1895,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2186,11 +1921,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -2207,19 +1942,21 @@ Object {
}
`;
-exports[`regression tests Drags selected element when hitting only bounding box and keeps element selected: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > Drags selected element when hitting only bounding box and keeps element selected > [end of test] number of elements 1`] = `0`;
-exports[`regression tests Drags selected element when hitting only bounding box and keeps element selected: [end of test] number of renders 1`] = `12`;
+exports[`regression tests > Drags selected element when hitting only bounding box and keeps element selected > [end of test] number of renders 1`] = `12`;
-exports[`regression tests adjusts z order when grouping: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > adjusts z order when grouping > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -2230,28 +1967,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -2261,28 +2007,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id3": true,
- "id4": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id5": true,
},
"selectedLinearElement": null,
@@ -2292,150 +2036,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests adjusts z order when grouping: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests adjusts z order when grouping: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests adjusts z order when grouping: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- ],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 238820263,
- "width": 10,
- "x": 50,
- "y": 10,
-}
-`;
-
-exports[`regression tests adjusts z order when grouping: [end of test] history 1`] = `
-Object {
+exports[`regression tests > adjusts z order when grouping > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2443,11 +2091,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2460,24 +2108,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2485,11 +2134,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2500,12 +2149,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -2513,11 +2163,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2530,24 +2180,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2555,11 +2206,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2570,12 +2221,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -2583,11 +2235,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2598,12 +2250,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -2611,11 +2264,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2628,29 +2281,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id3": true,
- "id4": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id5": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -2658,11 +2310,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2673,12 +2325,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
],
"height": 10,
@@ -2688,11 +2341,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2703,12 +2356,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
],
"height": 10,
@@ -2718,11 +2372,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2739,19 +2393,21 @@ Object {
}
`;
-exports[`regression tests adjusts z order when grouping: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > adjusts z order when grouping > [end of test] number of elements 1`] = `0`;
-exports[`regression tests adjusts z order when grouping: [end of test] number of renders 1`] = `22`;
+exports[`regression tests > adjusts z order when grouping > [end of test] number of renders 1`] = `22`;
-exports[`regression tests alt-drag duplicates an element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > alt-drag duplicates an element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -2762,28 +2418,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -2793,25 +2458,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -2819,115 +2484,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests alt-drag duplicates an element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0_copy",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 2019559783,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests alt-drag duplicates an element: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 453191,
- "width": 10,
- "x": 20,
- "y": 20,
-}
-`;
-
-exports[`regression tests alt-drag duplicates an element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > alt-drag duplicates an element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -2935,11 +2539,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2952,25 +2556,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0_copy",
"isDeleted": false,
@@ -2978,11 +2582,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -2993,12 +2597,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -3006,11 +2611,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3027,19 +2632,21 @@ Object {
}
`;
-exports[`regression tests alt-drag duplicates an element: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > alt-drag duplicates an element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests alt-drag duplicates an element: [end of test] number of renders 1`] = `12`;
+exports[`regression tests > alt-drag duplicates an element > [end of test] number of renders 1`] = `12`;
-exports[`regression tests arrow keys: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > arrow keys > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -3050,28 +2657,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3081,22 +2697,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3104,84 +2721,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests arrow keys: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 8,
- "versionNonce": 1116226695,
- "width": 10,
- "x": 9,
- "y": 9,
-}
-`;
-
-exports[`regression tests arrow keys: [end of test] history 1`] = `
-Object {
+exports[`regression tests > arrow keys > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -3189,11 +2776,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3210,19 +2797,21 @@ Object {
}
`;
-exports[`regression tests arrow keys: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > arrow keys > [end of test] number of elements 1`] = `0`;
-exports[`regression tests arrow keys: [end of test] number of renders 1`] = `21`;
+exports[`regression tests > arrow keys > [end of test] number of renders 1`] = `21`;
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > can drag element that covers another element, while another elem is selected > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -3233,28 +2822,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3264,25 +2862,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3290,146 +2888,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 200,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 1278240551,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 449462985,
- "width": 200,
- "x": 100,
- "y": 100,
-}
-`;
-
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 200,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 453191,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 200,
- "x": 300,
- "y": 300,
-}
-`;
-
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 350,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 2019559783,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 1150084233,
- "width": 350,
- "x": 300,
- "y": 300,
-}
-`;
-
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] history 1`] = `
-Object {
+exports[`regression tests > can drag element that covers another element, while another elem is selected > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id0",
"isDeleted": false,
@@ -3437,41 +2943,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 1278240551,
- "strokeColor": "#000000",
+ "seed": 337897,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 449462985,
+ "versionNonce": 1278240551,
"width": 200,
"x": 100,
"y": 100,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id0",
"isDeleted": false,
@@ -3479,27 +2986,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 1278240551,
- "strokeColor": "#000000",
+ "seed": 337897,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 449462985,
+ "versionNonce": 1278240551,
"width": 200,
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id1",
"isDeleted": false,
@@ -3507,41 +3015,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 453191,
- "strokeColor": "#000000",
+ "seed": 449462985,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 401146281,
+ "versionNonce": 453191,
"width": 200,
"x": 100,
"y": 100,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id0",
"isDeleted": false,
@@ -3549,27 +3058,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 1278240551,
- "strokeColor": "#000000",
+ "seed": 337897,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 449462985,
+ "versionNonce": 1278240551,
"width": 200,
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id1",
"isDeleted": false,
@@ -3577,27 +3087,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 453191,
- "strokeColor": "#000000",
+ "seed": 449462985,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 401146281,
+ "versionNonce": 453191,
"width": 200,
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 350,
"id": "id2",
"isDeleted": false,
@@ -3605,42 +3116,42 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
- "seed": 2019559783,
- "strokeColor": "#000000",
+ "seed": 401146281,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
"updated": 1,
"version": 2,
- "versionNonce": 1150084233,
+ "versionNonce": 2019559783,
"width": 350,
"x": 300,
"y": 300,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id0",
"isDeleted": false,
@@ -3648,27 +3159,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 1278240551,
- "strokeColor": "#000000",
+ "seed": 337897,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 2,
- "versionNonce": 449462985,
+ "versionNonce": 1278240551,
"width": 200,
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 200,
"id": "id1",
"isDeleted": false,
@@ -3676,27 +3188,28 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
- "seed": 453191,
- "strokeColor": "#000000",
+ "seed": 449462985,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 3,
- "versionNonce": 1014066025,
+ "versionNonce": 1116226695,
"width": 200,
"x": 300,
"y": 300,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 350,
"id": "id2",
"isDeleted": false,
@@ -3704,17 +3217,17 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
- "seed": 2019559783,
- "strokeColor": "#000000",
+ "seed": 401146281,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
"updated": 1,
"version": 2,
- "versionNonce": 1150084233,
+ "versionNonce": 2019559783,
"width": 350,
"x": 300,
"y": 300,
@@ -3725,21 +3238,23 @@ Object {
}
`;
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > can drag element that covers another element, while another elem is selected > [end of test] number of elements 1`] = `0`;
-exports[`regression tests can drag element that covers another element, while another elem is selected: [end of test] number of renders 1`] = `20`;
+exports[`regression tests > can drag element that covers another element, while another elem is selected > [end of test] number of renders 1`] = `20`;
-exports[`regression tests change the properties of a shape: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > change the properties of a shape > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
- "currentItemBackgroundColor": "#fa5252",
+ "currentItemBackgroundColor": "#ffc9c9",
"currentItemEndArrowhead": "arrow",
"currentItemFillStyle": "hachure",
"currentItemFontFamily": 1,
@@ -3748,28 +3263,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#5f3dc4",
+ "currentItemStrokeColor": "#1971c2",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -3777,24 +3301,25 @@ Object {
"offsetTop": 0,
"openDialog": null,
"openMenu": null,
- "openPopup": "strokeColorPicker",
+ "openPopup": "elementStroke",
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -3802,84 +3327,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests change the properties of a shape: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "#fa5252",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#5f3dc4",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 453191,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests change the properties of a shape: [end of test] history 1`] = `
-Object {
+exports[`regression tests > change the properties of a shape > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -3887,11 +3382,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3904,24 +3399,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffec99",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -3929,11 +3425,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3946,24 +3442,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffc9c9",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -3971,11 +3468,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#5f3dc4",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -3988,23 +3485,68 @@ Object {
},
],
},
+ {
+ "appState": {
+ "editingGroupId": null,
+ "editingLinearElement": null,
+ "name": "Untitled-201933152653",
+ "selectedElementIds": {
+ "id0": true,
+ },
+ "selectedGroupIds": {},
+ "viewBackgroundColor": "#ffffff",
+ },
+ "elements": [
+ {
+ "angle": 0,
+ "backgroundColor": "#ffc9c9",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
+ "height": 10,
+ "id": "id0",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 337897,
+ "strokeColor": "#1971c2",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 5,
+ "versionNonce": 401146281,
+ "width": 10,
+ "x": 10,
+ "y": 10,
+ },
+ ],
+ },
],
}
`;
-exports[`regression tests change the properties of a shape: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > change the properties of a shape > [end of test] number of elements 1`] = `0`;
-exports[`regression tests change the properties of a shape: [end of test] number of renders 1`] = `15`;
+exports[`regression tests > change the properties of a shape > [end of test] number of renders 1`] = `14`;
-exports[`regression tests click on an element and drag it: [dragged] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > click on an element and drag it > [dragged] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4015,28 +3557,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4046,25 +3597,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4072,26 +3623,27 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests click on an element and drag it: [dragged] element 0 1`] = `
-Object {
+exports[`regression tests > click on an element and drag it > [dragged] element 0 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4099,11 +3651,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4116,40 +3668,41 @@ Object {
}
`;
-exports[`regression tests click on an element and drag it: [dragged] history 1`] = `
-Object {
+exports[`regression tests > click on an element and drag it > [dragged] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4157,11 +3710,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4174,25 +3727,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4200,11 +3753,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4221,19 +3774,21 @@ Object {
}
`;
-exports[`regression tests click on an element and drag it: [dragged] number of elements 1`] = `1`;
+exports[`regression tests > click on an element and drag it > [dragged] number of elements 1`] = `1`;
-exports[`regression tests click on an element and drag it: [dragged] number of renders 1`] = `12`;
+exports[`regression tests > click on an element and drag it > [dragged] number of renders 1`] = `12`;
-exports[`regression tests click on an element and drag it: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > click on an element and drag it > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4244,28 +3799,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4275,27 +3839,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id1": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4303,84 +3865,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests click on an element and drag it: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 2019559783,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests click on an element and drag it: [end of test] history 1`] = `
-Object {
+exports[`regression tests > click on an element and drag it > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4388,11 +3920,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4405,25 +3937,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4431,11 +3963,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4448,26 +3980,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id1": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4475,11 +4006,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4496,19 +4027,21 @@ Object {
}
`;
-exports[`regression tests click on an element and drag it: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > click on an element and drag it > [end of test] number of elements 1`] = `0`;
-exports[`regression tests click on an element and drag it: [end of test] number of renders 1`] = `15`;
+exports[`regression tests > click on an element and drag it > [end of test] number of renders 1`] = `15`;
-exports[`regression tests click to select a shape: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > click to select a shape > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4519,28 +4052,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4550,25 +4092,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id1": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4576,115 +4118,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests click to select a shape: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests click to select a shape: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests click to select a shape: [end of test] history 1`] = `
-Object {
+exports[`regression tests > click to select a shape > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4692,11 +4173,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4709,24 +4190,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -4734,11 +4216,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4749,12 +4231,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -4762,11 +4245,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -4783,19 +4266,21 @@ Object {
}
`;
-exports[`regression tests click to select a shape: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > click to select a shape > [end of test] number of elements 1`] = `0`;
-exports[`regression tests click to select a shape: [end of test] number of renders 1`] = `15`;
+exports[`regression tests > click to select a shape > [end of test] number of renders 1`] = `15`;
-exports[`regression tests click-drag to select a group: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > click-drag to select a group > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -4806,28 +4291,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -4837,26 +4331,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -4864,146 +4358,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests click-drag to select a group: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests click-drag to select a group: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests click-drag to select a group: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 2019559783,
- "width": 10,
- "x": 50,
- "y": 10,
-}
-`;
-
-exports[`regression tests click-drag to select a group: [end of test] history 1`] = `
-Object {
+exports[`regression tests > click-drag to select a group > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5011,11 +4413,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5028,24 +4430,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5053,11 +4456,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5068,12 +4471,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -5081,11 +4485,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5098,24 +4502,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5123,11 +4528,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5138,12 +4543,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -5151,11 +4557,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5166,12 +4572,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -5179,11 +4586,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5200,19 +4607,21 @@ Object {
}
`;
-exports[`regression tests click-drag to select a group: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > click-drag to select a group > [end of test] number of elements 1`] = `0`;
-exports[`regression tests click-drag to select a group: [end of test] number of renders 1`] = `21`;
+exports[`regression tests > click-drag to select a group > [end of test] number of renders 1`] = `21`;
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > deselects group of selected elements on pointer down when pointer doesn't hit any element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -5223,17 +4632,19 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
- "draggingElement": Object {
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id3",
"isDeleted": false,
@@ -5241,11 +4652,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 2019559783,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -5257,21 +4668,29 @@ Object {
"y": 500,
},
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -5281,31 +4700,32 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
- "selectionElement": Object {
+ "selectionElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id3",
"isDeleted": false,
@@ -5313,11 +4733,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 2019559783,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -5333,115 +4753,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 110,
- "y": 110,
-}
-`;
-
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > deselects group of selected elements on pointer down when pointer doesn't hit any element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5449,11 +4808,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5466,24 +4825,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5491,11 +4851,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5506,12 +4866,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -5519,11 +4880,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -5540,19 +4901,21 @@ Object {
}
`;
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > deselects group of selected elements on pointer down when pointer doesn't hit any element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests deselects group of selected elements on pointer down when pointer doesn't hit any element: [end of test] number of renders 1`] = `16`;
+exports[`regression tests > deselects group of selected elements on pointer down when pointer doesn't hit any element > [end of test] number of renders 1`] = `16`;
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -5563,17 +4926,19 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
- "draggingElement": Object {
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id3",
"isDeleted": false,
@@ -5581,11 +4946,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 2019559783,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -5597,21 +4962,29 @@ Object {
"y": 50,
},
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -5621,24 +4994,24 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -5646,115 +5019,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 110,
- "y": 110,
-}
-`;
-
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5762,11 +5074,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5779,24 +5091,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -5804,11 +5117,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -5819,12 +5132,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -5832,11 +5146,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -5853,19 +5167,21 @@ Object {
}
`;
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element: [end of test] number of renders 1`] = `17`;
+exports[`regression tests > deselects group of selected elements on pointer up when pointer hits common bounding box without hitting any element > [end of test] number of renders 1`] = `17`;
-exports[`regression tests deselects selected element on pointer down when pointer doesn't hit any element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > deselects selected element on pointer down when pointer doesn't hit any element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -5876,17 +5192,19 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
- "draggingElement": Object {
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id1",
"isDeleted": false,
@@ -5894,11 +5212,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -5910,21 +5228,29 @@ Object {
"y": 110,
},
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -5934,29 +5260,31 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
- "selectionElement": Object {
+ "selectionElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id1",
"isDeleted": false,
@@ -5964,11 +5292,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -5984,84 +5312,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests deselects selected element on pointer down when pointer doesn't hit any element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests deselects selected element on pointer down when pointer doesn't hit any element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > deselects selected element on pointer down when pointer doesn't hit any element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -6069,11 +5367,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6090,19 +5388,21 @@ Object {
}
`;
-exports[`regression tests deselects selected element on pointer down when pointer doesn't hit any element: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > deselects selected element on pointer down when pointer doesn't hit any element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests deselects selected element on pointer down when pointer doesn't hit any element: [end of test] number of renders 1`] = `10`;
+exports[`regression tests > deselects selected element on pointer down when pointer doesn't hit any element > [end of test] number of renders 1`] = `10`;
-exports[`regression tests deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -6113,28 +5413,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -6144,24 +5453,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id1": true,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -6169,84 +5477,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 100,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id0",
"isDeleted": false,
@@ -6254,11 +5532,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -6275,19 +5553,21 @@ Object {
}
`;
-exports[`regression tests deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element: [end of test] number of renders 1`] = `11`;
+exports[`regression tests > deselects selected element, on pointer up, when click hits element bounding box but doesn't hit the element > [end of test] number of renders 1`] = `11`;
-exports[`regression tests double click to edit a group: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > double click to edit a group > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -6298,28 +5578,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": "id3",
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -6329,22 +5618,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -6352,152 +5642,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests double click to edit a group: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id3",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1150084233,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests double click to edit a group: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id3",
- ],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1116226695,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests double click to edit a group: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id3",
- ],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 10,
- "x": 50,
- "y": 10,
-}
-`;
-
-exports[`regression tests double click to edit a group: [end of test] history 1`] = `
-Object {
+exports[`regression tests > double click to edit a group > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -6505,11 +5697,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6522,24 +5714,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -6547,11 +5740,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6562,12 +5755,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -6575,11 +5769,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6592,24 +5786,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -6617,11 +5812,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6632,12 +5827,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -6645,11 +5841,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6660,12 +5856,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -6673,11 +5870,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6690,28 +5887,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id3": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 10,
@@ -6721,11 +5919,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6736,12 +5934,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 10,
@@ -6751,11 +5950,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6766,12 +5965,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 10,
@@ -6781,11 +5981,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -6802,19 +6002,21 @@ Object {
}
`;
-exports[`regression tests double click to edit a group: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > double click to edit a group > [end of test] number of elements 1`] = `0`;
-exports[`regression tests double click to edit a group: [end of test] number of renders 1`] = `20`;
+exports[`regression tests > double click to edit a group > [end of test] number of renders 1`] = `20`;
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -6825,28 +6027,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -6856,29 +6067,27 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -6886,115 +6095,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1150084233,
- "width": 10,
- "x": 25,
- "y": 25,
-}
-`;
-
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 3,
- "versionNonce": 1116226695,
- "width": 10,
- "x": 135,
- "y": 135,
-}
-`;
-
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] history 1`] = `
-Object {
+exports[`regression tests > drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7002,11 +6150,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7019,24 +6167,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7044,11 +6193,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7059,12 +6208,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -7072,11 +6222,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -7089,27 +6239,26 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7117,11 +6266,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7132,12 +6281,13 @@ Object {
"x": 25,
"y": 25,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -7145,11 +6295,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -7166,19 +6316,21 @@ Object {
}
`;
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging > [end of test] number of elements 1`] = `0`;
-exports[`regression tests drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging: [end of test] number of renders 1`] = `18`;
+exports[`regression tests > drags selected elements from point inside common bounding box that doesn't hit any element and keeps elements selected after dragging > [end of test] number of renders 1`] = `18`;
-exports[`regression tests draw every type of shape: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > draw every type of shape > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "freedraw",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -7189,28 +6341,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -7220,22 +6381,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id7": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -7243,397 +6403,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests draw every type of shape: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 20,
- "x": 10,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "diamond",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 20,
- "x": 40,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 2019559783,
- "width": 20,
- "x": 70,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 3 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": "arrow",
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id3",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 50,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 1150084233,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "arrow",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 50,
- "x": 130,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 4 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": null,
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id4",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 50,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 238820263,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "line",
- "updated": 1,
- "version": 3,
- "versionNonce": 1604849351,
- "width": 50,
- "x": 220,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 5 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": "arrow",
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id5",
- "isDeleted": false,
- "lastCommittedPoint": Array [
- 80,
- 20,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 50,
- 10,
- ],
- Array [
- 80,
- 20,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 1505387817,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "arrow",
- "updated": 1,
- "version": 7,
- "versionNonce": 1723083209,
- "width": 80,
- "x": 310,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 6 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": null,
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id6",
- "isDeleted": false,
- "lastCommittedPoint": Array [
- 80,
- 20,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 50,
- 10,
- ],
- Array [
- 80,
- 20,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 760410951,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "line",
- "updated": 1,
- "version": 7,
- "versionNonce": 406373543,
- "width": 80,
- "x": 430,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] element 7 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id7",
- "isDeleted": false,
- "lastCommittedPoint": Array [
- 50,
- 10,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 50,
- 10,
- ],
- Array [
- 50,
- 10,
- ],
- ],
- "pressures": Array [
- 0,
- 0,
- 0,
- ],
- "roughness": 1,
- "roundness": null,
- "seed": 941653321,
- "simulatePressure": false,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "freedraw",
- "updated": 1,
- "version": 4,
- "versionNonce": 1359939303,
- "width": 50,
- "x": 550,
- "y": -10,
-}
-`;
-
-exports[`regression tests draw every type of shape: [end of test] history 1`] = `
-Object {
+exports[`regression tests > draw every type of shape > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7641,11 +6458,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7658,24 +6475,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7683,11 +6501,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7698,12 +6516,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -7711,11 +6530,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -7728,24 +6547,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7753,11 +6573,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7768,12 +6588,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -7781,11 +6602,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -7796,12 +6617,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -7809,11 +6631,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -7826,24 +6648,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7851,11 +6674,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -7866,12 +6689,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -7879,11 +6703,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -7894,12 +6718,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -7907,11 +6732,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -7922,14 +6747,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -7937,24 +6763,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -7967,24 +6793,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -7992,11 +6819,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -8007,12 +6834,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -8020,11 +6848,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -8035,12 +6863,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -8048,11 +6877,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -8063,14 +6892,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -8078,24 +6908,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8106,14 +6936,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -8121,24 +6952,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -8151,24 +6982,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -8176,11 +7008,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -8191,12 +7023,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -8204,11 +7037,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -8219,12 +7052,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -8232,11 +7066,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -8247,14 +7081,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -8262,24 +7097,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8290,14 +7125,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -8305,24 +7141,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -8333,42 +7169,43 @@ Object {
"x": 220,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id5",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
50,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1505387817,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8381,24 +7218,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -8406,11 +7244,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -8421,12 +7259,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -8434,11 +7273,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -8449,12 +7288,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -8462,11 +7302,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -8477,14 +7317,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -8492,24 +7333,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8520,14 +7361,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -8535,24 +7377,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -8563,46 +7405,47 @@ Object {
"x": 220,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id5",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1505387817,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8615,24 +7458,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id6": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -8640,11 +7484,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -8655,12 +7499,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -8668,11 +7513,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -8683,12 +7528,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -8696,11 +7542,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -8711,14 +7557,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -8726,24 +7573,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8754,14 +7601,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -8769,24 +7617,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -8797,46 +7645,47 @@ Object {
"x": 220,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id5",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1505387817,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -8847,42 +7696,43 @@ Object {
"x": 310,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id6",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
50,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 760410951,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -8895,24 +7745,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id6": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -8920,11 +7771,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -8935,12 +7786,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -8948,11 +7800,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -8963,12 +7815,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -8976,11 +7829,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -8991,14 +7844,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -9006,24 +7860,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -9034,14 +7888,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -9049,24 +7904,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -9077,46 +7932,47 @@ Object {
"x": 220,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id5",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1505387817,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -9127,46 +7983,47 @@ Object {
"x": 310,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id6",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 760410951,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -9179,24 +8036,23 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
- "id7": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -9204,11 +8060,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -9219,12 +8075,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -9232,11 +8089,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -9247,12 +8104,13 @@ Object {
"x": 40,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -9260,11 +8118,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -9275,14 +8133,15 @@ Object {
"x": 70,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id3",
"isDeleted": false,
@@ -9290,24 +8149,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1150084233,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -9318,14 +8177,15 @@ Object {
"x": 130,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id4",
"isDeleted": false,
@@ -9333,24 +8193,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 238820263,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -9361,46 +8221,47 @@ Object {
"x": 220,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id5",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1505387817,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -9411,46 +8272,47 @@ Object {
"x": 310,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id6",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
80,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
80,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 760410951,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -9461,37 +8323,38 @@ Object {
"x": 430,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id7",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
50,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
50,
10,
],
- Array [
+ [
50,
10,
],
],
- "pressures": Array [
+ "pressures": [
0,
0,
0,
@@ -9500,7 +8363,7 @@ Object {
"roundness": null,
"seed": 941653321,
"simulatePressure": false,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "freedraw",
@@ -9517,19 +8380,21 @@ Object {
}
`;
-exports[`regression tests draw every type of shape: [end of test] number of elements 1`] = `8`;
+exports[`regression tests > draw every type of shape > [end of test] number of elements 1`] = `0`;
-exports[`regression tests draw every type of shape: [end of test] number of renders 1`] = `57`;
+exports[`regression tests > draw every type of shape > [end of test] number of renders 1`] = `57`;
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -9540,28 +8405,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -9571,27 +8445,26 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id2": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
- "id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -9599,146 +8472,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 100,
- "x": 110,
- "y": 110,
-}
-`;
-
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "diamond",
- "updated": 1,
- "version": 2,
- "versionNonce": 2019559783,
- "width": 100,
- "x": 310,
- "y": 310,
-}
-`;
-
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] history 1`] = `
-Object {
+exports[`regression tests > given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -9746,11 +8527,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -9763,24 +8544,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -9788,11 +8570,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -9803,12 +8585,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -9816,11 +8599,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -9833,24 +8616,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -9858,11 +8642,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -9873,12 +8657,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -9886,11 +8671,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -9901,12 +8686,13 @@ Object {
"x": 110,
"y": 110,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id2",
"isDeleted": false,
@@ -9914,11 +8700,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -9935,21 +8721,23 @@ Object {
}
`;
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up > [end of test] number of elements 1`] = `0`;
-exports[`regression tests given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up: [end of test] number of renders 1`] = `21`;
+exports[`regression tests > given a group of selected elements with an element that is not selected inside the group common bounding box when element that is not selected is clicked should switch selection to not selected element on pointer up > [end of test] number of renders 1`] = `21`;
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
- "currentItemBackgroundColor": "#fa5252",
+ "currentItemBackgroundColor": "#ffc9c9",
"currentItemEndArrowhead": "arrow",
"currentItemFillStyle": "hachure",
"currentItemFontFamily": 1,
@@ -9958,28 +8746,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -9987,30 +8784,28 @@ Object {
"offsetTop": 0,
"openDialog": null,
"openMenu": null,
- "openPopup": null,
+ "openPopup": "elementBackground",
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -10018,183 +8813,126 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "#fa5252",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 0,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 0,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "#fa5252",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 1000,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 1278240551,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 449462985,
- "width": 1000,
- "x": 500,
- "y": 500,
-}
-`;
-
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] history 1`] = `
-Object {
+exports[`regression tests > given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {
+ "id0": true,
+ },
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffc9c9",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
- "height": 0,
+ "frameId": null,
+ "groupIds": [],
+ "height": 1000,
"id": "id0",
"isDeleted": false,
"link": null,
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 0,
+ "version": 2,
+ "versionNonce": 1278240551,
+ "width": 1000,
"x": 0,
"y": 0,
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffc9c9",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
- "height": 0,
+ "frameId": null,
+ "groupIds": [],
+ "height": 1000,
"id": "id0",
"isDeleted": false,
"link": null,
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 0,
+ "version": 2,
+ "versionNonce": 1278240551,
+ "width": 1000,
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffc9c9",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 1000,
"id": "id1",
"isDeleted": false,
@@ -10202,17 +8940,17 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
- "seed": 1278240551,
- "strokeColor": "#000000",
+ "seed": 449462985,
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
"updated": 1,
"version": 2,
- "versionNonce": 449462985,
+ "versionNonce": 453191,
"width": 1000,
"x": 500,
"y": 500,
@@ -10223,19 +8961,21 @@ Object {
}
`;
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection > [end of test] number of elements 1`] = `0`;
-exports[`regression tests given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection: [end of test] number of renders 1`] = `19`;
+exports[`regression tests > given a selected element A and a not selected element B with higher z-index than A and given B partially overlaps A when there's a shift-click on the overlapped section B is added to the selection > [end of test] number of renders 1`] = `19`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -10246,28 +8986,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -10277,26 +9026,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -10304,116 +9052,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "red",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 1000,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 1000,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "red",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 500,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 1278240551,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 500,
- "x": 500,
- "y": 500,
-}
-`;
-
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] history 1`] = `
-Object {
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 1000,
"id": "id0",
"isDeleted": false,
@@ -10421,11 +9107,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10436,12 +9122,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 500,
"id": "id1",
"isDeleted": false,
@@ -10449,11 +9136,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10470,19 +9157,21 @@ Object {
}
`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up > [end of test] number of elements 1`] = `0`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up: [end of test] number of renders 1`] = `12`;
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when clicking intersection between A and B B should be selected on pointer up > [end of test] number of renders 1`] = `12`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -10493,28 +9182,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -10524,27 +9222,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -10552,116 +9248,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "red",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 1000,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 401146281,
- "width": 1000,
- "x": 100,
- "y": 100,
-}
-`;
-
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "red",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 500,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 1278240551,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 1,
- "versionNonce": 0,
- "width": 500,
- "x": 500,
- "y": 500,
-}
-`;
-
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] history 1`] = `
-Object {
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 1000,
"id": "id0",
"isDeleted": false,
@@ -10669,11 +9303,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10684,12 +9318,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 500,
"id": "id1",
"isDeleted": false,
@@ -10697,11 +9332,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10714,26 +9349,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 1000,
"id": "id0",
"isDeleted": false,
@@ -10741,11 +9375,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10756,12 +9390,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "red",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 500,
"id": "id1",
"isDeleted": false,
@@ -10769,11 +9404,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1278240551,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10790,19 +9425,21 @@ Object {
}
`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected > [end of test] number of elements 1`] = `0`;
-exports[`regression tests given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected: [end of test] number of renders 1`] = `13`;
+exports[`regression tests > given selected element A with lower z-index than unselected element B and given B is partially over A when dragging on intersection between A and B A should be dragged and keep being selected > [end of test] number of renders 1`] = `13`;
-exports[`regression tests key 2 selects rectangle tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 2 selects rectangle tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -10813,28 +9450,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -10844,22 +9490,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -10867,84 +9514,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 2 selects rectangle tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 2 selects rectangle tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 2 selects rectangle tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -10952,11 +9569,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -10973,19 +9590,21 @@ Object {
}
`;
-exports[`regression tests key 2 selects rectangle tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 2 selects rectangle tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 2 selects rectangle tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key 2 selects rectangle tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key 3 selects diamond tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 3 selects diamond tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -10996,28 +9615,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -11027,22 +9655,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -11050,84 +9679,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 3 selects diamond tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "diamond",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 3 selects diamond tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 3 selects diamond tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -11135,11 +9734,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -11156,19 +9755,21 @@ Object {
}
`;
-exports[`regression tests key 3 selects diamond tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 3 selects diamond tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 3 selects diamond tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key 3 selects diamond tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key 4 selects ellipse tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 4 selects ellipse tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -11179,28 +9780,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -11210,22 +9820,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -11233,84 +9844,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 4 selects ellipse tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 4 selects ellipse tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 4 selects ellipse tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -11318,11 +9899,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -11339,19 +9920,21 @@ Object {
}
`;
-exports[`regression tests key 4 selects ellipse tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 4 selects ellipse tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 4 selects ellipse tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key 4 selects ellipse tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key 5 selects arrow tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 5 selects arrow tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -11362,28 +9945,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -11393,39 +9985,40 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": LinearElementEditor {
"elementId": "id0",
"endBindingElement": "keep",
"hoverPointIndex": -1,
"isDragging": false,
"lastUncommittedPoint": null,
- "pointerDownState": Object {
+ "pointerDownState": {
"lastClickedPoint": -1,
"origin": null,
"prevSelectedPointsIndices": null,
- "segmentMidpoint": Object {
+ "segmentMidpoint": {
"added": false,
"index": null,
"value": null,
},
},
- "pointerOffset": Object {
+ "pointerOffset": {
"x": 0,
"y": 0,
},
@@ -11439,101 +10032,56 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 5 selects arrow tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": "arrow",
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "arrow",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 5 selects arrow tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 5 selects arrow tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -11541,24 +10089,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -11575,19 +10123,21 @@ Object {
}
`;
-exports[`regression tests key 5 selects arrow tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 5 selects arrow tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 5 selects arrow tool: [end of test] number of renders 1`] = `10`;
+exports[`regression tests > key 5 selects arrow tool > [end of test] number of renders 1`] = `10`;
-exports[`regression tests key 6 selects line tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 6 selects line tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -11598,28 +10148,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -11629,39 +10188,40 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": LinearElementEditor {
"elementId": "id0",
"endBindingElement": "keep",
"hoverPointIndex": -1,
"isDragging": false,
"lastUncommittedPoint": null,
- "pointerDownState": Object {
+ "pointerDownState": {
"lastClickedPoint": -1,
"origin": null,
"prevSelectedPointsIndices": null,
- "segmentMidpoint": Object {
+ "segmentMidpoint": {
"added": false,
"index": null,
"value": null,
},
},
- "pointerOffset": Object {
+ "pointerOffset": {
"x": 0,
"y": 0,
},
@@ -11675,101 +10235,56 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 6 selects line tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": null,
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "line",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 6 selects line tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 6 selects line tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -11777,24 +10292,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -11811,19 +10326,21 @@ Object {
}
`;
-exports[`regression tests key 6 selects line tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 6 selects line tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 6 selects line tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key 6 selects line tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key 7 selects freedraw tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key 7 selects freedraw tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "freedraw",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -11834,28 +10351,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -11865,22 +10391,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -11888,131 +10413,77 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key 7 selects freedraw tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": Array [
- 10,
- 10,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "pressures": Array [
- 0,
- 0,
- 0,
- ],
- "roughness": 1,
- "roundness": null,
- "seed": 337897,
- "simulatePressure": false,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "freedraw",
- "updated": 1,
- "version": 4,
- "versionNonce": 453191,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key 7 selects freedraw tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key 7 selects freedraw tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
- "id0": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
10,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
- Array [
+ [
10,
10,
],
],
- "pressures": Array [
+ "pressures": [
0,
0,
0,
@@ -12021,7 +10492,7 @@ Object {
"roundness": null,
"seed": 337897,
"simulatePressure": false,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "freedraw",
@@ -12038,19 +10509,21 @@ Object {
}
`;
-exports[`regression tests key 7 selects freedraw tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key 7 selects freedraw tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key 7 selects freedraw tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key 7 selects freedraw tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key a selects arrow tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key a selects arrow tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -12061,28 +10534,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -12092,39 +10574,40 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": LinearElementEditor {
"elementId": "id0",
"endBindingElement": "keep",
"hoverPointIndex": -1,
"isDragging": false,
"lastUncommittedPoint": null,
- "pointerDownState": Object {
+ "pointerDownState": {
"lastClickedPoint": -1,
"origin": null,
"prevSelectedPointsIndices": null,
- "segmentMidpoint": Object {
+ "segmentMidpoint": {
"added": false,
"index": null,
"value": null,
},
},
- "pointerOffset": Object {
+ "pointerOffset": {
"x": 0,
"y": 0,
},
@@ -12138,101 +10621,56 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key a selects arrow tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": "arrow",
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "arrow",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key a selects arrow tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key a selects arrow tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -12240,24 +10678,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -12274,19 +10712,21 @@ Object {
}
`;
-exports[`regression tests key a selects arrow tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key a selects arrow tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key a selects arrow tool: [end of test] number of renders 1`] = `10`;
+exports[`regression tests > key a selects arrow tool > [end of test] number of renders 1`] = `10`;
-exports[`regression tests key d selects diamond tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key d selects diamond tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -12297,28 +10737,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -12328,22 +10777,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -12351,84 +10801,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key d selects diamond tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "diamond",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key d selects diamond tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key d selects diamond tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -12436,11 +10856,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -12457,19 +10877,21 @@ Object {
}
`;
-exports[`regression tests key d selects diamond tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key d selects diamond tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key d selects diamond tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key d selects diamond tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key l selects line tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key l selects line tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -12480,28 +10902,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -12511,39 +10942,40 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": LinearElementEditor {
"elementId": "id0",
"endBindingElement": "keep",
"hoverPointIndex": -1,
"isDragging": false,
"lastUncommittedPoint": null,
- "pointerDownState": Object {
+ "pointerDownState": {
"lastClickedPoint": -1,
"origin": null,
"prevSelectedPointsIndices": null,
- "segmentMidpoint": Object {
+ "segmentMidpoint": {
"added": false,
"index": null,
"value": null,
},
},
- "pointerOffset": Object {
+ "pointerOffset": {
"x": 0,
"y": 0,
},
@@ -12557,101 +10989,56 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key l selects line tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": null,
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": null,
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "line",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key l selects line tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key l selects line tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -12659,24 +11046,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -12693,19 +11080,21 @@ Object {
}
`;
-exports[`regression tests key l selects line tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key l selects line tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key l selects line tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key l selects line tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key o selects ellipse tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key o selects ellipse tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -12716,28 +11105,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -12747,22 +11145,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -12770,84 +11169,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key o selects ellipse tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key o selects ellipse tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key o selects ellipse tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -12855,11 +11224,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -12876,19 +11245,21 @@ Object {
}
`;
-exports[`regression tests key o selects ellipse tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key o selects ellipse tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key o selects ellipse tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key o selects ellipse tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key p selects freedraw tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key p selects freedraw tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "freedraw",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -12899,28 +11270,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -12930,22 +11310,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -12953,131 +11332,77 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key p selects freedraw tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "lastCommittedPoint": Array [
- 10,
- 10,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 10,
- 10,
- ],
- Array [
- 10,
- 10,
- ],
- ],
- "pressures": Array [
- 0,
- 0,
- 0,
- ],
- "roughness": 1,
- "roundness": null,
- "seed": 337897,
- "simulatePressure": false,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "freedraw",
- "updated": 1,
- "version": 4,
- "versionNonce": 453191,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key p selects freedraw tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key p selects freedraw tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
- "id0": false,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
10,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
10,
10,
],
- Array [
+ [
10,
10,
],
],
- "pressures": Array [
+ "pressures": [
0,
0,
0,
@@ -13086,7 +11411,7 @@ Object {
"roundness": null,
"seed": 337897,
"simulatePressure": false,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "freedraw",
@@ -13103,19 +11428,21 @@ Object {
}
`;
-exports[`regression tests key p selects freedraw tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key p selects freedraw tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key p selects freedraw tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key p selects freedraw tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests key r selects rectangle tool: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > key r selects rectangle tool > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -13126,28 +11453,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -13157,22 +11493,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -13180,84 +11517,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests key r selects rectangle tool: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests key r selects rectangle tool: [end of test] history 1`] = `
-Object {
+exports[`regression tests > key r selects rectangle tool > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -13265,11 +11572,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13286,19 +11593,21 @@ Object {
}
`;
-exports[`regression tests key r selects rectangle tool: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > key r selects rectangle tool > [end of test] number of elements 1`] = `0`;
-exports[`regression tests key r selects rectangle tool: [end of test] number of renders 1`] = `9`;
+exports[`regression tests > key r selects rectangle tool > [end of test] number of renders 1`] = `9`;
-exports[`regression tests make a group and duplicate it: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > make a group and duplicate it > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -13309,28 +11618,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -13340,31 +11658,29 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id5": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id4": true,
},
"selectedLinearElement": null,
@@ -13374,251 +11690,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests make a group and duplicate it: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id6",
- ],
- "height": 10,
- "id": "id0_copy",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 915032327,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 5,
- "versionNonce": 81784553,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id6",
- ],
- "height": 10,
- "id": "id1_copy",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 747212839,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 5,
- "versionNonce": 1723083209,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id6",
- ],
- "height": 10,
- "id": "id2_copy",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 760410951,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 5,
- "versionNonce": 1006504105,
- "width": 10,
- "x": 50,
- "y": 10,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] element 3 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1505387817,
- "width": 10,
- "x": 20,
- "y": 20,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] element 4 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 23633383,
- "width": 10,
- "x": 40,
- "y": 20,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] element 5 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- ],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 493213705,
- "width": 10,
- "x": 60,
- "y": 20,
-}
-`;
-
-exports[`regression tests make a group and duplicate it: [end of test] history 1`] = `
-Object {
+exports[`regression tests > make a group and duplicate it > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -13626,11 +11745,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13643,24 +11762,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -13668,11 +11788,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13683,12 +11803,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -13696,11 +11817,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13713,24 +11834,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -13738,11 +11860,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13753,12 +11875,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -13766,11 +11889,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13781,12 +11904,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -13794,11 +11918,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13811,29 +11935,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -13843,11 +11967,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13858,12 +11982,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -13873,11 +11998,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13888,12 +12013,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -13903,11 +12029,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13920,31 +12046,30 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id5": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
- "id6",
+ "frameId": null,
+ "groupIds": [
+ "id4_copy",
],
"height": 10,
"id": "id0_copy",
@@ -13953,11 +12078,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 915032327,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13968,13 +12093,14 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
- "id6",
+ "frameId": null,
+ "groupIds": [
+ "id4_copy",
],
"height": 10,
"id": "id1_copy",
@@ -13983,11 +12109,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 747212839,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -13998,13 +12124,14 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
- "id6",
+ "frameId": null,
+ "groupIds": [
+ "id4_copy",
],
"height": 10,
"id": "id2_copy",
@@ -14013,11 +12140,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 760410951,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14028,12 +12155,13 @@ Object {
"x": 50,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -14043,11 +12171,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14058,12 +12186,13 @@ Object {
"x": 20,
"y": 20,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -14073,11 +12202,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14088,12 +12217,13 @@ Object {
"x": 40,
"y": 20,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -14103,11 +12233,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14124,19 +12254,21 @@ Object {
}
`;
-exports[`regression tests make a group and duplicate it: [end of test] number of elements 1`] = `6`;
+exports[`regression tests > make a group and duplicate it > [end of test] number of elements 1`] = `0`;
-exports[`regression tests make a group and duplicate it: [end of test] number of renders 1`] = `24`;
+exports[`regression tests > make a group and duplicate it > [end of test] number of renders 1`] = `24`;
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > noop interaction after undo shouldn't create history entry > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -14147,28 +12279,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -14178,26 +12319,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
- "id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -14205,115 +12345,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1116226695,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1014066025,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] history 1`] = `
-Object {
+exports[`regression tests > noop interaction after undo shouldn't create history entry > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -14321,11 +12400,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14338,24 +12417,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -14363,11 +12443,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14378,12 +12458,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -14391,11 +12472,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14412,19 +12493,21 @@ Object {
}
`;
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > noop interaction after undo shouldn't create history entry > [end of test] number of elements 1`] = `0`;
-exports[`regression tests noop interaction after undo shouldn't create history entry: [end of test] number of renders 1`] = `21`;
+exports[`regression tests > noop interaction after undo shouldn't create history entry > [end of test] number of renders 1`] = `21`;
-exports[`regression tests pinch-to-zoom works: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > pinch-to-zoom works > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -14435,28 +12518,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "touch",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -14466,22 +12558,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": -2.916666666666668,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": true,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": true,
@@ -14489,52 +12580,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests pinch-to-zoom works: [end of test] history 1`] = `
-Object {
+exports[`regression tests > pinch-to-zoom works > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests pinch-to-zoom works: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > pinch-to-zoom works > [end of test] number of elements 1`] = `0`;
-exports[`regression tests pinch-to-zoom works: [end of test] number of renders 1`] = `11`;
+exports[`regression tests > pinch-to-zoom works > [end of test] number of renders 1`] = `11`;
-exports[`regression tests rerenders UI on language change: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > rerenders UI on language change > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "rectangle",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -14545,51 +12638,61 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
"offsetLeft": 0,
"offsetTop": 0,
"openDialog": null,
- "openMenu": null,
+ "openMenu": "canvas",
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -14597,52 +12700,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests rerenders UI on language change: [end of test] history 1`] = `
-Object {
+exports[`regression tests > rerenders UI on language change > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests rerenders UI on language change: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > rerenders UI on language change > [end of test] number of elements 1`] = `0`;
-exports[`regression tests rerenders UI on language change: [end of test] number of renders 1`] = `10`;
+exports[`regression tests > rerenders UI on language change > [end of test] number of renders 1`] = `11`;
-exports[`regression tests shift click on selected element should deselect it on pointer up: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > shift click on selected element should deselect it on pointer up > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -14653,28 +12758,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -14684,25 +12798,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": false,
- "id1": true,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -14710,84 +12822,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests shift click on selected element should deselect it on pointer up: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests shift click on selected element should deselect it on pointer up: [end of test] history 1`] = `
-Object {
+exports[`regression tests > shift click on selected element should deselect it on pointer up > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -14795,11 +12877,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -14816,19 +12898,21 @@ Object {
}
`;
-exports[`regression tests shift click on selected element should deselect it on pointer up: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > shift click on selected element should deselect it on pointer up > [end of test] number of elements 1`] = `0`;
-exports[`regression tests shift click on selected element should deselect it on pointer up: [end of test] number of renders 1`] = `11`;
+exports[`regression tests > shift click on selected element should deselect it on pointer up > [end of test] number of renders 1`] = `11`;
-exports[`regression tests shift-click to multiselect, then drag: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > shift-click to multiselect, then drag > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -14839,28 +12923,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -14870,31 +12963,27 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
- "id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -14902,115 +12991,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests shift-click to multiselect, then drag: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1116226695,
- "width": 10,
- "x": 20,
- "y": 20,
-}
-`;
-
-exports[`regression tests shift-click to multiselect, then drag: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1014066025,
- "width": 10,
- "x": 40,
- "y": 20,
-}
-`;
-
-exports[`regression tests shift-click to multiselect, then drag: [end of test] history 1`] = `
-Object {
+exports[`regression tests > shift-click to multiselect, then drag > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15018,11 +13046,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15035,24 +13063,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15060,11 +13089,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15075,12 +13104,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -15088,11 +13118,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15105,28 +13135,26 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
- "id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15134,11 +13162,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15149,12 +13177,13 @@ Object {
"x": 20,
"y": 20,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -15162,11 +13191,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15183,19 +13212,21 @@ Object {
}
`;
-exports[`regression tests shift-click to multiselect, then drag: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > shift-click to multiselect, then drag > [end of test] number of elements 1`] = `0`;
-exports[`regression tests shift-click to multiselect, then drag: [end of test] number of renders 1`] = `20`;
+exports[`regression tests > shift-click to multiselect, then drag > [end of test] number of renders 1`] = `20`;
-exports[`regression tests should group elements and ungroup them: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > should group elements and ungroup them > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -15206,28 +13237,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -15237,28 +13277,29 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
+ "id0": true,
+ "id1": true,
"id2": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -15266,146 +13307,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests should group elements and ungroup them: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1505387817,
- "width": 10,
- "x": 10,
- "y": 10,
-}
-`;
-
-exports[`regression tests should group elements and ungroup them: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 23633383,
- "width": 10,
- "x": 30,
- "y": 10,
-}
-`;
-
-exports[`regression tests should group elements and ungroup them: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 493213705,
- "width": 10,
- "x": 50,
- "y": 10,
-}
-`;
-
-exports[`regression tests should group elements and ungroup them: [end of test] history 1`] = `
-Object {
+exports[`regression tests > should group elements and ungroup them > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15413,11 +13362,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15430,24 +13379,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15455,11 +13405,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15470,12 +13420,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -15483,11 +13434,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15500,24 +13451,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15525,11 +13477,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15540,12 +13492,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -15553,11 +13506,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15568,12 +13521,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -15581,11 +13535,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15598,29 +13552,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -15630,11 +13584,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15645,12 +13599,13 @@ Object {
"x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -15660,11 +13615,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15675,12 +13630,13 @@ Object {
"x": 30,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -15690,11 +13646,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15707,28 +13663,27 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id3": true,
- "id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15736,39 +13691,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1505387817,
- "width": 10,
- "x": 10,
- "y": 10,
- },
- Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15776,15 +13703,45 @@ Object {
"version": 4,
"versionNonce": 23633383,
"width": 10,
- "x": 30,
+ "x": 10,
"y": 10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
+ "height": 10,
+ "id": "id1",
+ "isDeleted": false,
+ "link": null,
+ "locked": false,
+ "opacity": 100,
+ "roughness": 1,
+ "roundness": {
+ "type": 3,
+ },
+ "seed": 449462985,
+ "strokeColor": "#1e1e1e",
+ "strokeStyle": "solid",
+ "strokeWidth": 1,
+ "type": "rectangle",
+ "updated": 1,
+ "version": 4,
+ "versionNonce": 493213705,
+ "width": 10,
+ "x": 30,
+ "y": 10,
+ },
+ {
+ "angle": 0,
+ "backgroundColor": "transparent",
+ "boundElements": null,
+ "fillStyle": "hachure",
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
@@ -15792,17 +13749,17 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
"updated": 1,
"version": 4,
- "versionNonce": 493213705,
+ "versionNonce": 915032327,
"width": 10,
"x": 50,
"y": 10,
@@ -15813,21 +13770,23 @@ Object {
}
`;
-exports[`regression tests should group elements and ungroup them: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > should group elements and ungroup them > [end of test] number of elements 1`] = `0`;
-exports[`regression tests should group elements and ungroup them: [end of test] number of renders 1`] = `25`;
+exports[`regression tests > should group elements and ungroup them > [end of test] number of renders 1`] = `25`;
-exports[`regression tests should show fill icons when element has non transparent background: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > should show fill icons when element has non transparent background > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
- "currentItemBackgroundColor": "#fa5252",
+ "currentItemBackgroundColor": "#ffc9c9",
"currentItemEndArrowhead": "arrow",
"currentItemFillStyle": "hachure",
"currentItemFontFamily": 1,
@@ -15836,28 +13795,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -15865,24 +13833,25 @@ Object {
"offsetTop": 0,
"openDialog": null,
"openMenu": null,
- "openPopup": null,
+ "openPopup": "elementBackground",
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -15890,84 +13859,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests should show fill icons when element has non transparent background: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "#fa5252",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 449462985,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests should show fill icons when element has non transparent background: [end of test] history 1`] = `
-Object {
+exports[`regression tests > should show fill icons when element has non transparent background > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -15975,11 +13914,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -15992,24 +13931,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
- "backgroundColor": "#fa5252",
+ "backgroundColor": "#ffc9c9",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -16017,11 +13957,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16038,19 +13978,21 @@ Object {
}
`;
-exports[`regression tests should show fill icons when element has non transparent background: [end of test] number of elements 1`] = `1`;
+exports[`regression tests > should show fill icons when element has non transparent background > [end of test] number of elements 1`] = `0`;
-exports[`regression tests should show fill icons when element has non transparent background: [end of test] number of renders 1`] = `14`;
+exports[`regression tests > should show fill icons when element has non transparent background > [end of test] number of renders 1`] = `13`;
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > single-clicking on a subgroup of a selected group should not alter selection > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -16061,28 +14003,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -16092,14 +14043,14 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
"id1": true,
"id5": true,
@@ -16109,14 +14060,14 @@ Object {
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id11": true,
"id5": true,
"id6": true,
},
- "selectedGroupIds": Object {
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {
"id10": true,
},
"selectedLinearElement": null,
@@ -16126,189 +14077,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- "id10",
- ],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 81784553,
- "width": 10,
- "x": 10,
- "y": 0,
-}
-`;
-
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id4",
- "id10",
- ],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 747212839,
- "width": 10,
- "x": 50,
- "y": 0,
-}
-`;
-
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id9",
- "id10",
- ],
- "height": 10,
- "id": "id5",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 1014066025,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1723083209,
- "width": 10,
- "x": 10,
- "y": 50,
-}
-`;
-
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] element 3 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id9",
- "id10",
- ],
- "height": 10,
- "id": "id6",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 400692809,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 760410951,
- "width": 10,
- "x": 50,
- "y": 50,
-}
-`;
-
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] history 1`] = `
-Object {
+exports[`regression tests > single-clicking on a subgroup of a selected group should not alter selection > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -16316,11 +14132,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16333,24 +14149,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -16358,11 +14175,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16373,12 +14190,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -16386,11 +14204,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16403,29 +14221,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
- "id2": true,
- "id3": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id4": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16435,11 +14252,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16450,12 +14267,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16465,11 +14283,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16482,24 +14300,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id5": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16509,11 +14328,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16524,12 +14343,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16539,11 +14359,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16554,12 +14374,13 @@ Object {
"x": 50,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id5",
"isDeleted": false,
@@ -16567,11 +14388,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1014066025,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16584,24 +14405,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id6": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16611,11 +14433,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16626,12 +14448,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16641,11 +14464,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16656,12 +14479,13 @@ Object {
"x": 50,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id5",
"isDeleted": false,
@@ -16669,11 +14493,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1014066025,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16684,12 +14508,13 @@ Object {
"x": 10,
"y": 50,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id6",
"isDeleted": false,
@@ -16697,11 +14522,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16714,29 +14539,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id5": true,
"id6": true,
- "id7": true,
- "id8": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id9": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16746,11 +14570,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16761,12 +14585,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
],
"height": 10,
@@ -16776,11 +14601,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16791,12 +14616,13 @@ Object {
"x": 50,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id9",
],
"height": 10,
@@ -16806,11 +14632,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1014066025,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16821,12 +14647,13 @@ Object {
"x": 10,
"y": 50,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id9",
],
"height": 10,
@@ -16836,11 +14663,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16853,29 +14680,30 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id5": true,
"id6": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id10": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -16886,11 +14714,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16901,12 +14729,13 @@ Object {
"x": 10,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id4",
"id10",
],
@@ -16917,11 +14746,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16932,12 +14761,13 @@ Object {
"x": 50,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id9",
"id10",
],
@@ -16948,11 +14778,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 1014066025,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -16963,12 +14793,13 @@ Object {
"x": 10,
"y": 50,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id9",
"id10",
],
@@ -16979,11 +14810,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 400692809,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17000,19 +14831,21 @@ Object {
}
`;
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] number of elements 1`] = `4`;
+exports[`regression tests > single-clicking on a subgroup of a selected group should not alter selection > [end of test] number of elements 1`] = `0`;
-exports[`regression tests single-clicking on a subgroup of a selected group should not alter selection: [end of test] number of renders 1`] = `39`;
+exports[`regression tests > single-clicking on a subgroup of a selected group should not alter selection > [end of test] number of renders 1`] = `39`;
-exports[`regression tests spacebar + drag scrolls the canvas: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > spacebar + drag scrolls the canvas > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -17023,28 +14856,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -17054,20 +14896,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 60,
"scrollY": 60,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -17075,52 +14918,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests spacebar + drag scrolls the canvas: [end of test] history 1`] = `
-Object {
+exports[`regression tests > spacebar + drag scrolls the canvas > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests spacebar + drag scrolls the canvas: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > spacebar + drag scrolls the canvas > [end of test] number of elements 1`] = `0`;
-exports[`regression tests spacebar + drag scrolls the canvas: [end of test] number of renders 1`] = `8`;
+exports[`regression tests > spacebar + drag scrolls the canvas > [end of test] number of renders 1`] = `8`;
-exports[`regression tests supports nested groups: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > supports nested groups > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -17131,28 +14976,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": "id3",
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -17162,24 +15016,25 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id0": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -17187,154 +15042,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests supports nested groups: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id3",
- ],
- "height": 50,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 3,
- "versionNonce": 1116226695,
- "width": 50,
- "x": 100,
- "y": 100,
-}
-`;
-
-exports[`regression tests supports nested groups: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- "id3",
- ],
- "height": 50,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 400692809,
- "width": 50,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests supports nested groups: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [
- "id5",
- "id3",
- ],
- "height": 50,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 4,
- "versionNonce": 1604849351,
- "width": 50,
- "x": 200,
- "y": 200,
-}
-`;
-
-exports[`regression tests supports nested groups: [end of test] history 1`] = `
-Object {
+exports[`regression tests > supports nested groups > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -17342,11 +15097,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17359,24 +15114,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -17384,11 +15140,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17399,12 +15155,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id1",
"isDeleted": false,
@@ -17412,11 +15169,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17429,24 +15186,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -17454,11 +15212,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17469,12 +15227,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id1",
"isDeleted": false,
@@ -17482,11 +15241,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17497,12 +15256,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id2",
"isDeleted": false,
@@ -17510,11 +15270,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17527,28 +15287,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id3": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17558,11 +15319,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17573,12 +15334,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17588,11 +15350,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17603,12 +15365,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17618,11 +15381,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17635,26 +15398,26 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": "id3",
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id4": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17664,11 +15427,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17679,12 +15442,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17694,11 +15458,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17709,12 +15473,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17724,11 +15489,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17741,28 +15506,28 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": "id3",
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id2": true,
- "id4": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id5": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17772,11 +15537,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17787,12 +15552,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
"id3",
],
@@ -17803,11 +15569,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17818,12 +15584,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
"id3",
],
@@ -17834,11 +15601,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17851,29 +15618,29 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
"id1": true,
"id2": true,
- "id7": true,
},
- "selectedGroupIds": Object {
+ "selectedGroupIds": {
"id3": true,
},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id3",
],
"height": 50,
@@ -17883,11 +15650,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17898,12 +15665,13 @@ Object {
"x": 100,
"y": 100,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
"id3",
],
@@ -17914,11 +15682,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17929,12 +15697,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"id5",
"id3",
],
@@ -17945,11 +15714,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -17966,19 +15735,21 @@ Object {
}
`;
-exports[`regression tests supports nested groups: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > supports nested groups > [end of test] number of elements 1`] = `0`;
-exports[`regression tests supports nested groups: [end of test] number of renders 1`] = `32`;
+exports[`regression tests > supports nested groups > [end of test] number of renders 1`] = `32`;
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > switches from group of selected elements to another element on pointer down > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -17989,17 +15760,19 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
- "draggingElement": Object {
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id4",
"isDeleted": false,
@@ -18007,11 +15780,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1116226695,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -18023,21 +15796,29 @@ Object {
"y": 0,
},
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -18047,33 +15828,34 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id1": true,
"id2": true,
- "id3": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
- "selectionElement": Object {
+ "selectionElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id4",
"isDeleted": false,
@@ -18081,11 +15863,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 1116226695,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -18101,146 +15883,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 100,
- "x": 110,
- "y": 110,
-}
-`;
-
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 100,
- "id": "id2",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 401146281,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "diamond",
- "updated": 1,
- "version": 2,
- "versionNonce": 2019559783,
- "width": 100,
- "x": 310,
- "y": 310,
-}
-`;
-
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] history 1`] = `
-Object {
+exports[`regression tests > switches from group of selected elements to another element on pointer down > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -18248,11 +15938,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -18265,24 +15955,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -18290,11 +15981,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -18305,12 +15996,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -18318,11 +16010,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -18335,24 +16027,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -18360,11 +16053,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -18375,12 +16068,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id1",
"isDeleted": false,
@@ -18388,11 +16082,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -18403,12 +16097,13 @@ Object {
"x": 110,
"y": 110,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id2",
"isDeleted": false,
@@ -18416,11 +16111,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -18437,19 +16132,21 @@ Object {
}
`;
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > switches from group of selected elements to another element on pointer down > [end of test] number of elements 1`] = `0`;
-exports[`regression tests switches from group of selected elements to another element on pointer down: [end of test] number of renders 1`] = `20`;
+exports[`regression tests > switches from group of selected elements to another element on pointer down > [end of test] number of renders 1`] = `20`;
-exports[`regression tests switches selected element on pointer down: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > switches selected element on pointer down > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -18460,17 +16157,19 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
- "draggingElement": Object {
+ "defaultSidebarDockedPreference": false,
+ "draggingElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id2",
"isDeleted": false,
@@ -18478,11 +16177,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -18494,21 +16193,29 @@ Object {
"y": 0,
},
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -18518,31 +16225,33 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {
+ "previousSelectedElementIds": {
"id1": true,
},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
- "selectionElement": Object {
+ "selectionElement": {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id2",
"isDeleted": false,
@@ -18550,11 +16259,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "selection",
@@ -18570,115 +16279,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests switches selected element on pointer down: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 2,
- "versionNonce": 1278240551,
- "width": 10,
- "x": 0,
- "y": 0,
-}
-`;
-
-exports[`regression tests switches selected element on pointer down: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "ellipse",
- "updated": 1,
- "version": 2,
- "versionNonce": 453191,
- "width": 10,
- "x": 20,
- "y": 20,
-}
-`;
-
-exports[`regression tests switches selected element on pointer down: [end of test] history 1`] = `
-Object {
+exports[`regression tests > switches selected element on pointer down > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -18686,11 +16334,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -18703,24 +16351,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -18728,11 +16377,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -18743,12 +16392,13 @@ Object {
"x": 0,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id1",
"isDeleted": false,
@@ -18756,11 +16406,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -18777,19 +16427,21 @@ Object {
}
`;
-exports[`regression tests switches selected element on pointer down: [end of test] number of elements 1`] = `2`;
+exports[`regression tests > switches selected element on pointer down > [end of test] number of elements 1`] = `0`;
-exports[`regression tests switches selected element on pointer down: [end of test] number of renders 1`] = `14`;
+exports[`regression tests > switches selected element on pointer down > [end of test] number of renders 1`] = `14`;
-exports[`regression tests two-finger scroll works: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > two-finger scroll works > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -18800,28 +16452,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "down",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "touch",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -18831,22 +16492,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 10,
"scrollY": -10,
"scrolledOutside": false,
- "selectedElementIds": Object {
- "id0": true,
- },
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": true,
@@ -18854,52 +16514,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests two-finger scroll works: [end of test] history 1`] = `
-Object {
+exports[`regression tests > two-finger scroll works > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests two-finger scroll works: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > two-finger scroll works > [end of test] number of elements 1`] = `0`;
-exports[`regression tests two-finger scroll works: [end of test] number of renders 1`] = `13`;
+exports[`regression tests > two-finger scroll works > [end of test] number of renders 1`] = `13`;
-exports[`regression tests undo/redo drawing an element: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > undo/redo drawing an element > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -18910,28 +16572,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -18941,22 +16612,23 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -18964,152 +16636,42 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests undo/redo drawing an element: [end of test] element 0 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id0",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 337897,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 6,
- "versionNonce": 760410951,
- "width": 20,
- "x": 10,
- "y": -10,
-}
-`;
-
-exports[`regression tests undo/redo drawing an element: [end of test] element 1 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 20,
- "id": "id1",
- "isDeleted": false,
- "link": null,
- "locked": false,
- "opacity": 100,
- "roughness": 1,
- "roundness": Object {
- "type": 3,
- },
- "seed": 449462985,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "rectangle",
- "updated": 1,
- "version": 6,
- "versionNonce": 1006504105,
- "width": 30,
- "x": 40,
- "y": 0,
-}
-`;
-
-exports[`regression tests undo/redo drawing an element: [end of test] element 2 1`] = `
-Object {
- "angle": 0,
- "backgroundColor": "transparent",
- "boundElements": null,
- "endArrowhead": "arrow",
- "endBinding": null,
- "fillStyle": "hachure",
- "groupIds": Array [],
- "height": 10,
- "id": "id2",
- "isDeleted": true,
- "lastCommittedPoint": Array [
- 60,
- 10,
- ],
- "link": null,
- "locked": false,
- "opacity": 100,
- "points": Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 60,
- 10,
- ],
- ],
- "roughness": 1,
- "roundness": Object {
- "type": 2,
- },
- "seed": 401146281,
- "startArrowhead": null,
- "startBinding": null,
- "strokeColor": "#000000",
- "strokeStyle": "solid",
- "strokeWidth": 1,
- "type": "arrow",
- "updated": 1,
- "version": 9,
- "versionNonce": 81784553,
- "width": 60,
- "x": 130,
- "y": 10,
-}
-`;
-
-exports[`regression tests undo/redo drawing an element: [end of test] history 1`] = `
-Object {
+exports[`regression tests > undo/redo drawing an element > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [
- Object {
- "appState": Object {
+ "redoStack": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -19117,11 +16679,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19132,12 +16694,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -19145,11 +16708,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19160,46 +16723,47 @@ Object {
"x": 40,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id2",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
100,
20,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
60,
10,
],
- Array [
+ [
100,
20,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -19212,24 +16776,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id2": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -19237,11 +16802,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19252,12 +16817,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -19265,11 +16831,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19280,42 +16846,43 @@ Object {
"x": 40,
"y": 0,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id2",
"isDeleted": false,
- "lastCommittedPoint": Array [
+ "lastCommittedPoint": [
60,
10,
],
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
60,
10,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 401146281,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -19329,36 +16896,37 @@ Object {
],
},
],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id0": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -19366,11 +16934,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19383,24 +16951,25 @@ Object {
},
],
},
- Object {
- "appState": Object {
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {
+ "selectedElementIds": {
"id1": true,
},
- "selectedGroupIds": Object {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [
- Object {
+ "elements": [
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 10,
"id": "id0",
"isDeleted": false,
@@ -19408,11 +16977,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19423,12 +16992,13 @@ Object {
"x": 10,
"y": -10,
},
- Object {
+ {
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 20,
"id": "id1",
"isDeleted": false,
@@ -19436,11 +17006,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 449462985,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
@@ -19457,19 +17027,21 @@ Object {
}
`;
-exports[`regression tests undo/redo drawing an element: [end of test] number of elements 1`] = `3`;
+exports[`regression tests > undo/redo drawing an element > [end of test] number of elements 1`] = `0`;
-exports[`regression tests undo/redo drawing an element: [end of test] number of renders 1`] = `31`;
+exports[`regression tests > undo/redo drawing an element > [end of test] number of renders 1`] = `31`;
-exports[`regression tests updates fontSize & fontFamily appState: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > updates fontSize & fontFamily appState > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "text",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -19480,28 +17052,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -19511,20 +17092,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -19532,52 +17114,54 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests updates fontSize & fontFamily appState: [end of test] history 1`] = `
-Object {
+exports[`regression tests > updates fontSize & fontFamily appState > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests updates fontSize & fontFamily appState: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > updates fontSize & fontFamily appState > [end of test] number of elements 1`] = `0`;
-exports[`regression tests updates fontSize & fontFamily appState: [end of test] number of renders 1`] = `7`;
+exports[`regression tests > updates fontSize & fontFamily appState > [end of test] number of renders 1`] = `7`;
-exports[`regression tests zoom hotkeys: [end of test] appState 1`] = `
-Object {
- "activeTool": Object {
+exports[`regression tests > zoom hotkeys > [end of test] appState 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -19588,28 +17172,37 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"height": 768,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "Untitled-201933152653",
@@ -19619,20 +17212,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -19640,39 +17234,39 @@ Object {
"showStats": false,
"showWelcomeScreen": true,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"width": 1024,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
`;
-exports[`regression tests zoom hotkeys: [end of test] history 1`] = `
-Object {
+exports[`regression tests > zoom hotkeys > [end of test] history 1`] = `
+{
"recording": false,
- "redoStack": Array [],
- "stateHistory": Array [
- Object {
- "appState": Object {
+ "redoStack": [],
+ "stateHistory": [
+ {
+ "appState": {
"editingGroupId": null,
"editingLinearElement": null,
"name": "Untitled-201933152653",
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedGroupIds": {},
"viewBackgroundColor": "#ffffff",
},
- "elements": Array [],
+ "elements": [],
},
],
}
`;
-exports[`regression tests zoom hotkeys: [end of test] number of elements 1`] = `0`;
+exports[`regression tests > zoom hotkeys > [end of test] number of elements 1`] = `0`;
-exports[`regression tests zoom hotkeys: [end of test] number of renders 1`] = `7`;
+exports[`regression tests > zoom hotkeys > [end of test] number of renders 1`] = `7`;
diff --git a/src/tests/__snapshots__/selection.test.tsx.snap b/src/tests/__snapshots__/selection.test.tsx.snap
index 6379fa0aa..3296dca75 100644
--- a/src/tests/__snapshots__/selection.test.tsx.snap
+++ b/src/tests/__snapshots__/selection.test.tsx.snap
@@ -1,14 +1,15 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`select single element on the scene arrow 1`] = `
-Object {
+exports[`select single element on the scene > arrow 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": "arrow",
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -16,24 +17,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
30,
50,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -46,15 +47,16 @@ Object {
}
`;
-exports[`select single element on the scene arrow escape 1`] = `
-Object {
+exports[`select single element on the scene > arrow escape 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -62,24 +64,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
30,
50,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -92,13 +94,14 @@ Object {
}
`;
-exports[`select single element on the scene diamond 1`] = `
-Object {
+exports[`select single element on the scene > diamond 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -106,11 +109,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "diamond",
@@ -123,13 +126,14 @@ Object {
}
`;
-exports[`select single element on the scene ellipse 1`] = `
-Object {
+exports[`select single element on the scene > ellipse 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -137,11 +141,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "ellipse",
@@ -154,13 +158,14 @@ Object {
}
`;
-exports[`select single element on the scene rectangle 1`] = `
-Object {
+exports[`select single element on the scene > rectangle 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"boundElements": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 50,
"id": "id0",
"isDeleted": false,
@@ -168,11 +173,11 @@ Object {
"locked": false,
"opacity": 100,
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": 337897,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "rectangle",
diff --git a/src/tests/appState.test.tsx b/src/tests/appState.test.tsx
index aa5924925..2572d2545 100644
--- a/src/tests/appState.test.tsx
+++ b/src/tests/appState.test.tsx
@@ -1,4 +1,5 @@
import { queryByTestId, render, waitFor } from "./test-utils";
+
import ExcalidrawApp from "../excalidraw-app";
import { API } from "./helpers/api";
import { getDefaultAppState } from "../appState";
diff --git a/src/tests/binding.test.tsx b/src/tests/binding.test.tsx
index 52bfad100..5a5663286 100644
--- a/src/tests/binding.test.tsx
+++ b/src/tests/binding.test.tsx
@@ -4,6 +4,7 @@ import { UI, Pointer, Keyboard } from "./helpers/ui";
import { getTransformHandles } from "../element/transformHandles";
import { API } from "./helpers/api";
import { KEYS } from "../keys";
+import { actionWrapTextInContainer } from "../actions/actionBoundText";
const { h } = window;
@@ -14,6 +15,61 @@ describe("element binding", () => {
await render( );
});
+ it("should create valid binding if duplicate start/end points", async () => {
+ const rect = API.createElement({
+ type: "rectangle",
+ x: 0,
+ width: 50,
+ height: 50,
+ });
+ const arrow = API.createElement({
+ type: "arrow",
+ x: 100,
+ y: 0,
+ width: 100,
+ height: 1,
+ points: [
+ [0, 0],
+ [0, 0],
+ [100, 0],
+ [100, 0],
+ ],
+ });
+ h.elements = [rect, arrow];
+ expect(arrow.startBinding).toBe(null);
+
+ API.setSelectedElements([arrow]);
+
+ expect(API.getSelectedElements()).toEqual([arrow]);
+ mouse.downAt(100, 0);
+ mouse.moveTo(55, 0);
+ mouse.up(0, 0);
+ expect(arrow.startBinding).toEqual({
+ elementId: rect.id,
+ focus: expect.toBeNonNaNNumber(),
+ gap: expect.toBeNonNaNNumber(),
+ });
+
+ mouse.downAt(100, 0);
+ mouse.move(-45, 0);
+ mouse.up();
+ expect(arrow.startBinding).toEqual({
+ elementId: rect.id,
+ focus: expect.toBeNonNaNNumber(),
+ gap: expect.toBeNonNaNNumber(),
+ });
+
+ mouse.down();
+ mouse.move(-50, 0);
+ mouse.up();
+ expect(arrow.startBinding).toBe(null);
+ expect(arrow.endBinding).toEqual({
+ elementId: rect.id,
+ focus: expect.toBeNonNaNNumber(),
+ gap: expect.toBeNonNaNNumber(),
+ });
+ });
+
//@TODO fix the test with rotation
it.skip("rotation of arrow should rebind both ends", () => {
const rectLeft = UI.createElement("rectangle", {
@@ -209,4 +265,103 @@ describe("element binding", () => {
).toBe(null);
expect(arrow.endBinding?.elementId).toBe(text.id);
});
+
+ it("should update binding when text containerized", async () => {
+ const rectangle1 = API.createElement({
+ type: "rectangle",
+ id: "rectangle1",
+ width: 100,
+ height: 100,
+ boundElements: [
+ { id: "arrow1", type: "arrow" },
+ { id: "arrow2", type: "arrow" },
+ ],
+ });
+
+ const arrow1 = API.createElement({
+ type: "arrow",
+ id: "arrow1",
+ points: [
+ [0, 0],
+ [0, -87.45777932247563],
+ ],
+ startBinding: {
+ elementId: "rectangle1",
+ focus: 0.2,
+ gap: 7,
+ },
+ endBinding: {
+ elementId: "text1",
+ focus: 0.2,
+ gap: 7,
+ },
+ });
+
+ const arrow2 = API.createElement({
+ type: "arrow",
+ id: "arrow2",
+ points: [
+ [0, 0],
+ [0, -87.45777932247563],
+ ],
+ startBinding: {
+ elementId: "text1",
+ focus: 0.2,
+ gap: 7,
+ },
+ endBinding: {
+ elementId: "rectangle1",
+ focus: 0.2,
+ gap: 7,
+ },
+ });
+
+ const text1 = API.createElement({
+ type: "text",
+ id: "text1",
+ text: "ola",
+ boundElements: [
+ { id: "arrow1", type: "arrow" },
+ { id: "arrow2", type: "arrow" },
+ ],
+ });
+
+ h.elements = [rectangle1, arrow1, arrow2, text1];
+
+ API.setSelectedElements([text1]);
+
+ expect(h.state.selectedElementIds[text1.id]).toBe(true);
+
+ h.app.actionManager.executeAction(actionWrapTextInContainer);
+
+ // new text container will be placed before the text element
+ const container = h.elements.at(-2)!;
+
+ expect(container.type).toBe("rectangle");
+ expect(container.id).not.toBe(rectangle1.id);
+
+ expect(container).toEqual(
+ expect.objectContaining({
+ boundElements: expect.arrayContaining([
+ {
+ type: "text",
+ id: text1.id,
+ },
+ {
+ type: "arrow",
+ id: arrow1.id,
+ },
+ {
+ type: "arrow",
+ id: arrow2.id,
+ },
+ ]),
+ }),
+ );
+
+ expect(arrow1.startBinding?.elementId).toBe(rectangle1.id);
+ expect(arrow1.endBinding?.elementId).toBe(container.id);
+ expect(arrow2.startBinding?.elementId).toBe(container.id);
+ expect(arrow2.endBinding?.elementId).toBe(rectangle1.id);
+ });
});
diff --git a/src/tests/clients.test.ts b/src/tests/clients.test.ts
index f3fd174b4..e78cf1864 100644
--- a/src/tests/clients.test.ts
+++ b/src/tests/clients.test.ts
@@ -1,39 +1,39 @@
-import { getClientInitials } from "../clients";
+import { getNameInitial } from "../clients";
describe("getClientInitials", () => {
it("returns substring if one name provided", () => {
- const result = getClientInitials("Alan");
- expect(result).toBe("A");
+ expect(getNameInitial("Alan")).toBe("A");
});
it("returns initials", () => {
- const result = getClientInitials("John Doe");
- expect(result).toBe("J");
+ expect(getNameInitial("John Doe")).toBe("J");
});
it("returns correct initials if many names provided", () => {
- const result = getClientInitials("John Alan Doe");
- expect(result).toBe("J");
+ expect(getNameInitial("John Alan Doe")).toBe("J");
});
it("returns single initial if 1 letter provided", () => {
- const result = getClientInitials("z");
- expect(result).toBe("Z");
+ expect(getNameInitial("z")).toBe("Z");
});
it("trims trailing whitespace", () => {
- const result = getClientInitials(" q ");
- expect(result).toBe("Q");
+ expect(getNameInitial(" q ")).toBe("Q");
});
it('returns "?" if falsey value provided', () => {
- let result = getClientInitials("");
- expect(result).toBe("?");
+ expect(getNameInitial("")).toBe("?");
+ expect(getNameInitial(undefined)).toBe("?");
+ expect(getNameInitial(null)).toBe("?");
+ });
- result = getClientInitials(undefined);
- expect(result).toBe("?");
+ it('returns "?" when value is blank', () => {
+ expect(getNameInitial(" ")).toBe("?");
+ });
- result = getClientInitials(null);
- expect(result).toBe("?");
+ it("works with multibyte strings", () => {
+ expect(getNameInitial("😀")).toBe("😀");
+ // but doesn't work with emoji ZWJ sequences
+ expect(getNameInitial("👨👩👦")).toBe("👨");
});
});
diff --git a/src/tests/clipboard.test.tsx b/src/tests/clipboard.test.tsx
index 66e5ce744..67a081013 100644
--- a/src/tests/clipboard.test.tsx
+++ b/src/tests/clipboard.test.tsx
@@ -1,25 +1,35 @@
+import { vi } from "vitest";
import ReactDOM from "react-dom";
-import { render, waitFor, GlobalTestState } from "./test-utils";
+import {
+ render,
+ waitFor,
+ GlobalTestState,
+ createPasteEvent,
+} from "./test-utils";
import { Pointer, Keyboard } from "./helpers/ui";
import ExcalidrawApp from "../excalidraw-app";
import { KEYS } from "../keys";
-import { getApproxLineHeight } from "../element/textElement";
-import { getFontString } from "../utils";
+import {
+ getDefaultLineHeight,
+ getLineHeightInPx,
+} from "../element/textElement";
import { getElementBounds } from "../element";
import { NormalizedZoomValue } from "../types";
+import { API } from "./helpers/api";
+import { copyToClipboard } from "../clipboard";
const { h } = window;
const mouse = new Pointer("mouse");
-jest.mock("../keys.ts", () => {
- const actual = jest.requireActual("../keys.ts");
+vi.mock("../keys.ts", async (importOriginal) => {
+ const module: any = await importOriginal();
return {
__esmodule: true,
- ...actual,
+ ...module,
isDarwin: false,
KEYS: {
- ...actual.KEYS,
+ ...module.KEYS,
CTRL_OR_CMD: "ctrlKey",
},
};
@@ -33,38 +43,28 @@ const setClipboardText = (text: string) => {
});
};
-const sendPasteEvent = () => {
- const clipboardEvent = new Event("paste", {
- bubbles: true,
- cancelable: true,
- composed: true,
- });
-
- // set `clipboardData` properties.
- // @ts-ignore
- clipboardEvent.clipboardData = {
- getData: () => window.navigator.clipboard.readText(),
- files: [],
- };
-
+const sendPasteEvent = (text?: string) => {
+ const clipboardEvent = createPasteEvent(
+ text || (() => window.navigator.clipboard.readText()),
+ );
document.dispatchEvent(clipboardEvent);
};
-const pasteWithCtrlCmdShiftV = () => {
+const pasteWithCtrlCmdShiftV = (text?: string) => {
Keyboard.withModifierKeys({ ctrl: true, shift: true }, () => {
//triggering keydown with an empty clipboard
Keyboard.keyPress(KEYS.V);
//triggering paste event with faked clipboard
- sendPasteEvent();
+ sendPasteEvent(text);
});
};
-const pasteWithCtrlCmdV = () => {
+const pasteWithCtrlCmdV = (text?: string) => {
Keyboard.withModifierKeys({ ctrl: true }, () => {
//triggering keydown with an empty clipboard
Keyboard.keyPress(KEYS.V);
//triggering paste event with faked clipboard
- sendPasteEvent();
+ sendPasteEvent(text);
});
};
@@ -87,6 +87,32 @@ beforeEach(async () => {
});
});
+describe("general paste behavior", () => {
+ it("should randomize seed on paste", async () => {
+ const rectangle = API.createElement({ type: "rectangle" });
+ const clipboardJSON = (await copyToClipboard([rectangle], null))!;
+
+ pasteWithCtrlCmdV(clipboardJSON);
+
+ await waitFor(() => {
+ expect(h.elements.length).toBe(1);
+ expect(h.elements[0].seed).not.toBe(rectangle.seed);
+ });
+ });
+
+ it("should retain seed on shift-paste", async () => {
+ const rectangle = API.createElement({ type: "rectangle" });
+ const clipboardJSON = (await copyToClipboard([rectangle], null))!;
+
+ // assert we don't randomize seed on shift-paste
+ pasteWithCtrlCmdShiftV(clipboardJSON);
+ await waitFor(() => {
+ expect(h.elements.length).toBe(1);
+ expect(h.elements[0].seed).toBe(rectangle.seed);
+ });
+ });
+});
+
describe("paste text as single lines", () => {
it("should create an element for each line when copying with Ctrl/Cmd+V", async () => {
const text = "sajgfakfn\naaksfnknas\nakefnkasf";
@@ -118,12 +144,10 @@ describe("paste text as single lines", () => {
it("should space items correctly", async () => {
const text = "hkhkjhki\njgkjhffjh\njgkjhffjh";
- const lineHeight =
- getApproxLineHeight(
- getFontString({
- fontSize: h.app.state.currentItemFontSize,
- fontFamily: h.app.state.currentItemFontFamily,
- }),
+ const lineHeightPx =
+ getLineHeightInPx(
+ h.app.state.currentItemFontSize,
+ getDefaultLineHeight(h.state.currentItemFontFamily),
) +
10 / h.app.state.zoom.value;
mouse.moveTo(100, 100);
@@ -135,19 +159,17 @@ describe("paste text as single lines", () => {
for (let i = 1; i < h.elements.length; i++) {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [fx, elY] = getElementBounds(h.elements[i]);
- expect(elY).toEqual(firstElY + lineHeight * i);
+ expect(elY).toEqual(firstElY + lineHeightPx * i);
}
});
});
it("should leave a space for blank new lines", async () => {
const text = "hkhkjhki\n\njgkjhffjh";
- const lineHeight =
- getApproxLineHeight(
- getFontString({
- fontSize: h.app.state.currentItemFontSize,
- fontFamily: h.app.state.currentItemFontFamily,
- }),
+ const lineHeightPx =
+ getLineHeightInPx(
+ h.app.state.currentItemFontSize,
+ getDefaultLineHeight(h.state.currentItemFontFamily),
) +
10 / h.app.state.zoom.value;
mouse.moveTo(100, 100);
@@ -158,7 +180,7 @@ describe("paste text as single lines", () => {
const [fx, firstElY] = getElementBounds(h.elements[0]);
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [lx, lastElY] = getElementBounds(h.elements[1]);
- expect(lastElY).toEqual(firstElY + lineHeight * 2);
+ expect(lastElY).toEqual(firstElY + lineHeightPx * 2);
});
});
});
@@ -182,3 +204,73 @@ describe("paste text as a single element", () => {
});
});
});
+
+describe("Paste bound text container", () => {
+ const container = {
+ type: "ellipse",
+ id: "container-id",
+ x: 554.984375,
+ y: 196.0234375,
+ width: 166,
+ height: 187.01953125,
+ roundness: { type: 2 },
+ boundElements: [{ type: "text", id: "text-id" }],
+ };
+ const textElement = {
+ type: "text",
+ id: "text-id",
+ x: 560.51171875,
+ y: 202.033203125,
+ width: 154,
+ height: 175,
+ fontSize: 20,
+ fontFamily: 1,
+ text: "Excalidraw is a\nvirtual \nopensource \nwhiteboard for \nsketching \nhand-drawn like\ndiagrams",
+ baseline: 168,
+ textAlign: "center",
+ verticalAlign: "middle",
+ containerId: container.id,
+ originalText:
+ "Excalidraw is a virtual opensource whiteboard for sketching hand-drawn like diagrams",
+ };
+
+ it("should fix ellipse bounding box", async () => {
+ const data = JSON.stringify({
+ type: "excalidraw/clipboard",
+ elements: [container, textElement],
+ });
+ setClipboardText(data);
+ pasteWithCtrlCmdShiftV();
+
+ await waitFor(async () => {
+ await sleep(1);
+ expect(h.elements.length).toEqual(2);
+ const container = h.elements[0];
+ expect(container.height).toBe(368);
+ expect(container.width).toBe(166);
+ });
+ });
+
+ it("should fix diamond bounding box", async () => {
+ const data = JSON.stringify({
+ type: "excalidraw/clipboard",
+ elements: [
+ {
+ ...container,
+ type: "diamond",
+ },
+ textElement,
+ ],
+ });
+ setClipboardText(data);
+ pasteWithCtrlCmdShiftV();
+
+ await waitFor(async () => {
+ await sleep(1);
+ expect(h.elements.length).toEqual(2);
+ const container = h.elements[0];
+ expect(container.height).toBe(770);
+ expect(container.width).toBe(166);
+ });
+ });
+});
diff --git a/src/tests/collab.test.tsx b/src/tests/collab.test.tsx
index 42ad571a3..c5d4f6c44 100644
--- a/src/tests/collab.test.tsx
+++ b/src/tests/collab.test.tsx
@@ -1,3 +1,4 @@
+import { vi } from "vitest";
import { render, updateSceneData, waitFor } from "./test-utils";
import ExcalidrawApp from "../excalidraw-app";
import { API } from "./helpers/api";
@@ -15,15 +16,18 @@ Object.defineProperty(window, "crypto", {
},
});
-jest.mock("../excalidraw-app/data/index.ts", () => ({
- __esmodule: true,
- ...jest.requireActual("../excalidraw-app/data/index.ts"),
- getCollabServer: jest.fn(() => ({
- url: /* doesn't really matter */ "http://localhost:3002",
- })),
-}));
+vi.mock("../excalidraw-app/data/index.ts", async (importActual) => {
+ const module = (await importActual()) as any;
+ return {
+ __esmodule: true,
+ ...module,
+ getCollabServer: vi.fn(() => ({
+ url: /* doesn't really matter */ "http://localhost:3002",
+ })),
+ };
+});
-jest.mock("../excalidraw-app/data/firebase.ts", () => {
+vi.mock("../excalidraw-app/data/firebase.ts", () => {
const loadFromFirebase = async () => null;
const saveToFirebase = () => {};
const isSavedToFirebase = () => true;
@@ -45,15 +49,17 @@ jest.mock("../excalidraw-app/data/firebase.ts", () => {
};
});
-jest.mock("socket.io-client", () => {
- return () => {
- return {
- close: () => {},
- on: () => {},
- once: () => {},
- off: () => {},
- emit: () => {},
- };
+vi.mock("socket.io-client", () => {
+ return {
+ default: () => {
+ return {
+ close: () => {},
+ on: () => {},
+ once: () => {},
+ off: () => {},
+ emit: () => {},
+ };
+ },
};
});
diff --git a/src/tests/contextmenu.test.tsx b/src/tests/contextmenu.test.tsx
index 55841b243..c581a0ff1 100644
--- a/src/tests/contextmenu.test.tsx
+++ b/src/tests/contextmenu.test.tsx
@@ -9,6 +9,7 @@ import {
queryByText,
queryAllByText,
waitFor,
+ togglePopover,
} from "./test-utils";
import ExcalidrawApp from "../excalidraw-app";
import * as Renderer from "../renderer/renderScene";
@@ -19,8 +20,8 @@ import { ShortcutName } from "../actions/shortcuts";
import { copiedStyles } from "../actions/actionStyles";
import { API } from "./helpers/api";
import { setDateTimeForTests } from "../utils";
-import { t } from "../i18n";
import { LibraryItem } from "../types";
+import { vi } from "vitest";
const checkpoint = (name: string) => {
expect(renderScene.mock.calls.length).toMatchSnapshot(
@@ -39,7 +40,7 @@ const mouse = new Pointer("mouse");
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
@@ -125,7 +126,7 @@ describe("contextMenu element", () => {
"bringToFront",
"duplicateSelection",
"hyperlink",
- "toggleLock",
+ "toggleElementLock",
];
expect(contextMenu).not.toBeNull();
@@ -207,12 +208,14 @@ describe("contextMenu element", () => {
"deleteSelectedElements",
"group",
"addToLibrary",
+ "flipHorizontal",
+ "flipVertical",
"sendBackward",
"bringForward",
"sendToBack",
"bringToFront",
"duplicateSelection",
- "toggleLock",
+ "toggleElementLock",
];
expect(contextMenu).not.toBeNull();
@@ -258,12 +261,14 @@ describe("contextMenu element", () => {
"deleteSelectedElements",
"ungroup",
"addToLibrary",
+ "flipHorizontal",
+ "flipVertical",
"sendBackward",
"bringForward",
"sendToBack",
"bringToFront",
"duplicateSelection",
- "toggleLock",
+ "toggleElementLock",
];
expect(contextMenu).not.toBeNull();
@@ -287,7 +292,7 @@ describe("contextMenu element", () => {
});
const contextMenu = UI.queryContextMenu();
expect(copiedStyles).toBe("{}");
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Copy styles")!);
+ fireEvent.click(queryByText(contextMenu!, "Copy styles")!);
expect(copiedStyles).not.toBe("{}");
const element = JSON.parse(copiedStyles)[0];
expect(element).toEqual(API.getSelectedElement());
@@ -303,10 +308,10 @@ describe("contextMenu element", () => {
mouse.up(20, 20);
// Change some styles of second rectangle
- UI.clickLabeledElement("Stroke");
- UI.clickLabeledElement(t("colors.c92a2a"));
- UI.clickLabeledElement("Background");
- UI.clickLabeledElement(t("colors.e64980"));
+ togglePopover("Stroke");
+ UI.clickOnTestId("color-red");
+ togglePopover("Background");
+ UI.clickOnTestId("color-blue");
// Fill style
fireEvent.click(screen.getByTitle("Cross-hatch"));
// Stroke width
@@ -320,15 +325,22 @@ describe("contextMenu element", () => {
target: { value: "60" },
});
+ // closing the background popover as this blocks
+ // context menu from rendering after we started focussing
+ // the popover once rendered :/
+ togglePopover("Background");
+
mouse.reset();
+
// Copy styles of second rectangle
fireEvent.contextMenu(GlobalTestState.canvas, {
button: 2,
clientX: 40,
clientY: 40,
});
+
let contextMenu = UI.queryContextMenu();
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Copy styles")!);
+ fireEvent.click(queryByText(contextMenu!, "Copy styles")!);
const secondRect = JSON.parse(copiedStyles)[0];
expect(secondRect.id).toBe(h.elements[1].id);
@@ -340,12 +352,12 @@ describe("contextMenu element", () => {
clientY: 10,
});
contextMenu = UI.queryContextMenu();
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Paste styles")!);
+ fireEvent.click(queryByText(contextMenu!, "Paste styles")!);
const firstRect = API.getSelectedElement();
expect(firstRect.id).toBe(h.elements[0].id);
- expect(firstRect.strokeColor).toBe("#c92a2a");
- expect(firstRect.backgroundColor).toBe("#e64980");
+ expect(firstRect.strokeColor).toBe("#e03131");
+ expect(firstRect.backgroundColor).toBe("#a5d8ff");
expect(firstRect.fillStyle).toBe("cross-hatch");
expect(firstRect.strokeWidth).toBe(2); // Bold: 2
expect(firstRect.strokeStyle).toBe("dotted");
@@ -364,7 +376,7 @@ describe("contextMenu element", () => {
clientY: 1,
});
const contextMenu = UI.queryContextMenu();
- fireEvent.click(queryAllByText(contextMenu as HTMLElement, "Delete")[0]);
+ fireEvent.click(queryAllByText(contextMenu!, "Delete")[0]);
expect(API.getSelectedElements()).toHaveLength(0);
expect(h.elements[0].isDeleted).toBe(true);
});
@@ -380,7 +392,7 @@ describe("contextMenu element", () => {
clientY: 1,
});
const contextMenu = UI.queryContextMenu();
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Add to library")!);
+ fireEvent.click(queryByText(contextMenu!, "Add to library")!);
await waitFor(() => {
const library = localStorage.getItem("excalidraw-library");
@@ -401,7 +413,7 @@ describe("contextMenu element", () => {
clientY: 1,
});
const contextMenu = UI.queryContextMenu();
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Duplicate")!);
+ fireEvent.click(queryByText(contextMenu!, "Duplicate")!);
expect(h.elements).toHaveLength(2);
const { id: _id0, seed: _seed0, x: _x0, y: _y0, ...rect1 } = h.elements[0];
const { id: _id1, seed: _seed1, x: _x1, y: _y1, ...rect2 } = h.elements[1];
@@ -425,7 +437,7 @@ describe("contextMenu element", () => {
});
const contextMenu = UI.queryContextMenu();
const elementsBefore = h.elements;
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Send backward")!);
+ fireEvent.click(queryByText(contextMenu!, "Send backward")!);
expect(elementsBefore[0].id).toEqual(h.elements[1].id);
expect(elementsBefore[1].id).toEqual(h.elements[0].id);
});
@@ -447,7 +459,7 @@ describe("contextMenu element", () => {
});
const contextMenu = UI.queryContextMenu();
const elementsBefore = h.elements;
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Bring forward")!);
+ fireEvent.click(queryByText(contextMenu!, "Bring forward")!);
expect(elementsBefore[0].id).toEqual(h.elements[1].id);
expect(elementsBefore[1].id).toEqual(h.elements[0].id);
});
@@ -469,7 +481,7 @@ describe("contextMenu element", () => {
});
const contextMenu = UI.queryContextMenu();
const elementsBefore = h.elements;
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Send to back")!);
+ fireEvent.click(queryByText(contextMenu!, "Send to back")!);
expect(elementsBefore[1].id).toEqual(h.elements[0].id);
});
@@ -490,7 +502,7 @@ describe("contextMenu element", () => {
});
const contextMenu = UI.queryContextMenu();
const elementsBefore = h.elements;
- fireEvent.click(queryByText(contextMenu as HTMLElement, "Bring to front")!);
+ fireEvent.click(queryByText(contextMenu!, "Bring to front")!);
expect(elementsBefore[0].id).toEqual(h.elements[1].id);
});
@@ -514,9 +526,7 @@ describe("contextMenu element", () => {
clientY: 1,
});
const contextMenu = UI.queryContextMenu();
- fireEvent.click(
- queryByText(contextMenu as HTMLElement, "Group selection")!,
- );
+ fireEvent.click(queryByText(contextMenu!, "Group selection")!);
const selectedGroupIds = Object.keys(h.state.selectedGroupIds);
expect(h.elements[0].groupIds).toEqual(selectedGroupIds);
expect(h.elements[1].groupIds).toEqual(selectedGroupIds);
@@ -548,9 +558,7 @@ describe("contextMenu element", () => {
const contextMenu = UI.queryContextMenu();
expect(contextMenu).not.toBeNull();
- fireEvent.click(
- queryByText(contextMenu as HTMLElement, "Ungroup selection")!,
- );
+ fireEvent.click(queryByText(contextMenu!, "Ungroup selection")!);
const selectedGroupIds = Object.keys(h.state.selectedGroupIds);
expect(selectedGroupIds).toHaveLength(0);
diff --git a/src/tests/data/__snapshots__/restore.test.ts.snap b/src/tests/data/__snapshots__/restore.test.ts.snap
index 8af4f83c9..881940210 100644
--- a/src/tests/data/__snapshots__/restore.test.ts.snap
+++ b/src/tests/data/__snapshots__/restore.test.ts.snap
@@ -1,14 +1,15 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`restoreElements should restore arrow element correctly 1`] = `
-Object {
+exports[`restoreElements > should restore arrow element correctly 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [],
+ "boundElements": [],
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id-arrow01",
"isDeleted": false,
@@ -16,24 +17,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
100,
100,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": Any,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "arrow",
@@ -46,13 +47,14 @@ Object {
}
`;
-exports[`restoreElements should restore correctly with rectangle, ellipse and diamond elements 1`] = `
-Object {
+exports[`restoreElements > should restore correctly with rectangle, ellipse and diamond elements 1`] = `
+{
"angle": 0,
"backgroundColor": "blue",
- "boundElements": Array [],
+ "boundElements": [],
"fillStyle": "cross-hatch",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"1",
"2",
"3",
@@ -64,7 +66,7 @@ Object {
"locked": false,
"opacity": 10,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
@@ -81,13 +83,14 @@ Object {
}
`;
-exports[`restoreElements should restore correctly with rectangle, ellipse and diamond elements 2`] = `
-Object {
+exports[`restoreElements > should restore correctly with rectangle, ellipse and diamond elements 2`] = `
+{
"angle": 0,
"backgroundColor": "blue",
- "boundElements": Array [],
+ "boundElements": [],
"fillStyle": "cross-hatch",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"1",
"2",
"3",
@@ -99,7 +102,7 @@ Object {
"locked": false,
"opacity": 10,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
@@ -116,13 +119,14 @@ Object {
}
`;
-exports[`restoreElements should restore correctly with rectangle, ellipse and diamond elements 3`] = `
-Object {
+exports[`restoreElements > should restore correctly with rectangle, ellipse and diamond elements 3`] = `
+{
"angle": 0,
"backgroundColor": "blue",
- "boundElements": Array [],
+ "boundElements": [],
"fillStyle": "cross-hatch",
- "groupIds": Array [
+ "frameId": null,
+ "groupIds": [
"1",
"2",
"3",
@@ -134,7 +138,7 @@ Object {
"locked": false,
"opacity": 10,
"roughness": 2,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
@@ -151,13 +155,14 @@ Object {
}
`;
-exports[`restoreElements should restore freedraw element correctly 1`] = `
-Object {
+exports[`restoreElements > should restore freedraw element correctly 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [],
+ "boundElements": [],
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 0,
"id": "id-freedraw01",
"isDeleted": false,
@@ -165,15 +170,15 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [],
- "pressures": Array [],
+ "points": [],
+ "pressures": [],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
"simulatePressure": true,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "freedraw",
@@ -186,15 +191,16 @@ Object {
}
`;
-exports[`restoreElements should restore line and draw elements correctly 1`] = `
-Object {
+exports[`restoreElements > should restore line and draw elements correctly 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [],
+ "boundElements": [],
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id-line01",
"isDeleted": false,
@@ -202,24 +208,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
100,
100,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": Any,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -232,15 +238,16 @@ Object {
}
`;
-exports[`restoreElements should restore line and draw elements correctly 2`] = `
-Object {
+exports[`restoreElements > should restore line and draw elements correctly 2`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
- "boundElements": Array [],
+ "boundElements": [],
"endArrowhead": null,
"endBinding": null,
"fillStyle": "hachure",
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id-draw01",
"isDeleted": false,
@@ -248,24 +255,24 @@ Object {
"link": null,
"locked": false,
"opacity": 100,
- "points": Array [
- Array [
+ "points": [
+ [
0,
0,
],
- Array [
+ [
100,
100,
],
],
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 2,
},
"seed": Any,
"startArrowhead": null,
"startBinding": null,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"type": "line",
@@ -278,30 +285,32 @@ Object {
}
`;
-exports[`restoreElements should restore text element correctly passing value for each attribute 1`] = `
-Object {
+exports[`restoreElements > should restore text element correctly passing value for each attribute 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"baseline": 0,
- "boundElements": Array [],
+ "boundElements": [],
"containerId": null,
"fillStyle": "hachure",
"fontFamily": 1,
"fontSize": 14,
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id-text01",
"isDeleted": false,
+ "lineHeight": 1.25,
"link": null,
"locked": false,
"opacity": 100,
"originalText": "text",
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"text": "text",
@@ -312,35 +321,37 @@ Object {
"versionNonce": 0,
"verticalAlign": "middle",
"width": 100,
- "x": -0.5,
- "y": 0,
+ "x": -20,
+ "y": -8.75,
}
`;
-exports[`restoreElements should restore text element correctly with unknown font family, null text and undefined alignment 1`] = `
-Object {
+exports[`restoreElements > should restore text element correctly with unknown font family, null text and undefined alignment 1`] = `
+{
"angle": 0,
"backgroundColor": "transparent",
"baseline": 0,
- "boundElements": Array [],
+ "boundElements": [],
"containerId": null,
"fillStyle": "hachure",
"fontFamily": 1,
"fontSize": 10,
- "groupIds": Array [],
+ "frameId": null,
+ "groupIds": [],
"height": 100,
"id": "id-text01",
"isDeleted": false,
+ "lineHeight": 1.25,
"link": null,
"locked": false,
"opacity": 100,
"originalText": "test",
"roughness": 1,
- "roundness": Object {
+ "roundness": {
"type": 3,
},
"seed": Any,
- "strokeColor": "#000000",
+ "strokeColor": "#1e1e1e",
"strokeStyle": "solid",
"strokeWidth": 1,
"text": "",
diff --git a/src/tests/data/restore.test.ts b/src/tests/data/restore.test.ts
index 6e6bf0a3e..e8ac49ede 100644
--- a/src/tests/data/restore.test.ts
+++ b/src/tests/data/restore.test.ts
@@ -10,16 +10,21 @@ import { API } from "../helpers/api";
import { getDefaultAppState } from "../../appState";
import { ImportedDataState } from "../../data/types";
import { NormalizedZoomValue } from "../../types";
-import { FONT_FAMILY, ROUNDNESS } from "../../constants";
+import { DEFAULT_SIDEBAR, FONT_FAMILY, ROUNDNESS } from "../../constants";
import { newElementWith } from "../../element/mutateElement";
-
-const mockSizeHelper = jest.spyOn(sizeHelpers, "isInvisiblySmallElement");
-
-beforeEach(() => {
- mockSizeHelper.mockReset();
-});
+import { vi } from "vitest";
describe("restoreElements", () => {
+ const mockSizeHelper = vi.spyOn(sizeHelpers, "isInvisiblySmallElement");
+
+ beforeEach(() => {
+ mockSizeHelper.mockReset();
+ });
+
+ afterAll(() => {
+ mockSizeHelper.mockRestore();
+ });
+
it("should return empty array when element is null", () => {
expect(restore.restoreElements(null, null)).toStrictEqual([]);
});
@@ -148,7 +153,7 @@ describe("restoreElements", () => {
it("when arrow element has undefined endArrowHead", () => {
const arrowElement = API.createElement({ type: "arrow" });
Object.defineProperty(arrowElement, "endArrowhead", {
- get: jest.fn(() => undefined),
+ get: vi.fn(() => undefined),
});
const restoredElements = restore.restoreElements([arrowElement], null);
@@ -201,7 +206,7 @@ describe("restoreElements", () => {
[1, 1],
];
Object.defineProperty(lineElement_0, "points", {
- get: jest.fn(() => pointsEl_0),
+ get: vi.fn(() => pointsEl_0),
});
const pointsEl_1 = [
@@ -209,7 +214,7 @@ describe("restoreElements", () => {
[5, 6],
];
Object.defineProperty(lineElement_1, "points", {
- get: jest.fn(() => pointsEl_1),
+ get: vi.fn(() => pointsEl_1),
});
const restoredElements = restore.restoreElements(
@@ -241,7 +246,7 @@ describe("restoreElements", () => {
types.forEach((elType) => {
idCount += 1;
const element = API.createElement({
- type: elType as "rectangle" | "ellipse" | "diamond",
+ type: elType as "rectangle" | "ellipse" | "diamond" | "embeddable",
id: idCount.toString(),
fillStyle: "cross-hatch",
strokeWidth: 2,
@@ -436,7 +441,7 @@ describe("restoreAppState", () => {
const stubImportedAppState = getDefaultAppState();
Object.defineProperty(stubImportedAppState, "zoom", {
- get: jest.fn(() => null),
+ get: vi.fn(() => null),
});
const stubLocalAppState = getDefaultAppState();
@@ -449,6 +454,29 @@ describe("restoreAppState", () => {
expect(restoredAppState.zoom).toMatchObject(getDefaultAppState().zoom);
});
});
+
+ it("should handle appState.openSidebar legacy values", () => {
+ expect(restore.restoreAppState({}, null).openSidebar).toBe(null);
+ expect(
+ restore.restoreAppState({ openSidebar: "library" } as any, null)
+ .openSidebar,
+ ).toEqual({ name: DEFAULT_SIDEBAR.name });
+ expect(
+ restore.restoreAppState({ openSidebar: "xxx" } as any, null).openSidebar,
+ ).toEqual({ name: DEFAULT_SIDEBAR.name });
+ // while "library" was our legacy sidebar name, we can't assume it's legacy
+ // value as it may be some host app's custom sidebar name ¯\_(ツ)_/¯
+ expect(
+ restore.restoreAppState({ openSidebar: { name: "library" } } as any, null)
+ .openSidebar,
+ ).toEqual({ name: "library" });
+ expect(
+ restore.restoreAppState(
+ { openSidebar: { name: DEFAULT_SIDEBAR.name, tab: "ola" } } as any,
+ null,
+ ).openSidebar,
+ ).toEqual({ name: DEFAULT_SIDEBAR.name, tab: "ola" });
+ });
});
describe("restore", () => {
@@ -528,3 +556,236 @@ describe("restore", () => {
]);
});
});
+
+describe("repairing bindings", () => {
+ it("should repair container boundElements when repair is true", () => {
+ const container = API.createElement({
+ type: "rectangle",
+ boundElements: [],
+ });
+ const boundElement = API.createElement({
+ type: "text",
+ containerId: container.id,
+ });
+
+ expect(container.boundElements).toEqual([]);
+
+ let restoredElements = restore.restoreElements(
+ [container, boundElement],
+ null,
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+
+ restoredElements = restore.restoreElements(
+ [container, boundElement],
+ null,
+ { repairBindings: true },
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [{ type: boundElement.type, id: boundElement.id }],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+ });
+
+ it("should repair containerId of boundElements when repair is true", () => {
+ const boundElement = API.createElement({
+ type: "text",
+ containerId: null,
+ });
+ const container = API.createElement({
+ type: "rectangle",
+ boundElements: [{ type: boundElement.type, id: boundElement.id }],
+ });
+
+ let restoredElements = restore.restoreElements(
+ [container, boundElement],
+ null,
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [{ type: boundElement.type, id: boundElement.id }],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: null,
+ }),
+ ]);
+
+ restoredElements = restore.restoreElements(
+ [container, boundElement],
+ null,
+ { repairBindings: true },
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [{ type: boundElement.type, id: boundElement.id }],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+ });
+
+ it("should ignore bound element if deleted", () => {
+ const container = API.createElement({
+ type: "rectangle",
+ boundElements: [],
+ });
+ const boundElement = API.createElement({
+ type: "text",
+ containerId: container.id,
+ isDeleted: true,
+ });
+
+ expect(container.boundElements).toEqual([]);
+
+ const restoredElements = restore.restoreElements(
+ [container, boundElement],
+ null,
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+ });
+
+ it("should remove bindings of deleted elements from boundElements when repair is true", () => {
+ const container = API.createElement({
+ type: "rectangle",
+ boundElements: [],
+ });
+ const boundElement = API.createElement({
+ type: "text",
+ containerId: container.id,
+ isDeleted: true,
+ });
+ const invisibleBoundElement = API.createElement({
+ type: "text",
+ containerId: container.id,
+ width: 0,
+ height: 0,
+ });
+
+ const obsoleteBinding = { type: boundElement.type, id: boundElement.id };
+ const invisibleBinding = {
+ type: invisibleBoundElement.type,
+ id: invisibleBoundElement.id,
+ };
+ expect(container.boundElements).toEqual([]);
+
+ const nonExistentBinding = { type: "text", id: "non-existent" };
+ // @ts-ignore
+ container.boundElements = [
+ obsoleteBinding,
+ invisibleBinding,
+ nonExistentBinding,
+ ];
+
+ let restoredElements = restore.restoreElements(
+ [container, invisibleBoundElement, boundElement],
+ null,
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [obsoleteBinding, invisibleBinding, nonExistentBinding],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+
+ restoredElements = restore.restoreElements(
+ [container, invisibleBoundElement, boundElement],
+ null,
+ { repairBindings: true },
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: container.id,
+ boundElements: [],
+ }),
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: container.id,
+ }),
+ ]);
+ });
+
+ it("should remove containerId if container not exists when repair is true", () => {
+ const boundElement = API.createElement({
+ type: "text",
+ containerId: "non-existent",
+ });
+ const boundElementDeleted = API.createElement({
+ type: "text",
+ containerId: "non-existent",
+ isDeleted: true,
+ });
+
+ let restoredElements = restore.restoreElements(
+ [boundElement, boundElementDeleted],
+ null,
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: "non-existent",
+ }),
+ expect.objectContaining({
+ id: boundElementDeleted.id,
+ containerId: "non-existent",
+ }),
+ ]);
+
+ restoredElements = restore.restoreElements(
+ [boundElement, boundElementDeleted],
+ null,
+ { repairBindings: true },
+ );
+
+ expect(restoredElements).toEqual([
+ expect.objectContaining({
+ id: boundElement.id,
+ containerId: null,
+ }),
+ expect.objectContaining({
+ id: boundElementDeleted.id,
+ containerId: null,
+ }),
+ ]);
+ });
+});
diff --git a/src/tests/dragCreate.test.tsx b/src/tests/dragCreate.test.tsx
index 4e69f1ab8..3e01af04f 100644
--- a/src/tests/dragCreate.test.tsx
+++ b/src/tests/dragCreate.test.tsx
@@ -10,11 +10,12 @@ import {
} from "./test-utils";
import { ExcalidrawLinearElement } from "../element/types";
import { reseed } from "../random";
+import { vi } from "vitest";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
diff --git a/src/tests/elementLocking.test.tsx b/src/tests/elementLocking.test.tsx
index 6b98aa1ea..a2f6eb11d 100644
--- a/src/tests/elementLocking.test.tsx
+++ b/src/tests/elementLocking.test.tsx
@@ -152,7 +152,7 @@ describe("element locking", () => {
expect(contextMenu).not.toBeNull();
expect(
contextMenu?.querySelector(
- `li[data-testid="toggleLock"] .context-menu-option__label`,
+ `li[data-testid="toggleElementLock"] .context-menu-item__label`,
),
).toHaveTextContent(t("labels.elementLock.unlock"));
});
diff --git a/src/tests/fitToContent.test.tsx b/src/tests/fitToContent.test.tsx
new file mode 100644
index 000000000..580467dde
--- /dev/null
+++ b/src/tests/fitToContent.test.tsx
@@ -0,0 +1,177 @@
+import { render } from "./test-utils";
+import { API } from "./helpers/api";
+
+import ExcalidrawApp from "../excalidraw-app";
+import { vi } from "vitest";
+
+const { h } = window;
+
+describe("fitToContent", () => {
+ it("should zoom to fit the selected element", async () => {
+ await render( );
+
+ h.state.width = 10;
+ h.state.height = 10;
+
+ const rectElement = API.createElement({
+ width: 50,
+ height: 100,
+ x: 50,
+ y: 100,
+ });
+
+ expect(h.state.zoom.value).toBe(1);
+
+ h.app.scrollToContent(rectElement, { fitToContent: true });
+
+ // element is 10x taller than the viewport size,
+ // zoom should be at least 1/10
+ expect(h.state.zoom.value).toBeLessThanOrEqual(0.1);
+ });
+
+ it("should zoom to fit multiple elements", async () => {
+ await render( );
+
+ const topLeft = API.createElement({
+ width: 20,
+ height: 20,
+ x: 0,
+ y: 0,
+ });
+
+ const bottomRight = API.createElement({
+ width: 20,
+ height: 20,
+ x: 80,
+ y: 80,
+ });
+
+ h.state.width = 10;
+ h.state.height = 10;
+
+ expect(h.state.zoom.value).toBe(1);
+
+ h.app.scrollToContent([topLeft, bottomRight], {
+ fitToContent: true,
+ });
+
+ // elements take 100x100, which is 10x bigger than the viewport size,
+ // zoom should be at least 1/10
+ expect(h.state.zoom.value).toBeLessThanOrEqual(0.1);
+ });
+
+ it("should scroll the viewport to the selected element", async () => {
+ await render( );
+
+ h.state.width = 10;
+ h.state.height = 10;
+
+ const rectElement = API.createElement({
+ width: 100,
+ height: 100,
+ x: 100,
+ y: 100,
+ });
+
+ expect(h.state.zoom.value).toBe(1);
+ expect(h.state.scrollX).toBe(0);
+ expect(h.state.scrollY).toBe(0);
+
+ h.app.scrollToContent(rectElement);
+
+ // zoom level should stay the same
+ expect(h.state.zoom.value).toBe(1);
+
+ // state should reflect some scrolling
+ expect(h.state.scrollX).not.toBe(0);
+ expect(h.state.scrollY).not.toBe(0);
+ });
+});
+
+const waitForNextAnimationFrame = () => {
+ return new Promise((resolve) => {
+ requestAnimationFrame(() => {
+ requestAnimationFrame(resolve);
+ });
+ });
+};
+
+describe("fitToContent animated", () => {
+ beforeEach(() => {
+ vi.spyOn(window, "requestAnimationFrame");
+ });
+
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ it("should ease scroll the viewport to the selected element", async () => {
+ await render( );
+
+ h.state.width = 10;
+ h.state.height = 10;
+
+ const rectElement = API.createElement({
+ width: 100,
+ height: 100,
+ x: -100,
+ y: -100,
+ });
+
+ h.app.scrollToContent(rectElement, { animate: true });
+
+ expect(window.requestAnimationFrame).toHaveBeenCalled();
+
+ // Since this is an animation, we expect values to change through time.
+ // We'll verify that the scroll values change at 50ms and 100ms
+ expect(h.state.scrollX).toBe(0);
+ expect(h.state.scrollY).toBe(0);
+
+ await waitForNextAnimationFrame();
+
+ const prevScrollX = h.state.scrollX;
+ const prevScrollY = h.state.scrollY;
+
+ expect(h.state.scrollX).not.toBe(0);
+ expect(h.state.scrollY).not.toBe(0);
+
+ await waitForNextAnimationFrame();
+
+ expect(h.state.scrollX).not.toBe(prevScrollX);
+ expect(h.state.scrollY).not.toBe(prevScrollY);
+ });
+
+ it("should animate the scroll but not the zoom", async () => {
+ await render( );
+
+ h.state.width = 50;
+ h.state.height = 50;
+
+ const rectElement = API.createElement({
+ width: 100,
+ height: 100,
+ x: 100,
+ y: 100,
+ });
+
+ expect(h.state.scrollX).toBe(0);
+ expect(h.state.scrollY).toBe(0);
+
+ h.app.scrollToContent(rectElement, { animate: true, fitToContent: true });
+
+ expect(window.requestAnimationFrame).toHaveBeenCalled();
+
+ await waitForNextAnimationFrame();
+
+ const prevScrollX = h.state.scrollX;
+ const prevScrollY = h.state.scrollY;
+
+ expect(h.state.scrollX).not.toBe(0);
+ expect(h.state.scrollY).not.toBe(0);
+
+ await waitForNextAnimationFrame();
+
+ expect(h.state.scrollX).not.toBe(prevScrollX);
+ expect(h.state.scrollY).not.toBe(prevScrollY);
+ });
+});
diff --git a/src/tests/fixtures/elementFixture.ts b/src/tests/fixtures/elementFixture.ts
index e9db64891..ddd7b8b9d 100644
--- a/src/tests/fixtures/elementFixture.ts
+++ b/src/tests/fixtures/elementFixture.ts
@@ -15,6 +15,7 @@ const elementBase: Omit = {
roughness: 1,
opacity: 100,
groupIds: [],
+ frameId: null,
roundness: null,
seed: 1041657908,
version: 120,
@@ -30,6 +31,10 @@ export const rectangleFixture: ExcalidrawElement = {
...elementBase,
type: "rectangle",
};
+export const embeddableFixture: ExcalidrawElement = {
+ ...elementBase,
+ type: "embeddable",
+};
export const ellipseFixture: ExcalidrawElement = {
...elementBase,
type: "ellipse",
diff --git a/src/tests/flip.test.tsx b/src/tests/flip.test.tsx
index a388ad4eb..d1a30af0c 100644
--- a/src/tests/flip.test.tsx
+++ b/src/tests/flip.test.tsx
@@ -1,22 +1,58 @@
import ReactDOM from "react-dom";
-import { render } from "./test-utils";
-import App from "../components/App";
-import { defaultLang, setLanguage } from "../i18n";
+import {
+ createPasteEvent,
+ GlobalTestState,
+ render,
+ waitFor,
+} from "./test-utils";
import { UI, Pointer } from "./helpers/ui";
import { API } from "./helpers/api";
import { actionFlipHorizontal, actionFlipVertical } from "../actions";
+import { getElementAbsoluteCoords } from "../element";
+import {
+ ExcalidrawElement,
+ ExcalidrawImageElement,
+ ExcalidrawLinearElement,
+ FileId,
+} from "../element/types";
+import { newLinearElement } from "../element";
+import ExcalidrawApp from "../excalidraw-app";
+import { mutateElement } from "../element/mutateElement";
+import { NormalizedZoomValue } from "../types";
+import { ROUNDNESS } from "../constants";
+import { vi } from "vitest";
+import * as blob from "../data/blob";
const { h } = window;
-
const mouse = new Pointer("mouse");
+// This needs to fixed in vitest mock, as when importActual used with mock
+// the tests hangs - https://github.com/vitest-dev/vitest/issues/546.
+// But fortunately spying and mocking the return value of spy works :p
+
+const resizeImageFileSpy = vi.spyOn(blob, "resizeImageFile");
+const generateIdFromFileSpy = vi.spyOn(blob, "generateIdFromFile");
+
+resizeImageFileSpy.mockImplementation(async (imageFile: File) => imageFile);
+generateIdFromFileSpy.mockImplementation(async () => "fileId" as FileId);
beforeEach(async () => {
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
- mouse.reset();
- await setLanguage(defaultLang);
- await render( );
+ mouse.reset();
+ localStorage.clear();
+ sessionStorage.clear();
+ vi.clearAllMocks();
+
+ Object.assign(document, {
+ elementFromPoint: () => GlobalTestState.canvas,
+ });
+ await render( );
+ h.setState({
+ zoom: {
+ value: 1 as NormalizedZoomValue,
+ },
+ });
});
const createAndSelectOneRectangle = (angle: number = 0) => {
@@ -79,593 +115,700 @@ const createAndReturnOneDraw = (angle: number = 0) => {
});
};
-const FLIP_PRECISION_DECIMALS = 7;
+const createLinearElementWithCurveInsideMinMaxPoints = (
+ type: "line" | "arrow",
+ extraProps: any = {},
+) => {
+ return newLinearElement({
+ type,
+ x: 2256.910668124894,
+ y: -2412.5069664197654,
+ width: 1750.4888916015625,
+ height: 410.51605224609375,
+ angle: 0,
+ strokeColor: "#000000",
+ backgroundColor: "#fa5252",
+ fillStyle: "hachure",
+ strokeWidth: 1,
+ strokeStyle: "solid",
+ roughness: 1,
+ opacity: 100,
+ groupIds: [],
+ roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS },
+ boundElements: null,
+ link: null,
+ locked: false,
+ points: [
+ [0, 0],
+ [-922.4761962890625, 300.3277587890625],
+ [828.0126953125, 410.51605224609375],
+ ],
+ startArrowhead: null,
+ endArrowhead: null,
+ });
+};
+
+const createLinearElementsWithCurveOutsideMinMaxPoints = (
+ type: "line" | "arrow",
+ extraProps: any = {},
+) => {
+ return newLinearElement({
+ type,
+ x: -1388.6555370382996,
+ y: 1037.698247710191,
+ width: 591.2804897585779,
+ height: 69.32871961377737,
+ angle: 0,
+ strokeColor: "#000000",
+ backgroundColor: "transparent",
+ fillStyle: "hachure",
+ strokeWidth: 1,
+ strokeStyle: "solid",
+ roughness: 1,
+ opacity: 100,
+ groupIds: [],
+ roundness: { type: ROUNDNESS.PROPORTIONAL_RADIUS },
+ boundElements: null,
+ link: null,
+ locked: false,
+ points: [
+ [0, 0],
+ [-584.1485186423079, -15.365636022723947],
+ [-591.2804897585779, 36.09360810181511],
+ [-148.56510566829502, 53.96308359105342],
+ ],
+ startArrowhead: null,
+ endArrowhead: null,
+ ...extraProps,
+ });
+};
+
+const checkElementsBoundingBox = async (
+ element1: ExcalidrawElement,
+ element2: ExcalidrawElement,
+ toleranceInPx: number = 0,
+) => {
+ const [x1, y1, x2, y2] = getElementAbsoluteCoords(element1);
+
+ const [x12, y12, x22, y22] = getElementAbsoluteCoords(element2);
+
+ debugger;
+ await waitFor(() => {
+ // Check if width and height did not change
+ expect(x2 - x1).toBeCloseTo(x22 - x12, -1);
+ expect(y2 - y1).toBeCloseTo(y22 - y12, -1);
+ });
+};
+
+const checkHorizontalFlip = async (toleranceInPx: number = 0.00001) => {
+ const originalElement = JSON.parse(JSON.stringify(h.elements[0]));
+ h.app.actionManager.executeAction(actionFlipHorizontal);
+ const newElement = h.elements[0];
+ await checkElementsBoundingBox(originalElement, newElement, toleranceInPx);
+};
+
+const checkTwoPointsLineHorizontalFlip = async () => {
+ const originalElement = JSON.parse(
+ JSON.stringify(h.elements[0]),
+ ) as ExcalidrawLinearElement;
+ h.app.actionManager.executeAction(actionFlipHorizontal);
+ const newElement = h.elements[0] as ExcalidrawLinearElement;
+ await waitFor(() => {
+ expect(originalElement.points[0][0]).toBeCloseTo(
+ -newElement.points[0][0],
+ 5,
+ );
+ expect(originalElement.points[0][1]).toBeCloseTo(
+ newElement.points[0][1],
+ 5,
+ );
+ expect(originalElement.points[1][0]).toBeCloseTo(
+ -newElement.points[1][0],
+ 5,
+ );
+ expect(originalElement.points[1][1]).toBeCloseTo(
+ newElement.points[1][1],
+ 5,
+ );
+ });
+};
+
+const checkTwoPointsLineVerticalFlip = async () => {
+ const originalElement = JSON.parse(
+ JSON.stringify(h.elements[0]),
+ ) as ExcalidrawLinearElement;
+ h.app.actionManager.executeAction(actionFlipVertical);
+ const newElement = h.elements[0] as ExcalidrawLinearElement;
+ await waitFor(() => {
+ expect(originalElement.points[0][0]).toBeCloseTo(
+ newElement.points[0][0],
+ 5,
+ );
+ expect(originalElement.points[0][1]).toBeCloseTo(
+ -newElement.points[0][1],
+ 5,
+ );
+ expect(originalElement.points[1][0]).toBeCloseTo(
+ newElement.points[1][0],
+ 5,
+ );
+ expect(originalElement.points[1][1]).toBeCloseTo(
+ -newElement.points[1][1],
+ 5,
+ );
+ });
+};
+
+const checkRotatedHorizontalFlip = async (
+ expectedAngle: number,
+ toleranceInPx: number = 0.00001,
+) => {
+ const originalElement = JSON.parse(JSON.stringify(h.elements[0]));
+ h.app.actionManager.executeAction(actionFlipHorizontal);
+ const newElement = h.elements[0];
+ await waitFor(() => {
+ expect(newElement.angle).toBeCloseTo(expectedAngle);
+ });
+ await checkElementsBoundingBox(originalElement, newElement, toleranceInPx);
+};
+
+const checkRotatedVerticalFlip = async (
+ expectedAngle: number,
+ toleranceInPx: number = 0.00001,
+) => {
+ const originalElement = JSON.parse(JSON.stringify(h.elements[0]));
+ h.app.actionManager.executeAction(actionFlipVertical);
+ const newElement = h.elements[0];
+ await waitFor(() => {
+ expect(newElement.angle).toBeCloseTo(expectedAngle);
+ });
+ await checkElementsBoundingBox(originalElement, newElement, toleranceInPx);
+};
+
+const checkVerticalFlip = async (toleranceInPx: number = 0.00001) => {
+ const originalElement = JSON.parse(JSON.stringify(h.elements[0]));
+
+ h.app.actionManager.executeAction(actionFlipVertical);
+
+ const newElement = h.elements[0];
+ await checkElementsBoundingBox(originalElement, newElement, toleranceInPx);
+};
+
+const checkVerticalHorizontalFlip = async (toleranceInPx: number = 0.00001) => {
+ const originalElement = JSON.parse(JSON.stringify(h.elements[0]));
+
+ h.app.actionManager.executeAction(actionFlipHorizontal);
+ h.app.actionManager.executeAction(actionFlipVertical);
+
+ const newElement = h.elements[0];
+ await checkElementsBoundingBox(originalElement, newElement, toleranceInPx);
+};
+
+const TWO_POINTS_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS = 5;
+const MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS = 20;
// Rectangle element
+describe("rectangle", () => {
+ it("flips an unrotated rectangle horizontally correctly", async () => {
+ createAndSelectOneRectangle();
-it("flips an unrotated rectangle horizontally correctly", () => {
- createAndSelectOneRectangle();
+ await checkHorizontalFlip();
+ });
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ it("flips an unrotated rectangle vertically correctly", async () => {
+ createAndSelectOneRectangle();
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ await checkVerticalFlip();
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips a rotated rectangle horizontally correctly", async () => {
+ const originalAngle = (3 * Math.PI) / 4;
+ const expectedAngle = (5 * Math.PI) / 4;
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ createAndSelectOneRectangle(originalAngle);
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ await checkRotatedHorizontalFlip(expectedAngle);
+ });
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ it("flips a rotated rectangle vertically correctly", async () => {
+ const originalAngle = (3 * Math.PI) / 4;
+ const expectedAgnle = (5 * Math.PI) / 4;
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
+ createAndSelectOneRectangle(originalAngle);
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips an unrotated rectangle vertically correctly", () => {
- createAndSelectOneRectangle();
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips a rotated rectangle horizontally correctly", () => {
- const originalAngle = (3 * Math.PI) / 4;
- const expectedAngle = (5 * Math.PI) / 4;
-
- createAndSelectOneRectangle(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipHorizontal);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
-});
-
-it("flips a rotated rectangle vertically correctly", () => {
- const originalAngle = (3 * Math.PI) / 4;
- const expectedAgnle = Math.PI / 4;
-
- createAndSelectOneRectangle(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAgnle);
+ await checkRotatedVerticalFlip(expectedAgnle);
+ });
});
// Diamond element
+describe("diamond", () => {
+ it("flips an unrotated diamond horizontally correctly", async () => {
+ createAndSelectOneDiamond();
-it("flips an unrotated diamond horizontally correctly", () => {
- createAndSelectOneDiamond();
+ await checkHorizontalFlip();
+ });
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ it("flips an unrotated diamond vertically correctly", async () => {
+ createAndSelectOneDiamond();
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ await checkVerticalFlip();
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips a rotated diamond horizontally correctly", async () => {
+ const originalAngle = (5 * Math.PI) / 4;
+ const expectedAngle = (3 * Math.PI) / 4;
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ createAndSelectOneDiamond(originalAngle);
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ await checkRotatedHorizontalFlip(expectedAngle);
+ });
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ it("flips a rotated diamond vertically correctly", async () => {
+ const originalAngle = (5 * Math.PI) / 4;
+ const expectedAngle = (3 * Math.PI) / 4;
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
+ createAndSelectOneDiamond(originalAngle);
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips an unrotated diamond vertically correctly", () => {
- createAndSelectOneDiamond();
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips a rotated diamond horizontally correctly", () => {
- const originalAngle = (5 * Math.PI) / 4;
- const expectedAngle = (3 * Math.PI) / 4;
-
- createAndSelectOneDiamond(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipHorizontal);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
-});
-
-it("flips a rotated diamond vertically correctly", () => {
- const originalAngle = (5 * Math.PI) / 4;
- const expectedAngle = (7 * Math.PI) / 4;
-
- createAndSelectOneDiamond(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
+ await checkRotatedVerticalFlip(expectedAngle);
+ });
});
// Ellipse element
+describe("ellipse", () => {
+ it("flips an unrotated ellipse horizontally correctly", async () => {
+ createAndSelectOneEllipse();
-it("flips an unrotated ellipse horizontally correctly", () => {
- createAndSelectOneEllipse();
+ await checkHorizontalFlip();
+ });
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ it("flips an unrotated ellipse vertically correctly", async () => {
+ createAndSelectOneEllipse();
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ await checkVerticalFlip();
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips a rotated ellipse horizontally correctly", async () => {
+ const originalAngle = (7 * Math.PI) / 4;
+ const expectedAngle = Math.PI / 4;
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ createAndSelectOneEllipse(originalAngle);
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
+ await checkRotatedHorizontalFlip(expectedAngle);
+ });
- expect(API.getSelectedElements()[0].y).toEqual(0);
+ it("flips a rotated ellipse vertically correctly", async () => {
+ const originalAngle = (7 * Math.PI) / 4;
+ const expectedAngle = Math.PI / 4;
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
+ createAndSelectOneEllipse(originalAngle);
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips an unrotated ellipse vertically correctly", () => {
- createAndSelectOneEllipse();
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-});
-
-it("flips a rotated ellipse horizontally correctly", () => {
- const originalAngle = (7 * Math.PI) / 4;
- const expectedAngle = Math.PI / 4;
-
- createAndSelectOneEllipse(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipHorizontal);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
-});
-
-it("flips a rotated ellipse vertically correctly", () => {
- const originalAngle = (7 * Math.PI) / 4;
- const expectedAngle = (5 * Math.PI) / 4;
-
- createAndSelectOneEllipse(originalAngle);
-
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if x position did not change
- expect(API.getSelectedElements()[0].x).toEqual(0);
-
- expect(API.getSelectedElements()[0].y).toEqual(0);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toEqual(originalWidth);
-
- expect(API.getSelectedElements()[0].height).toEqual(originalHeight);
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
+ await checkRotatedVerticalFlip(expectedAngle);
+ });
});
// Arrow element
+describe("arrow", () => {
+ it("flips an unrotated arrow horizontally with line inside min/max points bounds", async () => {
+ const arrow = createLinearElementWithCurveInsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([arrow]);
+ h.app.setState({ selectedElementIds: { [arrow.id]: true } });
+ await checkHorizontalFlip(
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
-it("flips an unrotated arrow horizontally correctly", () => {
- createAndSelectOneArrow();
+ it("flips an unrotated arrow vertically with line inside min/max points bounds", async () => {
+ const arrow = createLinearElementWithCurveInsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([arrow]);
+ h.app.setState({ selectedElementIds: { [arrow.id]: true } });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ await checkVerticalFlip(50);
+ });
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ it("flips a rotated arrow horizontally with line inside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementWithCurveInsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([line]);
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [line.id]: true,
+ };
+ mutateElement(line, {
+ angle: originalAngle,
+ });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ await checkRotatedHorizontalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-});
+ it("flips a rotated arrow vertically with line inside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementWithCurveInsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([line]);
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [line.id]: true,
+ };
+ mutateElement(line, {
+ angle: originalAngle,
+ });
-it("flips an unrotated arrow vertically correctly", () => {
- createAndSelectOneArrow();
+ await checkRotatedVerticalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ //TODO: elements with curve outside minMax points have a wrong bounding box!!!
+ it.skip("flips an unrotated arrow horizontally with line outside min/max points bounds", async () => {
+ const arrow = createLinearElementsWithCurveOutsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([arrow]);
+ h.app.setState({ selectedElementIds: { [arrow.id]: true } });
- h.app.actionManager.executeAction(actionFlipVertical);
+ await checkHorizontalFlip(
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ //TODO: elements with curve outside minMax points have a wrong bounding box!!!
+ it.skip("flips a rotated arrow horizontally with line outside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("arrow");
+ mutateElement(line, { angle: originalAngle });
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-});
+ await checkRotatedVerticalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
-//@TODO fix the tests with rotation
-it.skip("flips a rotated arrow horizontally correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (7 * Math.PI) / 4;
- createAndSelectOneArrow(originalAngle);
+ //TODO: elements with curve outside minMax points have a wrong bounding box!!!
+ it.skip("flips an unrotated arrow vertically with line outside min/max points bounds", async () => {
+ const arrow = createLinearElementsWithCurveOutsideMinMaxPoints("arrow");
+ h.app.scene.replaceAllElements([arrow]);
+ h.app.setState({ selectedElementIds: { [arrow.id]: true } });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ await checkVerticalFlip(MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS);
+ });
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ //TODO: elements with curve outside minMax points have a wrong bounding box!!!
+ it.skip("flips a rotated arrow vertically with line outside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("arrow");
+ mutateElement(line, { angle: originalAngle });
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ await checkRotatedVerticalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
-});
+ it("flips an unrotated arrow horizontally correctly", async () => {
+ createAndSelectOneArrow();
+ await checkHorizontalFlip(
+ TWO_POINTS_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
-it.skip("flips a rotated arrow vertically correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (3 * Math.PI) / 4;
- createAndSelectOneArrow(originalAngle);
+ it("flips an unrotated arrow vertically correctly", async () => {
+ createAndSelectOneArrow();
+ await checkVerticalFlip(TWO_POINTS_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS);
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips a two points arrow horizontally correctly", async () => {
+ createAndSelectOneArrow();
+ await checkTwoPointsLineHorizontalFlip();
+ });
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
-
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
+ it("flips a two points arrow vertically correctly", async () => {
+ createAndSelectOneArrow();
+ await checkTwoPointsLineVerticalFlip();
+ });
});
// Line element
+describe("line", () => {
+ it("flips an unrotated line horizontally with line inside min/max points bounds", async () => {
+ const line = createLinearElementWithCurveInsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
-it("flips an unrotated line horizontally correctly", () => {
- createAndSelectOneLine();
+ await checkHorizontalFlip(
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips an unrotated line vertically with line inside min/max points bounds", async () => {
+ const line = createLinearElementWithCurveInsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ await checkVerticalFlip(MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS);
+ });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ it("flips an unrotated line horizontally correctly", async () => {
+ createAndSelectOneLine();
+ await checkHorizontalFlip(
+ TWO_POINTS_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
+ //TODO: elements with curve outside minMax points have a wrong bounding box
+ it.skip("flips an unrotated line horizontally with line outside min/max points bounds", async () => {
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-});
+ await checkHorizontalFlip(
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
-it("flips an unrotated line vertically correctly", () => {
- createAndSelectOneLine();
+ //TODO: elements with curve outside minMax points have a wrong bounding box
+ it.skip("flips an unrotated line vertically with line outside min/max points bounds", async () => {
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ await checkVerticalFlip(MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS);
+ });
- h.app.actionManager.executeAction(actionFlipVertical);
+ //TODO: elements with curve outside minMax points have a wrong bounding box
+ it.skip("flips a rotated line horizontally with line outside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("line");
+ mutateElement(line, { angle: originalAngle });
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ await checkRotatedHorizontalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-});
+ //TODO: elements with curve outside minMax points have a wrong bounding box
+ it.skip("flips a rotated line vertically with line outside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementsWithCurveOutsideMinMaxPoints("line");
+ mutateElement(line, { angle: originalAngle });
+ h.app.scene.replaceAllElements([line]);
+ h.app.setState({ selectedElementIds: { [line.id]: true } });
-it.skip("flips a rotated line horizontally correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (7 * Math.PI) / 4;
+ await checkRotatedVerticalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- createAndSelectOneLine(originalAngle);
+ it("flips an unrotated line vertically correctly", async () => {
+ createAndSelectOneLine();
+ await checkVerticalFlip(TWO_POINTS_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS);
+ });
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
+ it("flips a rotated line horizontally with line inside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementWithCurveInsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [line.id]: true,
+ };
+ mutateElement(line, {
+ angle: originalAngle,
+ });
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ await checkRotatedHorizontalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
+ it("flips a rotated line vertically with line inside min/max points bounds", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ const line = createLinearElementWithCurveInsideMinMaxPoints("line");
+ h.app.scene.replaceAllElements([line]);
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [line.id]: true,
+ };
+ mutateElement(line, {
+ angle: originalAngle,
+ });
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
+ await checkRotatedVerticalFlip(
+ expectedAngle,
+ MULTIPOINT_LINEAR_ELEMENT_FLIP_TOLERANCE_IN_PIXELS,
+ );
+ });
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
-});
+ it("flips a two points line horizontally correctly", async () => {
+ createAndSelectOneLine();
+ await checkTwoPointsLineHorizontalFlip();
+ });
-it.skip("flips a rotated line vertically correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (3 * Math.PI) / 4;
-
- createAndSelectOneLine(originalAngle);
-
- const originalWidth = API.getSelectedElements()[0].width;
- const originalHeight = API.getSelectedElements()[0].height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if width and height did not change
- expect(API.getSelectedElements()[0].width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
-
- expect(API.getSelectedElements()[0].height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-
- // Check angle
- expect(API.getSelectedElements()[0].angle).toBeCloseTo(expectedAngle);
+ it("flips a two points line vertically correctly", async () => {
+ createAndSelectOneLine();
+ await checkTwoPointsLineVerticalFlip();
+ });
});
// Draw element
+describe("freedraw", () => {
+ it("flips an unrotated drawing horizontally correctly", async () => {
+ const draw = createAndReturnOneDraw();
+ // select draw, since not done automatically
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [draw.id]: true,
+ };
+ await checkHorizontalFlip();
+ });
-it("flips an unrotated drawing horizontally correctly", () => {
- const draw = createAndReturnOneDraw();
- // select draw, since not done automatically
- h.state.selectedElementIds[draw.id] = true;
+ it("flips an unrotated drawing vertically correctly", async () => {
+ const draw = createAndReturnOneDraw();
+ // select draw, since not done automatically
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [draw.id]: true,
+ };
+ await checkVerticalFlip();
+ });
- const originalWidth = draw.width;
- const originalHeight = draw.height;
+ it("flips a rotated drawing horizontally correctly", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
- h.app.actionManager.executeAction(actionFlipHorizontal);
+ const draw = createAndReturnOneDraw(originalAngle);
+ // select draw, since not done automatically
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [draw.id]: true,
+ };
- // Check if width and height did not change
- expect(draw.width).toBeCloseTo(originalWidth, FLIP_PRECISION_DECIMALS);
+ await checkRotatedHorizontalFlip(expectedAngle);
+ });
- expect(draw.height).toBeCloseTo(originalHeight, FLIP_PRECISION_DECIMALS);
+ it("flips a rotated drawing vertically correctly", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+
+ const draw = createAndReturnOneDraw(originalAngle);
+ // select draw, since not done automatically
+ h.state.selectedElementIds = {
+ ...h.state.selectedElementIds,
+ [draw.id]: true,
+ };
+
+ await checkRotatedVerticalFlip(expectedAngle);
+ });
});
-it("flips an unrotated drawing vertically correctly", () => {
- const draw = createAndReturnOneDraw();
- // select draw, since not done automatically
- h.state.selectedElementIds[draw.id] = true;
+//image
+//TODO: currently there is no test for pixel colors at flipped positions.
+describe("image", () => {
+ const createImage = async () => {
+ const sendPasteEvent = (file?: File) => {
+ const clipboardEvent = createPasteEvent("", file ? [file] : []);
+ document.dispatchEvent(clipboardEvent);
+ };
- const originalWidth = draw.width;
- const originalHeight = draw.height;
+ sendPasteEvent(await API.loadFile("./fixtures/smiley_embedded_v2.png"));
+ };
- h.app.actionManager.executeAction(actionFlipVertical);
+ it("flips an unrotated image horizontally correctly", async () => {
+ //paste image
+ await createImage();
+ await waitFor(() => {
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, 1]);
+ expect(API.getSelectedElements().length).toBeGreaterThan(0);
+ expect(API.getSelectedElements()[0].type).toEqual("image");
+ expect(h.app.files.fileId).toBeDefined();
+ });
+ await checkHorizontalFlip();
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([-1, 1]);
+ expect(h.elements[0].angle).toBeCloseTo(0);
+ });
- // Check if width and height did not change
- expect(draw.width).toBeCloseTo(originalWidth, FLIP_PRECISION_DECIMALS);
+ it("flips an unrotated image vertically correctly", async () => {
+ //paste image
+ await createImage();
+ await waitFor(() => {
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, 1]);
+ expect(API.getSelectedElements().length).toBeGreaterThan(0);
+ expect(API.getSelectedElements()[0].type).toEqual("image");
+ expect(h.app.files.fileId).toBeDefined();
+ });
- expect(draw.height).toBeCloseTo(originalHeight, FLIP_PRECISION_DECIMALS);
-});
-
-it("flips a rotated drawing horizontally correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (7 * Math.PI) / 4;
-
- const draw = createAndReturnOneDraw(originalAngle);
- // select draw, since not done automatically
- h.state.selectedElementIds[draw.id] = true;
-
- const originalWidth = draw.width;
- const originalHeight = draw.height;
-
- h.app.actionManager.executeAction(actionFlipHorizontal);
-
- // Check if width and height did not change
- expect(draw.width).toBeCloseTo(originalWidth, FLIP_PRECISION_DECIMALS);
-
- expect(draw.height).toBeCloseTo(originalHeight, FLIP_PRECISION_DECIMALS);
-
- // Check angle
- expect(draw.angle).toBeCloseTo(expectedAngle);
-});
-
-it("flips a rotated drawing vertically correctly", () => {
- const originalAngle = Math.PI / 4;
- const expectedAngle = (3 * Math.PI) / 4;
-
- const draw = createAndReturnOneDraw(originalAngle);
- // select draw, since not done automatically
- h.state.selectedElementIds[draw.id] = true;
-
- const originalWidth = draw.width;
- const originalHeight = draw.height;
-
- h.app.actionManager.executeAction(actionFlipVertical);
-
- // Check if width and height did not change
-
- expect(API.getSelectedElement().width).toBeCloseTo(
- originalWidth,
- FLIP_PRECISION_DECIMALS,
- );
-
- expect(API.getSelectedElement().height).toBeCloseTo(
- originalHeight,
- FLIP_PRECISION_DECIMALS,
- );
-
- // Check angle
- expect(API.getSelectedElement().angle).toBeCloseTo(expectedAngle);
+ await checkVerticalFlip();
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, -1]);
+ expect(h.elements[0].angle).toBeCloseTo(0);
+ });
+
+ it("flips an rotated image horizontally correctly", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ //paste image
+ await createImage();
+ await waitFor(() => {
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, 1]);
+ expect(API.getSelectedElements().length).toBeGreaterThan(0);
+ expect(API.getSelectedElements()[0].type).toEqual("image");
+ expect(h.app.files.fileId).toBeDefined();
+ });
+ mutateElement(h.elements[0], {
+ angle: originalAngle,
+ });
+ await checkRotatedHorizontalFlip(expectedAngle);
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([-1, 1]);
+ });
+
+ it("flips an rotated image vertically correctly", async () => {
+ const originalAngle = Math.PI / 4;
+ const expectedAngle = (7 * Math.PI) / 4;
+ //paste image
+ await createImage();
+ await waitFor(() => {
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, 1]);
+ expect(h.elements[0].angle).toEqual(0);
+ expect(API.getSelectedElements().length).toBeGreaterThan(0);
+ expect(API.getSelectedElements()[0].type).toEqual("image");
+ expect(h.app.files.fileId).toBeDefined();
+ });
+ mutateElement(h.elements[0], {
+ angle: originalAngle,
+ });
+
+ await checkRotatedVerticalFlip(expectedAngle);
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, -1]);
+ expect(h.elements[0].angle).toBeCloseTo(expectedAngle);
+ });
+
+ it("flips an image both vertically & horizontally", async () => {
+ //paste image
+ await createImage();
+ await waitFor(() => {
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([1, 1]);
+ expect(API.getSelectedElements().length).toBeGreaterThan(0);
+ expect(API.getSelectedElements()[0].type).toEqual("image");
+ expect(h.app.files.fileId).toBeDefined();
+ });
+
+ await checkVerticalHorizontalFlip();
+ expect((h.elements[0] as ExcalidrawImageElement).scale).toEqual([-1, -1]);
+ expect(h.elements[0].angle).toBeCloseTo(0);
+ });
});
diff --git a/src/tests/helpers/api.ts b/src/tests/helpers/api.ts
index 7f3e958ca..7f63203d8 100644
--- a/src/tests/helpers/api.ts
+++ b/src/tests/helpers/api.ts
@@ -19,6 +19,7 @@ import { newFreeDrawElement, newImageElement } from "../../element/newElement";
import { Point } from "../../types";
import { getSelectedElements } from "../../scene/selection";
import { isLinearElementType } from "../../element/typeChecks";
+import { Mutable } from "../../utility-types";
const readFile = util.promisify(fs.readFile);
@@ -36,8 +37,12 @@ export class API {
static getSelectedElements = (
includeBoundTextElement: boolean = false,
+ includeElementsInFrames: boolean = false,
): ExcalidrawElement[] => {
- return getSelectedElements(h.elements, h.state, includeBoundTextElement);
+ return getSelectedElements(h.elements, h.state, {
+ includeBoundTextElement,
+ includeElementsInFrames,
+ });
};
static getSelectedElement = (): ExcalidrawElement => {
@@ -110,6 +115,9 @@ export class API {
fileId?: T extends "image" ? string : never;
scale?: T extends "image" ? ExcalidrawImageElement["scale"] : never;
status?: T extends "image" ? ExcalidrawImageElement["status"] : never;
+ startBinding?: T extends "arrow"
+ ? ExcalidrawLinearElement["startBinding"]
+ : never;
endBinding?: T extends "arrow"
? ExcalidrawLinearElement["endBinding"]
: never;
@@ -137,6 +145,7 @@ export class API {
| "versionNonce"
| "isDeleted"
| "groupIds"
+ | "frameId"
| "link"
| "updated"
> = {
@@ -169,19 +178,22 @@ export class API {
case "rectangle":
case "diamond":
case "ellipse":
+ case "embeddable":
element = newElement({
- type: type as "rectangle" | "diamond" | "ellipse",
+ type: type as "rectangle" | "diamond" | "ellipse" | "embeddable",
width,
height,
...base,
});
break;
case "text":
+ const fontSize = rest.fontSize ?? appState.currentItemFontSize;
+ const fontFamily = rest.fontFamily ?? appState.currentItemFontFamily;
element = newTextElement({
...base,
text: rest.text || "test",
- fontSize: rest.fontSize ?? appState.currentItemFontSize,
- fontFamily: rest.fontFamily ?? appState.currentItemFontFamily,
+ fontSize,
+ fontFamily,
textAlign: rest.textAlign ?? appState.currentItemTextAlign,
verticalAlign: rest.verticalAlign ?? DEFAULT_VERTICAL_ALIGN,
containerId: rest.containerId ?? undefined,
@@ -205,7 +217,10 @@ export class API {
type,
startArrowhead: null,
endArrowhead: null,
- points: rest.points ?? [],
+ points: rest.points ?? [
+ [0, 0],
+ [100, 100],
+ ],
});
break;
case "image":
@@ -220,6 +235,10 @@ export class API {
});
break;
}
+ if (element.type === "arrow") {
+ element.startBinding = rest.startBinding ?? null;
+ element.endBinding = rest.endBinding ?? null;
+ }
if (id) {
element.id = id;
}
diff --git a/src/tests/helpers/ui.ts b/src/tests/helpers/ui.ts
index 1cfdb10a1..c88201133 100644
--- a/src/tests/helpers/ui.ts
+++ b/src/tests/helpers/ui.ts
@@ -237,6 +237,15 @@ export class UI {
fireEvent.click(element);
};
+ static clickOnTestId = (testId: string) => {
+ const element = document.querySelector(`[data-testid='${testId}']`);
+ // const element = GlobalTestState.renderResult.queryByTestId(testId);
+ if (!element) {
+ throw new Error(`No element with testid "${testId}" found`);
+ }
+ fireEvent.click(element);
+ };
+
/**
* Creates an Excalidraw element, and returns a proxy that wraps it so that
* accessing props will return the latest ones from the object existing in
@@ -321,6 +330,6 @@ export class UI {
static queryContextMenu = () => {
return GlobalTestState.renderResult.container.querySelector(
".context-menu",
- );
+ ) as HTMLElement | null;
};
}
diff --git a/src/tests/library.test.tsx b/src/tests/library.test.tsx
index 6b3ff5dd7..512d1b564 100644
--- a/src/tests/library.test.tsx
+++ b/src/tests/library.test.tsx
@@ -1,3 +1,4 @@
+import { vi } from "vitest";
import { fireEvent, render, waitFor } from "./test-utils";
import { queryByTestId } from "@testing-library/react";
@@ -29,11 +30,15 @@ const mockLibraryFilePromise = new Promise(async (resolve, reject) => {
}
});
-jest.mock("../data/filesystem.ts", () => ({
- __esmodule: true,
- ...jest.requireActual("../data/filesystem.ts"),
- fileOpen: jest.fn(() => mockLibraryFilePromise),
-}));
+vi.mock("../data/filesystem.ts", async (importOriginal) => {
+ const module = await importOriginal();
+ return {
+ __esmodule: true,
+ //@ts-ignore
+ ...module,
+ fileOpen: vi.fn(() => mockLibraryFilePromise),
+ };
+});
describe("library", () => {
beforeEach(async () => {
@@ -72,6 +77,100 @@ describe("library", () => {
});
});
+ it("should regenerate ids but retain bindings on library insert", async () => {
+ const rectangle = API.createElement({
+ id: "rectangle1",
+ type: "rectangle",
+ boundElements: [
+ { type: "text", id: "text1" },
+ { type: "arrow", id: "arrow1" },
+ ],
+ });
+ const text = API.createElement({
+ id: "text1",
+ type: "text",
+ text: "ola",
+ containerId: "rectangle1",
+ });
+ const arrow = API.createElement({
+ id: "arrow1",
+ type: "arrow",
+ endBinding: { elementId: "rectangle1", focus: -1, gap: 0 },
+ });
+
+ await API.drop(
+ new Blob(
+ [
+ serializeLibraryAsJSON([
+ {
+ id: "item1",
+ status: "published",
+ elements: [rectangle, text, arrow],
+ created: 1,
+ },
+ ]),
+ ],
+ {
+ type: MIME_TYPES.excalidrawlib,
+ },
+ ),
+ );
+
+ await waitFor(() => {
+ expect(h.elements).toEqual([
+ expect.objectContaining({
+ id: "rectangle1_copy",
+ boundElements: expect.arrayContaining([
+ { type: "text", id: "text1_copy" },
+ { type: "arrow", id: "arrow1_copy" },
+ ]),
+ }),
+ expect.objectContaining({
+ id: "text1_copy",
+ containerId: "rectangle1_copy",
+ }),
+ expect.objectContaining({
+ id: "arrow1_copy",
+ endBinding: expect.objectContaining({ elementId: "rectangle1_copy" }),
+ }),
+ ]);
+ });
+ });
+
+ it("should fix duplicate ids between items on insert", async () => {
+ // note, we're not testing for duplicate group ids and such because
+ // deduplication of that happens upstream in the library component
+ // which would be very hard to orchestrate in this test
+
+ const elem1 = API.createElement({
+ id: "elem1",
+ type: "rectangle",
+ });
+ const item1: LibraryItem = {
+ id: "item1",
+ status: "published",
+ elements: [elem1],
+ created: 1,
+ };
+
+ await API.drop(
+ new Blob([serializeLibraryAsJSON([item1, item1])], {
+ type: MIME_TYPES.excalidrawlib,
+ }),
+ );
+
+ await waitFor(() => {
+ expect(h.elements).toEqual([
+ expect.objectContaining({
+ id: "elem1_copy",
+ }),
+ expect.objectContaining({
+ id: expect.not.stringMatching(/^(elem1_copy|elem1)$/),
+ }),
+ ]);
+ });
+ });
+
it("inserting library item should revert to selection tool", async () => {
UI.clickTool("rectangle");
expect(h.elements).toEqual([]);
@@ -95,10 +194,15 @@ describe("library menu", () => {
const latestLibrary = await h.app.library.getLatestLibrary();
expect(latestLibrary.length).toBe(0);
- const libraryButton = container.querySelector(".library-button");
+ const libraryButton = container.querySelector(".sidebar-trigger");
fireEvent.click(libraryButton!);
- fireEvent.click(container.querySelector(".Sidebar__dropdown-btn")!);
+ fireEvent.click(
+ queryByTestId(
+ container.querySelector(".layer-ui__library")!,
+ "dropdown-menu-button",
+ )!,
+ );
queryByTestId(container, "lib-dropdown--load")!.click();
const libraryItems = parseLibraryJSON(await libraryJSONPromise);
diff --git a/src/tests/linearElementEditor.test.tsx b/src/tests/linearElementEditor.test.tsx
index c3366406f..6bcefb95f 100644
--- a/src/tests/linearElementEditor.test.tsx
+++ b/src/tests/linearElementEditor.test.tsx
@@ -17,12 +17,16 @@ import { KEYS } from "../keys";
import { LinearElementEditor } from "../element/linearElementEditor";
import { queryByTestId, queryByText } from "@testing-library/react";
import { resize, rotate } from "./utils";
-import { getBoundTextElementPosition, wrapText } from "../element/textElement";
-import { getMaxContainerWidth } from "../element/newElement";
+import {
+ getBoundTextElementPosition,
+ wrapText,
+ getBoundTextMaxWidth,
+} from "../element/textElement";
import * as textElementUtils from "../element/textElement";
-import { ROUNDNESS } from "../constants";
+import { ROUNDNESS, VERTICAL_ALIGN } from "../constants";
+import { vi } from "vitest";
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
const { h } = window;
const font = "20px Cascadia, width: Segoe UI Emoji" as FontString;
@@ -176,16 +180,16 @@ describe("Test Linear Elements", () => {
expect(renderScene).toHaveBeenCalledTimes(11);
expect(line.points.length).toEqual(3);
expect(line.points).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
0,
0,
],
- Array [
+ [
70,
50,
],
- Array [
+ [
40,
0,
],
@@ -270,16 +274,16 @@ describe("Test Linear Elements", () => {
expect(line.points.length).toEqual(3);
expect(line.points).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
0,
0,
],
- Array [
+ [
70,
50,
],
- Array [
+ [
40,
0,
],
@@ -312,12 +316,12 @@ describe("Test Linear Elements", () => {
expect(midPointsWithRoundEdge[1]).not.toEqual(midPointsWithSharpEdge[1]);
expect(midPointsWithRoundEdge).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
55.9697848965255,
47.442326230998205,
],
- Array [
+ [
76.08587175006699,
43.294165939653226,
],
@@ -360,12 +364,12 @@ describe("Test Linear Elements", () => {
expect(midPoints[0]).not.toEqual(newMidPoints[0]);
expect(midPoints[1]).not.toEqual(newMidPoints[1]);
expect(newMidPoints).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
105.96978489652551,
67.4423262309982,
],
- Array [
+ [
126.08587175006699,
63.294165939653226,
],
@@ -409,29 +413,29 @@ describe("Test Linear Elements", () => {
expect((h.elements[0] as ExcalidrawLinearElement).points)
.toMatchInlineSnapshot(`
- Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 85,
- 75,
- ],
- Array [
- 70,
- 50,
- ],
- Array [
- 105,
- 70,
- ],
- Array [
- 40,
- 0,
- ],
- ]
- `);
+ [
+ [
+ 0,
+ 0,
+ ],
+ [
+ 85,
+ 75,
+ ],
+ [
+ 70,
+ 50,
+ ],
+ [
+ 105,
+ 70,
+ ],
+ [
+ 40,
+ 0,
+ ],
+ ]
+ `);
});
it("should update only the first segment midpoint when its point is dragged", async () => {
@@ -555,29 +559,29 @@ describe("Test Linear Elements", () => {
expect((h.elements[0] as ExcalidrawLinearElement).points)
.toMatchInlineSnapshot(`
- Array [
- Array [
- 0,
- 0,
- ],
- Array [
- 85.96978489652551,
- 77.4423262309982,
- ],
- Array [
- 70,
- 50,
- ],
- Array [
- 106.08587175006699,
- 73.29416593965323,
- ],
- Array [
- 40,
- 0,
- ],
- ]
- `);
+ [
+ [
+ 0,
+ 0,
+ ],
+ [
+ 85.96978489652551,
+ 77.4423262309982,
+ ],
+ [
+ 70,
+ 50,
+ ],
+ [
+ 106.08587175006699,
+ 73.29416593965323,
+ ],
+ [
+ 40,
+ 0,
+ ],
+ ]
+ `);
});
it("should update all the midpoints when its point is dragged", async () => {
@@ -603,12 +607,12 @@ describe("Test Linear Elements", () => {
expect(midPoints[0]).not.toEqual(newMidPoints[0]);
expect(midPoints[1]).not.toEqual(newMidPoints[1]);
expect(newMidPoints).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
31.884084517616053,
23.13275505472383,
],
- Array [
+ [
77.74792546875662,
44.57840982272327,
],
@@ -664,12 +668,12 @@ describe("Test Linear Elements", () => {
expect(midPoints[0]).not.toEqual(newMidPoints[0]);
expect(midPoints[1]).not.toEqual(newMidPoints[1]);
expect(newMidPoints).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
55.9697848965255,
47.442326230998205,
],
- Array [
+ [
76.08587175006699,
43.294165939653226,
],
@@ -701,12 +705,12 @@ describe("Test Linear Elements", () => {
[dragEndPositionOffset[0] + line.x, dragEndPositionOffset[1] + line.y],
);
expect(line.points).toMatchInlineSnapshot(`
- Array [
- Array [
+ [
+ [
0,
0,
],
- Array [
+ [
-60,
-100,
],
@@ -726,7 +730,7 @@ describe("Test Linear Elements", () => {
type: "text",
x: 0,
y: 0,
- text: wrapText(text, font, getMaxContainerWidth(container)),
+ text: wrapText(text, font, getBoundTextMaxWidth(container)),
containerId: container.id,
width: 30,
height: 20,
@@ -765,7 +769,7 @@ describe("Test Linear Elements", () => {
textElement,
);
expect(position).toMatchInlineSnapshot(`
- Object {
+ {
"x": 25,
"y": 10,
}
@@ -787,7 +791,7 @@ describe("Test Linear Elements", () => {
textElement,
);
expect(position).toMatchInlineSnapshot(`
- Object {
+ {
"x": 75,
"y": 60,
}
@@ -821,7 +825,7 @@ describe("Test Linear Elements", () => {
textElement,
);
expect(position).toMatchInlineSnapshot(`
- Object {
+ {
"x": 85.82201843191861,
"y": 75.63461309860818,
}
@@ -829,6 +833,15 @@ describe("Test Linear Elements", () => {
});
});
+ it("should match styles for text editor", () => {
+ createTwoPointerLinearElement("arrow");
+ Keyboard.keyPress(KEYS.ENTER);
+ const editor = document.querySelector(
+ ".excalidraw-textEditorContainer > textarea",
+ ) as HTMLTextAreaElement;
+ expect(editor).toMatchSnapshot();
+ });
+
it("should bind text to arrow when double clicked", async () => {
createTwoPointerLinearElement("arrow");
const arrow = h.elements[0] as ExcalidrawLinearElement;
@@ -927,11 +940,11 @@ describe("Test Linear Elements", () => {
expect(textElement.angle).toBe(0);
expect(getBoundTextElementPosition(arrow, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 75,
- "y": 60,
- }
- `);
+ {
+ "x": 75,
+ "y": 60,
+ }
+ `);
expect(textElement.text).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made
@@ -939,26 +952,26 @@ describe("Test Linear Elements", () => {
`);
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
.toMatchInlineSnapshot(`
- Array [
- 20,
- 20,
- 105,
- 80,
- 55.45893770831013,
- 45,
- ]
- `);
+ [
+ 20,
+ 20,
+ 105,
+ 80,
+ 55.45893770831013,
+ 45,
+ ]
+ `);
rotate(container, -35, 55);
expect(container.angle).toMatchInlineSnapshot(`1.3988061968364685`);
expect(textElement.angle).toBe(0);
expect(getBoundTextElementPosition(container, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 21.73926141863671,
- "y": 73.31003398390868,
- }
- `);
+ {
+ "x": 21.73926141863671,
+ "y": 73.31003398390868,
+ }
+ `);
expect(textElement.text).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made
@@ -966,15 +979,15 @@ describe("Test Linear Elements", () => {
`);
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
.toMatchInlineSnapshot(`
- Array [
- 20,
- 20,
- 102.41961302274555,
- 86.49012635273976,
- 55.45893770831013,
- 45,
- ]
- `);
+ [
+ 20,
+ 20,
+ 102.41961302274555,
+ 86.49012635273976,
+ 55.45893770831013,
+ 45,
+ ]
+ `);
});
it("should resize and position the bound text and bounding box correctly when 3 pointer arrow element resized", () => {
@@ -992,11 +1005,11 @@ describe("Test Linear Elements", () => {
expect(container.height).toBe(50);
expect(getBoundTextElementPosition(container, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 75,
- "y": 60,
- }
- `);
+ {
+ "x": 75,
+ "y": 60,
+ }
+ `);
expect(textElement.text).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made
@@ -1004,33 +1017,33 @@ describe("Test Linear Elements", () => {
`);
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
.toMatchInlineSnapshot(`
- Array [
- 20,
- 20,
- 105,
- 80,
- 55.45893770831013,
- 45,
- ]
- `);
+ [
+ 20,
+ 20,
+ 105,
+ 80,
+ 55.45893770831013,
+ 45,
+ ]
+ `);
resize(container, "ne", [300, 200]);
expect({ width: container.width, height: container.height })
.toMatchInlineSnapshot(`
- Object {
- "height": 10,
- "width": 367,
- }
- `);
+ {
+ "height": 130,
+ "width": 367,
+ }
+ `);
expect(getBoundTextElementPosition(container, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 386.5,
- "y": 70,
- }
- `);
+ {
+ "x": 272,
+ "y": 45,
+ }
+ `);
expect((h.elements[1] as ExcalidrawTextElementWithContainer).text)
.toMatchInlineSnapshot(`
"Online whiteboard
@@ -1038,15 +1051,15 @@ describe("Test Linear Elements", () => {
`);
expect(LinearElementEditor.getElementAbsoluteCoords(container, true))
.toMatchInlineSnapshot(`
- Array [
- 20,
- 60,
- 391.8122896842806,
- 70,
- 205.9061448421403,
- 65,
- ]
- `);
+ [
+ 20,
+ 35,
+ 502,
+ 95,
+ 205.9061448421403,
+ 52.5,
+ ]
+ `);
});
it("should resize and position the bound text correctly when 2 pointer linear element resized", () => {
@@ -1060,11 +1073,11 @@ describe("Test Linear Elements", () => {
expect(container.width).toBe(40);
expect(getBoundTextElementPosition(container, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 25,
- "y": 10,
- }
- `);
+ {
+ "x": 25,
+ "y": 10,
+ }
+ `);
expect(textElement.text).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made
@@ -1077,19 +1090,19 @@ describe("Test Linear Elements", () => {
expect({ width: container.width, height: container.height })
.toMatchInlineSnapshot(`
- Object {
- "height": 0,
- "width": 340,
- }
- `);
+ {
+ "height": 130,
+ "width": 340,
+ }
+ `);
expect(getBoundTextElementPosition(container, textElement))
.toMatchInlineSnapshot(`
- Object {
- "x": 189.5,
- "y": 20,
- }
- `);
+ {
+ "x": 75,
+ "y": -5,
+ }
+ `);
expect(textElement.text).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made easy"
@@ -1137,12 +1150,12 @@ describe("Test Linear Elements", () => {
expect(rect.x).toBe(400);
expect(rect.y).toBe(0);
expect(
- wrapText(textElement.originalText, font, getMaxContainerWidth(arrow)),
+ wrapText(textElement.originalText, font, getBoundTextMaxWidth(arrow)),
).toMatchInlineSnapshot(`
"Online whiteboard collaboration
made easy"
`);
- const handleBindTextResizeSpy = jest.spyOn(
+ const handleBindTextResizeSpy = vi.spyOn(
textElementUtils,
"handleBindTextResize",
);
@@ -1160,12 +1173,81 @@ describe("Test Linear Elements", () => {
false,
);
expect(
- wrapText(textElement.originalText, font, getMaxContainerWidth(arrow)),
+ wrapText(textElement.originalText, font, getBoundTextMaxWidth(arrow)),
).toMatchInlineSnapshot(`
"Online whiteboard
collaboration made
easy"
`);
});
+
+ it("should not render horizontal align tool when element selected", () => {
+ createTwoPointerLinearElement("arrow");
+ const arrow = h.elements[0] as ExcalidrawLinearElement;
+
+ createBoundTextElement(DEFAULT_TEXT, arrow);
+ API.setSelectedElements([arrow]);
+
+ expect(queryByTestId(container, "align-left")).toBeNull();
+ expect(queryByTestId(container, "align-horizontal-center")).toBeNull();
+ expect(queryByTestId(container, "align-right")).toBeNull();
+ });
+
+ it("should update label coords when a label binded via context menu is unbinded", async () => {
+ createTwoPointerLinearElement("arrow");
+ const text = API.createElement({
+ type: "text",
+ text: "Hello Excalidraw",
+ });
+ expect(text.x).toBe(0);
+ expect(text.y).toBe(0);
+
+ h.elements = [h.elements[0], text];
+
+ const container = h.elements[0];
+ API.setSelectedElements([container, text]);
+ fireEvent.contextMenu(GlobalTestState.canvas, {
+ button: 2,
+ clientX: 20,
+ clientY: 30,
+ });
+ let contextMenu = document.querySelector(".context-menu");
+
+ fireEvent.click(
+ queryByText(contextMenu as HTMLElement, "Bind text to the container")!,
+ );
+ expect(container.boundElements).toStrictEqual([
+ { id: h.elements[1].id, type: "text" },
+ ]);
+ expect(text.containerId).toBe(container.id);
+ expect(text.verticalAlign).toBe(VERTICAL_ALIGN.MIDDLE);
+
+ mouse.reset();
+ mouse.clickAt(
+ container.x + container.width / 2,
+ container.y + container.height / 2,
+ );
+ mouse.down();
+ mouse.up();
+ API.setSelectedElements([h.elements[0], h.elements[1]]);
+
+ fireEvent.contextMenu(GlobalTestState.canvas, {
+ button: 2,
+ clientX: 20,
+ clientY: 30,
+ });
+ contextMenu = document.querySelector(".context-menu");
+ fireEvent.click(queryByText(contextMenu as HTMLElement, "Unbind text")!);
+ expect(container.boundElements).toEqual([]);
+ expect(text).toEqual(
+ expect.objectContaining({
+ containerId: null,
+ width: 160,
+ height: 25,
+ x: -40,
+ y: 7.5,
+ }),
+ );
+ });
});
});
diff --git a/src/tests/move.test.tsx b/src/tests/move.test.tsx
index 3fbfceee3..034a1fff7 100644
--- a/src/tests/move.test.tsx
+++ b/src/tests/move.test.tsx
@@ -12,11 +12,12 @@ import {
} from "../element/types";
import { UI, Pointer, Keyboard } from "./helpers/ui";
import { KEYS } from "../keys";
+import { vi } from "vitest";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
diff --git a/src/tests/multiPointCreate.test.tsx b/src/tests/multiPointCreate.test.tsx
index 0026041c7..7037138fb 100644
--- a/src/tests/multiPointCreate.test.tsx
+++ b/src/tests/multiPointCreate.test.tsx
@@ -10,11 +10,12 @@ import * as Renderer from "../renderer/renderScene";
import { KEYS } from "../keys";
import { ExcalidrawLinearElement } from "../element/types";
import { reseed } from "../random";
+import { vi } from "vitest";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
diff --git a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap
index 2fbca5345..a9f6d37a6 100644
--- a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap
+++ b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap
@@ -1,28 +1,131 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[` Test UIOptions prop Test canvasActions should not hide any UI element when canvasActions is "undefined" 1`] = `
- > > should render main menu with host menu items if passed from host 1`] = `
+
+`;
+
+exports[` > Test UIOptions prop > Test canvasActions > should render menu with default items when "UIOPtions" is "undefined" 1`] = `
+
+
+
-
-
-
+
+ Canvas background
-
-
- English
-
-
- Bahasa Indonesia
-
-
- Català
-
-
- Deutsch
-
-
- English
-
-
- Español
-
-
- Euskara
-
-
- Français
-
-
- Italiano
-
-
- Kurdî
-
-
- Latviešu
-
-
- Magyar
-
-
- Nederlands
-
-
- Norsk bokmål
-
-
- Norsk nynorsk
-
-
- Occitan
-
-
- Polski
-
-
- Português
-
-
- Português Brasileiro
-
-
- Română
-
-
- Slovenčina
-
-
- Slovenščina
-
-
- Suomi
-
-
- Svenska
-
-
- Taqbaylit
-
-
- Türkçe
-
-
- Ελληνικά
-
-
- Русский
-
-
- Українська
-
-
- עברית
-
-
- العربية
-
-
- فارسی
-
-
- मराठी
-
-
- ਪੰਜਾਬੀ
-
-
- 日本語
-
-
- 简体中文
-
-
- 繁體中文
-
-
- 한국어
-
-
-
-
-
- Canvas background
-
-
+
-
-
+ class="color-picker__button-outline"
+ />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-`;
-
-exports[`
Test UIOptions prop should not hide any UI element when the UIOptions prop is "undefined" 1`] = `
-
-
- Canvas actions
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- English
-
-
- Bahasa Indonesia
-
-
- Català
-
-
- Deutsch
-
-
- English
-
-
- Español
-
-
- Euskara
-
-
- Français
-
-
- Italiano
-
-
- Kurdî
-
-
- Latviešu
-
-
- Magyar
-
-
- Nederlands
-
-
- Norsk bokmål
-
-
- Norsk nynorsk
-
-
- Occitan
-
-
- Polski
-
-
- Português
-
-
- Português Brasileiro
-
-
- Română
-
-
- Slovenčina
-
-
- Slovenščina
-
-
- Suomi
-
-
- Svenska
-
-
- Taqbaylit
-
-
- Türkçe
-
-
- Ελληνικά
-
-
- Русский
-
-
- Українська
-
-
- עברית
-
-
- العربية
-
-
- فارسی
-
-
- मराठी
-
-
- ਪੰਜਾਬੀ
-
-
- 日本語
-
-
- 简体中文
-
-
- 繁體中文
-
-
- 한국어
-
-
-
-
-
- Canvas background
-
-
-
-
-
-
+
`;
diff --git a/src/tests/packages/__snapshots__/utils.test.ts.snap b/src/tests/packages/__snapshots__/utils.test.ts.snap
index da3d8439b..9c573a1a4 100644
--- a/src/tests/packages/__snapshots__/utils.test.ts.snap
+++ b/src/tests/packages/__snapshots__/utils.test.ts.snap
@@ -1,14 +1,16 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`exportToSvg with default arguments 1`] = `
-Object {
- "activeTool": Object {
+exports[`exportToSvg > with default arguments 1`] = `
+{
+ "activeEmbeddable": null,
+ "activeTool": {
"customType": null,
- "lastActiveToolBeforeEraser": null,
+ "lastActiveTool": null,
"locked": false,
"type": "selection",
},
"collaborators": Map {},
+ "contextMenu": null,
"currentChartType": "bar",
"currentItemBackgroundColor": "transparent",
"currentItemEndArrowhead": "arrow",
@@ -19,15 +21,18 @@ Object {
"currentItemRoughness": 1,
"currentItemRoundness": "round",
"currentItemStartArrowhead": null,
- "currentItemStrokeColor": "#000000",
+ "currentItemStrokeColor": "#1e1e1e",
"currentItemStrokeStyle": "solid",
"currentItemStrokeWidth": 1,
"currentItemTextAlign": "left",
"cursorButton": "up",
+ "defaultSidebarDockedPreference": false,
"draggingElement": null,
"editingElement": null,
+ "editingFrame": null,
"editingGroupId": null,
"editingLinearElement": null,
+ "elementsToHighlight": null,
"errorMessage": null,
"exportBackground": true,
"exportEmbedScene": false,
@@ -35,12 +40,18 @@ Object {
"exportScale": 1,
"exportWithDarkMode": false,
"fileHandle": null,
+ "frameRendering": {
+ "clip": true,
+ "enabled": true,
+ "name": true,
+ "outline": true,
+ },
+ "frameToHighlight": null,
"gridSize": null,
"isBindingEnabled": true,
"isLoading": false,
"isResizing": false,
"isRotating": false,
- "isSidebarDocked": false,
"lastPointerDownWith": "mouse",
"multiElement": null,
"name": "name",
@@ -48,20 +59,21 @@ Object {
"openMenu": null,
"openPopup": null,
"openSidebar": null,
- "pasteDialog": Object {
+ "pasteDialog": {
"data": null,
"shown": false,
},
"penDetected": false,
"penMode": false,
"pendingImageElementId": null,
- "previousSelectedElementIds": Object {},
+ "previousSelectedElementIds": {},
"resizingElement": null,
"scrollX": 0,
"scrollY": 0,
"scrolledOutside": false,
- "selectedElementIds": Object {},
- "selectedGroupIds": Object {},
+ "selectedElementIds": {},
+ "selectedElementsAreBeingDragged": false,
+ "selectedGroupIds": {},
"selectedLinearElement": null,
"selectionElement": null,
"shouldCacheIgnoreZoom": false,
@@ -69,13 +81,13 @@ Object {
"showStats": false,
"showWelcomeScreen": false,
"startBoundElement": null,
- "suggestedBindings": Array [],
+ "suggestedBindings": [],
"theme": "light",
"toast": null,
"viewBackgroundColor": "#ffffff",
"viewModeEnabled": false,
"zenModeEnabled": false,
- "zoom": Object {
+ "zoom": {
"value": 1,
},
}
diff --git a/src/tests/packages/excalidraw.test.tsx b/src/tests/packages/excalidraw.test.tsx
index 2957fd476..20852a2ad 100644
--- a/src/tests/packages/excalidraw.test.tsx
+++ b/src/tests/packages/excalidraw.test.tsx
@@ -1,12 +1,20 @@
-import { fireEvent, GlobalTestState, render } from "../test-utils";
-import { Excalidraw } from "../../packages/excalidraw/index";
-import { queryByText, queryByTestId } from "@testing-library/react";
+import { fireEvent, GlobalTestState, toggleMenu, render } from "../test-utils";
+import { Excalidraw, Footer, MainMenu } from "../../packages/excalidraw/index";
+import { queryByText, queryByTestId, screen } from "@testing-library/react";
import { GRID_SIZE, THEME } from "../../constants";
import { t } from "../../i18n";
+import { useMemo } from "react";
const { h } = window;
describe(" ", () => {
+ afterEach(() => {
+ const menu = document.querySelector(".dropdown-menu");
+ if (menu) {
+ toggleMenu(document.querySelector(".excalidraw")!);
+ }
+ });
+
describe("Test zenModeEnabled prop", () => {
it('should show exit zen mode button when zen mode is set and zen mode option in context menu when zenModeEnabled is "undefined"', async () => {
const { container } = await render( );
@@ -34,7 +42,7 @@ describe(" ", () => {
container.getElementsByClassName("disable-zen-mode--visible").length,
).toBe(0);
expect(h.state.zenModeEnabled).toBe(true);
-
+ screen.debug();
fireEvent.contextMenu(GlobalTestState.canvas, {
button: 2,
clientX: 1,
@@ -49,6 +57,36 @@ describe(" ", () => {
});
});
+ it("should render the footer only when Footer is passed as children", async () => {
+ //Footer not passed hence it will not render the footer
+ let { container } = await render(
+
+ This is a custom footer
+ ,
+ );
+ expect(container.querySelector(".footer-center")).toBe(null);
+
+ // Footer passed hence it will render the footer
+ ({ container } = await render(
+
+
+ This is a custom footer
+
+ ,
+ ));
+ expect(container.querySelector(".footer-center")).toMatchInlineSnapshot(
+ `
+
+ `,
+ );
+ });
+
describe("Test gridModeEnabled prop", () => {
it('should show grid mode in context menu when gridModeEnabled is "undefined"', async () => {
const { container } = await render( );
@@ -87,98 +125,23 @@ describe(" ", () => {
});
});
- describe("Test theme prop", () => {
- it("should show the theme toggle by default", async () => {
- const { container } = await render( );
-
- expect(h.state.theme).toBe(THEME.LIGHT);
-
- queryByTestId(container, "menu-button")!.click();
- const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
- expect(darkModeToggle).toBeTruthy();
- });
-
- it("should not show theme toggle when the theme prop is defined", async () => {
- const { container } = await render( );
- expect(h.state.theme).toBe(THEME.DARK);
- expect(queryByTestId(container, "toggle-dark-mode")).toBe(null);
- });
-
- it("should show theme mode toggle when `UIOptions.canvasActions.toggleTheme` is true", async () => {
- const { container } = await render(
- ,
- );
- expect(h.state.theme).toBe(THEME.DARK);
- const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
- expect(darkModeToggle).toBeTruthy();
- });
-
- it("should not show theme toggle when `UIOptions.canvasActions.toggleTheme` is false", async () => {
- const { container } = await render(
- ,
- );
- expect(h.state.theme).toBe(THEME.DARK);
- const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
- expect(darkModeToggle).toBeFalsy();
- });
- });
-
- describe("Test name prop", () => {
- it('should allow editing name when the name prop is "undefined"', async () => {
- const { container } = await render( );
-
- fireEvent.click(queryByTestId(container, "image-export-button")!);
- const textInput: HTMLInputElement | null = document.querySelector(
- ".ExportDialog .ProjectName .TextInput",
- );
- expect(textInput?.value).toContain(`${t("labels.untitled")}`);
- expect(textInput?.nodeName).toBe("INPUT");
- });
-
- it('should set the name and not allow editing when the name prop is present"', async () => {
- const name = "test";
- const { container } = await render( );
-
- await fireEvent.click(queryByTestId(container, "image-export-button")!);
- const textInput = document.querySelector(
- ".ExportDialog .ProjectName .TextInput--readonly",
- );
- expect(textInput?.textContent).toEqual(name);
- expect(textInput?.nodeName).toBe("SPAN");
- });
- });
-
describe("Test UIOptions prop", () => {
- it('should not hide any UI element when the UIOptions prop is "undefined"', async () => {
- await render( );
-
- const canvasActions = document.querySelector(
- 'section[aria-labelledby="test-id-canvasActions-title"]',
- );
-
- expect(canvasActions).toMatchSnapshot();
- });
-
describe("Test canvasActions", () => {
- it('should not hide any UI element when canvasActions is "undefined"', async () => {
- await render( );
- const canvasActions = document.querySelector(
- 'section[aria-labelledby="test-id-canvasActions-title"]',
+ it('should render menu with default items when "UIOPtions" is "undefined"', async () => {
+ const { container } = await render(
+ ,
);
- expect(canvasActions).toMatchSnapshot();
+ //open menu
+ toggleMenu(container);
+ expect(queryByTestId(container, "dropdown-menu")).toMatchSnapshot();
});
it("should hide clear canvas button when clearCanvas is false", async () => {
const { container } = await render(
,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "clear-canvas-button")).toBeNull();
});
@@ -186,7 +149,8 @@ describe(" ", () => {
const { container } = await render(
,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "json-export-button")).toBeNull();
});
@@ -194,7 +158,8 @@ describe(" ", () => {
const { container } = await render(
,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "image-export-button")).toBeNull();
});
@@ -212,7 +177,8 @@ describe(" ", () => {
UIOptions={{ canvasActions: { export: { saveFileToDisk: false } } }}
/>,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "save-as-button")).toBeNull();
});
@@ -222,7 +188,8 @@ describe(" ", () => {
UIOptions={{ canvasActions: { saveToActiveFile: false } }}
/>,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "save-button")).toBeNull();
});
@@ -232,7 +199,25 @@ describe(" ", () => {
UIOptions={{ canvasActions: { changeViewBackgroundColor: false } }}
/>,
);
+ //open menu
+ toggleMenu(container);
+ expect(queryByTestId(container, "canvas-background-label")).toBeNull();
+ expect(queryByTestId(container, "canvas-background-picker")).toBeNull();
+ });
+ it("should hide the canvas background picker even if passed if the `canvasActions.changeViewBackgroundColor` is set to false", async () => {
+ const { container } = await render(
+
+
+
+
+ ,
+ );
+ //open menu
+ toggleMenu(container);
+ expect(queryByTestId(container, "canvas-background-label")).toBeNull();
expect(queryByTestId(container, "canvas-background-picker")).toBeNull();
});
@@ -240,9 +225,108 @@ describe(" ", () => {
const { container } = await render(
,
);
-
+ //open menu
+ toggleMenu(container);
expect(queryByTestId(container, "toggle-dark-mode")).toBeNull();
});
+
+ it("should not render default items in custom menu even if passed if the prop in `canvasActions` is set to false", async () => {
+ const { container } = await render(
+
+
+
+ window.alert("custom menu item")}
+ >
+ custom item
+
+
+
+
+ ,
+ );
+ //open menu
+ toggleMenu(container);
+ // load button shouldn't be rendered since `UIActions.canvasActions.loadScene` is `false`
+ expect(queryByTestId(container, "load-button")).toBeNull();
+ });
+ });
+ });
+
+ describe("Test theme prop", () => {
+ it("should show the theme toggle by default", async () => {
+ const { container } = await render( );
+ expect(h.state.theme).toBe(THEME.LIGHT);
+ //open menu
+ toggleMenu(container);
+ const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
+ expect(darkModeToggle).toBeTruthy();
+ });
+
+ it("should not show theme toggle when the theme prop is defined", async () => {
+ const { container } = await render( );
+
+ expect(h.state.theme).toBe(THEME.DARK);
+ //open menu
+ toggleMenu(container);
+ expect(queryByTestId(container, "toggle-dark-mode")).toBe(null);
+ });
+
+ it("should show theme mode toggle when `UIOptions.canvasActions.toggleTheme` is true", async () => {
+ const { container } = await render(
+ ,
+ );
+ expect(h.state.theme).toBe(THEME.DARK);
+ //open menu
+ toggleMenu(container);
+ const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
+ expect(darkModeToggle).toBeTruthy();
+ });
+
+ it("should not show theme toggle when `UIOptions.canvasActions.toggleTheme` is false", async () => {
+ const { container } = await render(
+ ,
+ );
+ expect(h.state.theme).toBe(THEME.DARK);
+ //open menu
+ toggleMenu(container);
+ const darkModeToggle = queryByTestId(container, "toggle-dark-mode");
+ expect(darkModeToggle).toBe(null);
+ });
+ });
+
+ describe("Test name prop", () => {
+ it('should allow editing name when the name prop is "undefined"', async () => {
+ const { container } = await render( );
+ //open menu
+ toggleMenu(container);
+ fireEvent.click(queryByTestId(container, "image-export-button")!);
+ const textInput: HTMLInputElement | null = document.querySelector(
+ ".ImageExportModal .ImageExportModal__preview__filename .TextInput",
+ );
+ expect(textInput?.value).toContain(`${t("labels.untitled")}`);
+ expect(textInput?.nodeName).toBe("INPUT");
+ });
+
+ it('should set the name and not allow editing when the name prop is present"', async () => {
+ const name = "test";
+ const { container } = await render( );
+ //open menu
+ toggleMenu(container);
+ await fireEvent.click(queryByTestId(container, "image-export-button")!);
+ const textInput = document.querySelector(
+ ".ImageExportModal .ImageExportModal__preview__filename .TextInput",
+ ) as HTMLInputElement;
+ expect(textInput?.value).toEqual(name);
+ expect(textInput?.nodeName).toBe("INPUT");
+ expect(textInput?.disabled).toBe(true);
});
});
@@ -263,4 +347,63 @@ describe(" ", () => {
).toBe(true);
});
});
+
+ describe(" ", () => {
+ it("should render main menu with host menu items if passed from host", async () => {
+ const { container } = await render(
+
+
+ window.alert("Clicked")}>
+ Click me
+
+
+ Excalidraw blog
+
+
+ window.alert("custom menu item")}
+ >
+ custom menu item
+
+
+
+
+ ,
+ );
+ //open menu
+ toggleMenu(container);
+ expect(queryByTestId(container, "dropdown-menu")).toMatchSnapshot();
+ });
+
+ it("should update themeToggle text even if MainMenu memoized", async () => {
+ const CustomExcalidraw = () => {
+ const customMenu = useMemo(() => {
+ return (
+
+
+
+ );
+ }, []);
+
+ return {customMenu} ;
+ };
+
+ const { container } = await render( );
+ //open menu
+ toggleMenu(container);
+
+ expect(h.state.theme).toBe(THEME.LIGHT);
+
+ expect(
+ queryByTestId(container, "toggle-dark-mode")?.textContent,
+ ).toContain(t("buttons.darkMode"));
+
+ fireEvent.click(queryByTestId(container, "toggle-dark-mode")!);
+
+ expect(
+ queryByTestId(container, "toggle-dark-mode")?.textContent,
+ ).toContain(t("buttons.lightMode"));
+ });
+ });
});
diff --git a/src/tests/packages/utils.test.ts b/src/tests/packages/utils.test.ts
index 824b5d15a..7d880d296 100644
--- a/src/tests/packages/utils.test.ts
+++ b/src/tests/packages/utils.test.ts
@@ -1,15 +1,13 @@
import * as utils from "../../packages/utils";
import { diagramFactory } from "../fixtures/diagramFixture";
+import { vi } from "vitest";
import * as mockedSceneExportUtils from "../../scene/export";
+
import { MIME_TYPES } from "../../constants";
-jest.mock("../../scene/export", () => ({
- __esmodule: true,
- ...jest.requireActual("../../scene/export"),
- exportToSvg: jest.fn(),
-}));
+const exportToSvgSpy = vi.spyOn(mockedSceneExportUtils, "exportToSvg");
-describe("exportToCanvas", () => {
+describe("exportToCanvas", async () => {
const EXPORT_PADDING = 10;
it("with default arguments", async () => {
@@ -32,10 +30,9 @@ describe("exportToCanvas", () => {
});
});
-describe("exportToBlob", () => {
+describe("exportToBlob", async () => {
describe("mime type", () => {
- afterEach(jest.restoreAllMocks);
-
+ // afterEach(vi.restoreAllMocks);
it("should change image/jpg to image/jpeg", async () => {
const blob = await utils.exportToBlob({
...diagramFactory(),
@@ -48,7 +45,6 @@ describe("exportToBlob", () => {
});
expect(blob?.type).toBe(MIME_TYPES.jpg);
});
-
it("should default to image/png", async () => {
const blob = await utils.exportToBlob({
...diagramFactory(),
@@ -57,16 +53,14 @@ describe("exportToBlob", () => {
});
it("should warn when using quality with image/png", async () => {
- const consoleSpy = jest
+ const consoleSpy = vi
.spyOn(console, "warn")
.mockImplementationOnce(() => void 0);
-
await utils.exportToBlob({
...diagramFactory(),
mimeType: MIME_TYPES.png,
quality: 1,
});
-
expect(consoleSpy).toHaveBeenCalledWith(
`"quality" will be ignored for "${MIME_TYPES.png}" mimeType`,
);
@@ -75,10 +69,12 @@ describe("exportToBlob", () => {
});
describe("exportToSvg", () => {
- const mockedExportUtil = mockedSceneExportUtils.exportToSvg as jest.Mock;
- const passedElements = () => mockedExportUtil.mock.calls[0][0];
- const passedOptions = () => mockedExportUtil.mock.calls[0][1];
- afterEach(jest.resetAllMocks);
+ const passedElements = () => exportToSvgSpy.mock.calls[0][0];
+ const passedOptions = () => exportToSvgSpy.mock.calls[0][1];
+
+ afterEach(() => {
+ vi.clearAllMocks();
+ });
it("with default arguments", async () => {
await utils.exportToSvg({
diff --git a/src/tests/packages/utils.unmocked.test.ts b/src/tests/packages/utils.unmocked.test.ts
new file mode 100644
index 000000000..28db08c49
--- /dev/null
+++ b/src/tests/packages/utils.unmocked.test.ts
@@ -0,0 +1,67 @@
+import { decodePngMetadata, decodeSvgMetadata } from "../../data/image";
+import { ImportedDataState } from "../../data/types";
+import * as utils from "../../packages/utils";
+import { API } from "../helpers/api";
+
+// NOTE this test file is using the actual API, unmocked. Hence splitting it
+// from the other test file, because I couldn't figure out how to test
+// mocked and unmocked API in the same file.
+
+describe("embedding scene data", () => {
+ describe("exportToSvg", () => {
+ it("embedding scene data shouldn't modify them", async () => {
+ const rectangle = API.createElement({ type: "rectangle" });
+ const ellipse = API.createElement({ type: "ellipse" });
+
+ const sourceElements = [rectangle, ellipse];
+
+ const svgNode = await utils.exportToSvg({
+ elements: sourceElements,
+ appState: {
+ viewBackgroundColor: "#ffffff",
+ gridSize: null,
+ exportEmbedScene: true,
+ },
+ files: null,
+ });
+
+ const svg = svgNode.outerHTML;
+
+ const parsedString = await decodeSvgMetadata({ svg });
+ const importedData: ImportedDataState = JSON.parse(parsedString);
+
+ expect(sourceElements.map((x) => x.id)).toEqual(
+ importedData.elements?.map((el) => el.id),
+ );
+ });
+ });
+
+ // skipped because we can't test png encoding right now
+ // (canvas.toBlob not supported in jsdom)
+ describe.skip("exportToBlob", () => {
+ it("embedding scene data shouldn't modify them", async () => {
+ const rectangle = API.createElement({ type: "rectangle" });
+ const ellipse = API.createElement({ type: "ellipse" });
+
+ const sourceElements = [rectangle, ellipse];
+
+ const blob = await utils.exportToBlob({
+ mimeType: "image/png",
+ elements: sourceElements,
+ appState: {
+ viewBackgroundColor: "#ffffff",
+ gridSize: null,
+ exportEmbedScene: true,
+ },
+ files: null,
+ });
+
+ const parsedString = await decodePngMetadata(blob);
+ const importedData: ImportedDataState = JSON.parse(parsedString);
+
+ expect(sourceElements.map((x) => x.id)).toEqual(
+ importedData.elements?.map((el) => el.id),
+ );
+ });
+ });
+});
diff --git a/src/tests/queries/toolQueries.ts b/src/tests/queries/toolQueries.ts
index bc1e4928d..c20e0d309 100644
--- a/src/tests/queries/toolQueries.ts
+++ b/src/tests/queries/toolQueries.ts
@@ -11,6 +11,7 @@ const toolMap = {
freedraw: "freedraw",
text: "text",
eraser: "eraser",
+ frame: "frame",
};
export type ToolName = keyof typeof toolMap;
diff --git a/src/tests/regressionTests.test.tsx b/src/tests/regressionTests.test.tsx
index d8e149d9a..8cb483c93 100644
--- a/src/tests/regressionTests.test.tsx
+++ b/src/tests/regressionTests.test.tsx
@@ -12,15 +12,16 @@ import {
fireEvent,
render,
screen,
+ togglePopover,
waitFor,
} from "./test-utils";
import { defaultLang } from "../i18n";
import { FONT_FAMILY } from "../constants";
-import { t } from "../i18n";
+import { vi } from "vitest";
const { h } = window;
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
const mouse = new Pointer("mouse");
const finger1 = new Pointer("touch", 1);
@@ -42,7 +43,6 @@ const checkpoint = (name: string) => {
expect(element).toMatchSnapshot(`[${name}] element ${i}`),
);
};
-
beforeEach(async () => {
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
@@ -157,15 +157,17 @@ describe("regression tests", () => {
}
it("change the properties of a shape", () => {
UI.clickTool("rectangle");
+
mouse.down(10, 10);
mouse.up(10, 10);
+ togglePopover("Background");
+ UI.clickOnTestId("color-yellow");
+ UI.clickOnTestId("color-red");
- UI.clickLabeledElement("Background");
- UI.clickLabeledElement(t("colors.fa5252"));
- UI.clickLabeledElement("Stroke");
- UI.clickLabeledElement(t("colors.5f3dc4"));
- expect(API.getSelectedElement().backgroundColor).toBe("#fa5252");
- expect(API.getSelectedElement().strokeColor).toBe("#5f3dc4");
+ togglePopover("Stroke");
+ UI.clickOnTestId("color-blue");
+ expect(API.getSelectedElement().backgroundColor).toBe("#ffc9c9");
+ expect(API.getSelectedElement().strokeColor).toBe("#1971c2");
});
it("click on an element and drag it", () => {
@@ -446,7 +448,7 @@ describe("regression tests", () => {
UI.clickTool("rectangle");
// english lang should display `thin` label
expect(screen.queryByTitle(/thin/i)).not.toBeNull();
- fireEvent.click(document.querySelector(".menu-button")!);
+ fireEvent.click(document.querySelector(".dropdown-menu-button")!);
fireEvent.change(document.querySelector(".dropdown-select__language")!, {
target: { value: "de-DE" },
@@ -542,7 +544,7 @@ describe("regression tests", () => {
expect(element.groupIds.length).toBe(1);
}
- mouse.reset();
+ mouse.moveTo(-10, -10); // the NW resizing handle is at [0, 0], so moving further
mouse.down();
mouse.restorePosition(...end);
mouse.up();
@@ -988,8 +990,8 @@ describe("regression tests", () => {
UI.clickTool("rectangle");
// change background color since default is transparent
// and transparent elements can't be selected by clicking inside of them
- UI.clickLabeledElement("Background");
- UI.clickLabeledElement(t("colors.fa5252"));
+ togglePopover("Background");
+ UI.clickOnTestId("color-red");
mouse.down();
mouse.up(1000, 1000);
@@ -1088,15 +1090,14 @@ describe("regression tests", () => {
assertSelectedElements(rect3);
});
- it("should show fill icons when element has non transparent background", () => {
+ it("should show fill icons when element has non transparent background", async () => {
UI.clickTool("rectangle");
expect(screen.queryByText(/fill/i)).not.toBeNull();
mouse.down();
mouse.up(10, 10);
expect(screen.queryByText(/fill/i)).toBeNull();
-
- UI.clickLabeledElement("Background");
- UI.clickLabeledElement(t("colors.fa5252"));
+ togglePopover("Background");
+ UI.clickOnTestId("color-red");
// select rectangle
mouse.reset();
mouse.click();
diff --git a/src/tests/resize.test.tsx b/src/tests/resize.test.tsx
index 12fb86bea..13f757a98 100644
--- a/src/tests/resize.test.tsx
+++ b/src/tests/resize.test.tsx
@@ -9,11 +9,12 @@ import { ExcalidrawTextElement } from "../element/types";
import ExcalidrawApp from "../excalidraw-app";
import { API } from "./helpers/api";
import { KEYS } from "../keys";
+import { vi } from "vitest";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
diff --git a/src/tests/scene/__snapshots__/export.test.ts.snap b/src/tests/scene/__snapshots__/export.test.ts.snap
index 8015ebc4c..2b959db25 100644
--- a/src/tests/scene/__snapshots__/export.test.ts.snap
+++ b/src/tests/scene/__snapshots__/export.test.ts.snap
@@ -1,6 +1,6 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
+// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
-exports[`exportToSvg with default arguments 1`] = `
+exports[`exportToSvg > with default arguments 1`] = `
+
@@ -73,7 +74,7 @@ exports[`exportToSvg with default arguments 1`] = `
`;
-exports[`exportToSvg with elements that have a link 1`] = `
+exports[`exportToSvg > with elements that have a link 1`] = `
"
@@ -88,14 +89,15 @@ exports[`exportToSvg with elements that have a link 1`] = `
src: url(\\"https://excalidraw.com/Cascadia.woff2\\");
}
+
"
`;
-exports[`exportToSvg with exportEmbedScene 1`] = `
+exports[`exportToSvg > with exportEmbedScene 1`] = `
"
- eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SsW7CMFx1MDAxMN35iihdkUjSQChcdTAwMWItVVWpalx1MDAwN1x1MDAwNqRWXHUwMDFkTHxJrFx1MDAxONvEXHUwMDBlXHUwMDEwIf69tlx1MDAwM3GJXHUwMDE4O9aDpXt+7+58945cdTAwMDPP81UjwJ95Plx1MDAxY1JEXHSu0N5cdTAwMWZcdTAwMWF8XHUwMDA3lSSc6afIxpLXVWqZhVJiNlx1MDAxYVGuXHUwMDA1XHUwMDA1l6rlXHUwMDAzhVxyMCU140vHnne0t34h2Kh2q2r7Mc9KwnC0TTfJ22L+8mmllnTQnDiMu7gxhe+TLt5cdTAwMTOsXG6NhUHQYVx1MDAwNZC8UD1cdTAwMTCxnJo2XHUwMDFkXCJVxUt44pRXppG7wFx1MDAxZVd6jdIyr3jNsOOEY4TWmeNkhNKlamg7XHUwMDAwlFx1MDAxNnVcdTAwMDV+r8Lq0mJcdTAwMGbvdJLrXHUwMDAxO5UumVx1MDAxN1xmpLzScIFSoprer0x/4lx1MDAxNdvpfv/OwPA5XHUwMDAzqyl1hVx1MDAwMbDNXHUwMDEwh5Nx8lx1MDAxMEy7XHUwMDE3t9YwXG766DtndsVhOJ1cdTAwMDZBXHUwMDFjJZOOQeRCb1jZtFx1MDAxOaJcdTAwMTLc+ExcdTAwMTPPbvtXjdRcdTAwMDKjVuR+SFx0K/s8babyRu6LOTFBXHUwMDFizrBv8dPw31///vpTf1x1MDAwMaVESDj7S992XHUwMDA2Plx1MDAxMmKpdH5Nad3m71xi7Fx1MDAxZm/sM7PH6K07zT7BNHs8XHJOP7VXYMUifQ==
+ eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO1SPW/CMFx1MDAxMN35XHUwMDE1UbpcIuFAIJSNlqpCqtqBXHUwMDAxqVVcdTAwMDdcdTAwMTNfiFx1MDAxNcdcdTAwMGW2w4dcdTAwMTD/vbaBuETMnerBkt+9d3e+e8dOXHUwMDEwhPpQQThcdELYp5hRXCLxLuxafFx1MDAwYlJRwU2o795K1DJ1zFxc62rS6zFhXHUwMDA0uVB6MkBcYp1FwKBcdTAwMDSulaF9mXdcdTAwMTBcdTAwMWPdbVwilFjpdik3XHUwMDFm06ygnPQ3aZm8zaavn07qSHvDiaO4eVx1MDAxZmz1QdK8d5To3GBcdTAwMTFCXHKWXHUwMDAzXee6XHUwMDA1Yr5mtlePKC1FXHUwMDAxz4JcdGlcdTAwMWJ5QO740iucXHUwMDE2aylqTjwnXHUwMDFhYrzKPCejjC30gZ2ngNO8llx1MDAxMLYqLK8ttvBGp4SZsleZkuucg1I3XHUwMDFhUeGU6kPrV7a/ak7cdL99V1x1MDAxMpcwt+PlNWO/XHUwMDEzc3JJfFx1MDAxM1BcdTAwMDDEJY6j0TB5ROMm4ldcdTAwMWX1UVx1MDAxYn1cdTAwMTfcrT+KxmOE4n4yalx1MDAxOFTNzOK1S5thpsBP1Tbx4k1x00hdXHUwMDExfFx1MDAxNvmPM8qLNs9cdTAwMTituJP7alxcQnEpOFx0XHUwMDFkfur+2+7fdn9hO2CMVlxuLrYzt1x1MDAxYk2Iq2qhTX5DOZsw3FLYPd1Zc+aO1TvT2jWDbfZ46px+XHUwMDAwcU5t0CJ9
+
"
`;
diff --git a/src/tests/scene/export.test.ts b/src/tests/scene/export.test.ts
index bab87a15c..4da7a702e 100644
--- a/src/tests/scene/export.test.ts
+++ b/src/tests/scene/export.test.ts
@@ -61,7 +61,7 @@ describe("exportToSvg", () => {
);
expect(svgElement.getAttribute("filter")).toMatchInlineSnapshot(
- `"themeFilter"`,
+ '"_themeFilter_f32792"',
);
});
diff --git a/src/tests/scroll.test.tsx b/src/tests/scroll.test.tsx
index 1105352d0..e8aa074e0 100644
--- a/src/tests/scroll.test.tsx
+++ b/src/tests/scroll.test.tsx
@@ -6,6 +6,9 @@ import {
} from "./test-utils";
import { Excalidraw } from "../packages/excalidraw/index";
import { API } from "./helpers/api";
+import { Keyboard } from "./helpers/ui";
+import { KEYS } from "../keys";
+import ExcalidrawApp from "../excalidraw-app";
const { h } = window;
@@ -50,4 +53,60 @@ describe("appState", () => {
});
restoreOriginalGetBoundingClientRect();
});
+
+ it("moving by page up/down/left/right", async () => {
+ mockBoundingClientRect();
+ await render( , {});
+
+ const scrollTest = () => {
+ const initialScrollY = h.state.scrollY;
+ const initialScrollX = h.state.scrollX;
+ const pageStepY = h.state.height / h.state.zoom.value;
+ const pageStepX = h.state.width / h.state.zoom.value;
+ // Assert the following assertions have meaning
+ expect(pageStepY).toBeGreaterThan(0);
+ expect(pageStepX).toBeGreaterThan(0);
+ // Assert we scroll up
+ Keyboard.keyPress(KEYS.PAGE_UP);
+ expect(h.state.scrollY).toBe(initialScrollY + pageStepY);
+ // x-axis unchanged
+ expect(h.state.scrollX).toBe(initialScrollX);
+
+ // Assert we scroll down
+ Keyboard.keyPress(KEYS.PAGE_DOWN);
+ Keyboard.keyPress(KEYS.PAGE_DOWN);
+ expect(h.state.scrollY).toBe(initialScrollY - pageStepY);
+ // x-axis unchanged
+ expect(h.state.scrollX).toBe(initialScrollX);
+
+ // Assert we scroll left
+ Keyboard.withModifierKeys({ shift: true }, () => {
+ Keyboard.keyPress(KEYS.PAGE_UP);
+ });
+ expect(h.state.scrollX).toBe(initialScrollX + pageStepX);
+ // y-axis unchanged
+ expect(h.state.scrollY).toBe(initialScrollY - pageStepY);
+
+ // Assert we scroll right
+ Keyboard.withModifierKeys({ shift: true }, () => {
+ Keyboard.keyPress(KEYS.PAGE_DOWN);
+ Keyboard.keyPress(KEYS.PAGE_DOWN);
+ });
+ expect(h.state.scrollX).toBe(initialScrollX - pageStepX);
+ // y-axis unchanged
+ expect(h.state.scrollY).toBe(initialScrollY - pageStepY);
+ };
+
+ const zoom = h.state.zoom.value;
+ // Assert we scroll properly when zoomed in
+ h.setState({ zoom: { value: (zoom * 1.1) as typeof zoom } });
+ scrollTest();
+ // Assert we scroll properly when zoomed out
+ h.setState({ zoom: { value: (zoom * 0.9) as typeof zoom } });
+ scrollTest();
+ // Assert we scroll properly with normal zoom
+ h.setState({ zoom: { value: zoom } });
+ scrollTest();
+ restoreOriginalGetBoundingClientRect();
+ });
});
diff --git a/src/tests/selection.test.tsx b/src/tests/selection.test.tsx
index 7bfd6e9b3..aa8b64a8a 100644
--- a/src/tests/selection.test.tsx
+++ b/src/tests/selection.test.tsx
@@ -13,11 +13,12 @@ import { reseed } from "../random";
import { API } from "./helpers/api";
import { Keyboard, Pointer, UI } from "./helpers/ui";
import { SHAPES } from "../shapes";
+import { vi } from "vitest";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
-const renderScene = jest.spyOn(Renderer, "renderScene");
+const renderScene = vi.spyOn(Renderer, "renderScene");
beforeEach(() => {
localStorage.clear();
renderScene.mockClear();
@@ -28,6 +29,74 @@ const { h } = window;
const mouse = new Pointer("mouse");
+describe("box-selection", () => {
+ beforeEach(async () => {
+ await render( );
+ });
+
+ it("should allow adding to selection via box-select when holding shift", async () => {
+ const rect1 = API.createElement({
+ type: "rectangle",
+ x: 0,
+ y: 0,
+ width: 50,
+ height: 50,
+ backgroundColor: "red",
+ fillStyle: "solid",
+ });
+ const rect2 = API.createElement({
+ type: "rectangle",
+ x: 100,
+ y: 0,
+ width: 50,
+ height: 50,
+ });
+
+ h.elements = [rect1, rect2];
+
+ mouse.downAt(175, -20);
+ mouse.moveTo(85, 70);
+ mouse.up();
+
+ assertSelectedElements([rect2.id]);
+
+ Keyboard.withModifierKeys({ shift: true }, () => {
+ mouse.downAt(75, -20);
+ mouse.moveTo(-15, 70);
+ mouse.up();
+ });
+
+ assertSelectedElements([rect2.id, rect1.id]);
+ });
+
+ it("should (de)select element when box-selecting over and out while not holding shift", async () => {
+ const rect1 = API.createElement({
+ type: "rectangle",
+ x: 0,
+ y: 0,
+ width: 50,
+ height: 50,
+ backgroundColor: "red",
+ fillStyle: "solid",
+ });
+
+ h.elements = [rect1];
+
+ mouse.downAt(75, -20);
+ mouse.moveTo(-15, 70);
+
+ assertSelectedElements([rect1.id]);
+
+ mouse.moveTo(100, -100);
+
+ assertSelectedElements([]);
+
+ mouse.up();
+
+ assertSelectedElements([]);
+ });
+});
+
describe("inner box-selection", () => {
beforeEach(async () => {
await render( );
diff --git a/src/tests/shortcuts.test.tsx b/src/tests/shortcuts.test.tsx
new file mode 100644
index 000000000..e0b4fcc58
--- /dev/null
+++ b/src/tests/shortcuts.test.tsx
@@ -0,0 +1,30 @@
+import { KEYS } from "../keys";
+import { Excalidraw } from "../packages/excalidraw/entry";
+import { API } from "./helpers/api";
+import { Keyboard } from "./helpers/ui";
+import { fireEvent, render, waitFor } from "./test-utils";
+
+describe("shortcuts", () => {
+ it("Clear canvas shortcut should display confirm dialog", async () => {
+ await render(
+ ,
+ );
+
+ expect(window.h.elements.length).toBe(1);
+
+ Keyboard.withModifierKeys({ ctrl: true }, () => {
+ Keyboard.keyDown(KEYS.DELETE);
+ });
+ const confirmDialog = document.querySelector(".confirm-dialog")!;
+ expect(confirmDialog).not.toBe(null);
+
+ fireEvent.click(confirmDialog.querySelector('[aria-label="Confirm"]')!);
+
+ await waitFor(() => {
+ expect(window.h.elements[0].isDeleted).toBe(true);
+ });
+ });
+});
diff --git a/src/tests/test-utils.ts b/src/tests/test-utils.ts
index c7af29048..1855a7fec 100644
--- a/src/tests/test-utils.ts
+++ b/src/tests/test-utils.ts
@@ -6,6 +6,7 @@ import {
RenderResult,
RenderOptions,
waitFor,
+ fireEvent,
} from "@testing-library/react";
import * as toolQueries from "./queries/toolQueries";
@@ -15,6 +16,7 @@ import { STORAGE_KEYS } from "../excalidraw-app/app_constants";
import { SceneData } from "../types";
import { getSelectedElements } from "../scene/selection";
import { ExcalidrawElement } from "../element/types";
+import { UI } from "./helpers/ui";
const customQueries = {
...queries,
@@ -184,3 +186,61 @@ export const assertSelectedElements = (
expect(selectedElementIds.length).toBe(ids.length);
expect(selectedElementIds).toEqual(expect.arrayContaining(ids));
};
+
+export const createPasteEvent = (
+ text:
+ | string
+ | /* getData function */ ((type: string) => string | Promise),
+ files?: File[],
+) => {
+ return Object.assign(
+ new Event("paste", {
+ bubbles: true,
+ cancelable: true,
+ composed: true,
+ }),
+ {
+ clipboardData: {
+ getData: typeof text === "string" ? () => text : text,
+ files: files || [],
+ },
+ },
+ );
+};
+
+export const toggleMenu = (container: HTMLElement) => {
+ // open menu
+ fireEvent.click(container.querySelector(".dropdown-menu-button")!);
+};
+
+export const togglePopover = (label: string) => {
+ // Needed for radix-ui/react-popover as tests fail due to resize observer not being present
+ (global as any).ResizeObserver = class ResizeObserver {
+ constructor(cb: any) {
+ (this as any).cb = cb;
+ }
+
+ observe() {}
+
+ unobserve() {}
+ disconnect() {}
+ };
+
+ UI.clickLabeledElement(label);
+};
+
+expect.extend({
+ toBeNonNaNNumber(received) {
+ const pass = typeof received === "number" && !isNaN(received);
+ if (pass) {
+ return {
+ message: () => `expected ${received} not to be a non-NaN number`,
+ pass: true,
+ };
+ }
+ return {
+ message: () => `expected ${received} to be a non-NaN number`,
+ pass: false,
+ };
+ },
+});
diff --git a/src/tests/zindex.test.tsx b/src/tests/zindex.test.tsx
index 402e0a2d9..de421338b 100644
--- a/src/tests/zindex.test.tsx
+++ b/src/tests/zindex.test.tsx
@@ -11,6 +11,7 @@ import {
} from "../actions";
import { AppState } from "../types";
import { API } from "./helpers/api";
+import { selectGroupsForSelectedElements } from "../groups";
// Unmount ReactDOM from root
ReactDOM.unmountComponentAtNode(document.getElementById("root")!);
@@ -34,6 +35,7 @@ const populateElements = (
height?: number;
containerId?: string;
}[],
+ appState?: Partial,
) => {
const selectedElementIds: any = {};
@@ -84,6 +86,13 @@ const populateElements = (
});
h.setState({
+ ...selectGroupsForSelectedElements(
+ { ...h.state, ...appState, selectedElementIds },
+ h.elements,
+ h.state,
+ null,
+ ),
+ ...appState,
selectedElementIds,
});
@@ -111,11 +120,7 @@ const assertZindex = ({
appState?: Partial;
operations: [Actions, string[]][];
}) => {
- const selectedElementIds = populateElements(elements);
-
- h.setState({
- editingGroupId: appState?.editingGroupId || null,
- });
+ const selectedElementIds = populateElements(elements, appState);
operations.forEach(([action, expected]) => {
h.app.actionManager.executeAction(action);
@@ -884,9 +889,6 @@ describe("z-index manipulation", () => {
{ id: "A", groupIds: ["g1"], isSelected: true },
{ id: "B", groupIds: ["g1"], isSelected: true },
]);
- h.setState({
- selectedGroupIds: { g1: true },
- });
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements).toMatchObject([
{ id: "A" },
@@ -908,9 +910,6 @@ describe("z-index manipulation", () => {
{ id: "B", groupIds: ["g1"], isSelected: true },
{ id: "C" },
]);
- h.setState({
- selectedGroupIds: { g1: true },
- });
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements).toMatchObject([
{ id: "A" },
@@ -933,9 +932,6 @@ describe("z-index manipulation", () => {
{ id: "B", groupIds: ["g1"], isSelected: true },
{ id: "C", isSelected: true },
]);
- h.setState({
- selectedGroupIds: { g1: true },
- });
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -952,9 +948,6 @@ describe("z-index manipulation", () => {
{ id: "C", groupIds: ["g2"], isSelected: true },
{ id: "D", groupIds: ["g2"], isSelected: true },
]);
- h.setState({
- selectedGroupIds: { g1: true, g2: true },
- });
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -967,14 +960,16 @@ describe("z-index manipulation", () => {
"D_copy",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"], isSelected: true },
- { id: "B", groupIds: ["g1", "g2"], isSelected: true },
- { id: "C", groupIds: ["g2"], isSelected: true },
- ]);
- h.setState({
- selectedGroupIds: { g1: true },
- });
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "B", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "C", groupIds: ["g2"], isSelected: true },
+ ],
+ {
+ selectedGroupIds: { g1: true },
+ },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -985,14 +980,16 @@ describe("z-index manipulation", () => {
"C_copy",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"], isSelected: true },
- { id: "B", groupIds: ["g1", "g2"], isSelected: true },
- { id: "C", groupIds: ["g2"], isSelected: true },
- ]);
- h.setState({
- selectedGroupIds: { g2: true },
- });
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "B", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "C", groupIds: ["g2"], isSelected: true },
+ ],
+ {
+ selectedGroupIds: { g2: true },
+ },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -1003,17 +1000,19 @@ describe("z-index manipulation", () => {
"C_copy",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"], isSelected: true },
- { id: "B", groupIds: ["g1", "g2"], isSelected: true },
- { id: "C", groupIds: ["g2"], isSelected: true },
- { id: "D", groupIds: ["g3", "g4"], isSelected: true },
- { id: "E", groupIds: ["g3", "g4"], isSelected: true },
- { id: "F", groupIds: ["g4"], isSelected: true },
- ]);
- h.setState({
- selectedGroupIds: { g2: true, g4: true },
- });
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "B", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "C", groupIds: ["g2"], isSelected: true },
+ { id: "D", groupIds: ["g3", "g4"], isSelected: true },
+ { id: "E", groupIds: ["g3", "g4"], isSelected: true },
+ { id: "F", groupIds: ["g4"], isSelected: true },
+ ],
+ {
+ selectedGroupIds: { g2: true, g4: true },
+ },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -1030,11 +1029,14 @@ describe("z-index manipulation", () => {
"F_copy",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"], isSelected: true },
- { id: "B", groupIds: ["g1", "g2"] },
- { id: "C", groupIds: ["g2"] },
- ]);
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "B", groupIds: ["g1", "g2"] },
+ { id: "C", groupIds: ["g2"] },
+ ],
+ { editingGroupId: "g1" },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -1043,11 +1045,14 @@ describe("z-index manipulation", () => {
"C",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"] },
- { id: "B", groupIds: ["g1", "g2"], isSelected: true },
- { id: "C", groupIds: ["g2"] },
- ]);
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"] },
+ { id: "B", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "C", groupIds: ["g2"] },
+ ],
+ { editingGroupId: "g1" },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -1056,11 +1061,14 @@ describe("z-index manipulation", () => {
"C",
]);
- populateElements([
- { id: "A", groupIds: ["g1", "g2"], isSelected: true },
- { id: "B", groupIds: ["g1", "g2"], isSelected: true },
- { id: "C", groupIds: ["g2"], isSelected: true },
- ]);
+ populateElements(
+ [
+ { id: "A", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "B", groupIds: ["g1", "g2"], isSelected: true },
+ { id: "C", groupIds: ["g2"] },
+ ],
+ { editingGroupId: "g1" },
+ );
h.app.actionManager.executeAction(actionDuplicateSelection);
expect(h.elements.map((element) => element.id)).toEqual([
"A",
@@ -1068,7 +1076,42 @@ describe("z-index manipulation", () => {
"B",
"B_copy",
"C",
+ ]);
+ });
+
+ it("duplicating incorrectly interleaved elements (group elements should be together) should still produce reasonable result", () => {
+ populateElements([
+ { id: "A", groupIds: ["g1"], isSelected: true },
+ { id: "B" },
+ { id: "C", groupIds: ["g1"], isSelected: true },
+ ]);
+ h.app.actionManager.executeAction(actionDuplicateSelection);
+ expect(h.elements.map((element) => element.id)).toEqual([
+ "A",
+ "C",
+ "A_copy",
"C_copy",
+ "B",
+ ]);
+ });
+
+ it("group-selected duplication should includes deleted elements that weren't selected on account of being deleted", () => {
+ populateElements([
+ { id: "A", groupIds: ["g1"], isDeleted: true },
+ { id: "B", groupIds: ["g1"], isSelected: true },
+ { id: "C", groupIds: ["g1"], isSelected: true },
+ { id: "D" },
+ ]);
+ expect(h.state.selectedGroupIds).toEqual({ g1: true });
+ h.app.actionManager.executeAction(actionDuplicateSelection);
+ expect(h.elements.map((element) => element.id)).toEqual([
+ "A",
+ "B",
+ "C",
+ "A_copy",
+ "B_copy",
+ "C_copy",
+ "D",
]);
});
diff --git a/src/types.ts b/src/types.ts
index d87174a5a..052bf231e 100644
--- a/src/types.ts
+++ b/src/types.ts
@@ -1,3 +1,4 @@
+import React from "react";
import {
PointerType,
ExcalidrawLinearElement,
@@ -14,6 +15,8 @@ import {
ExcalidrawImageElement,
Theme,
StrokeRoundness,
+ ExcalidrawFrameElement,
+ ExcalidrawEmbeddableElement,
} from "./element/types";
import { SHAPES } from "./shapes";
import { Point as RoughPoint } from "roughjs/bin/geometry";
@@ -29,7 +32,9 @@ import { isOverScrollBars } from "./scene";
import { MaybeTransformHandleType } from "./element/transformHandles";
import Library from "./data/library";
import type { FileSystemHandle } from "./data/filesystem";
-import type { ALLOWED_IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
+import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants";
+import { ContextMenuItems } from "./components/ContextMenu";
+import { Merge, ForwardRef, ValueOf } from "./utility-types";
export type Point = Readonly;
@@ -57,7 +62,7 @@ export type DataURL = string & { _brand: "DataURL" };
export type BinaryFileData = {
mimeType:
- | typeof ALLOWED_IMAGE_MIME_TYPES[number]
+ | ValueOf
// future user or unknown file type
| typeof MIME_TYPES.binary;
id: FileId;
@@ -80,9 +85,14 @@ export type BinaryFileMetadata = Omit;
export type BinaryFiles = Record;
-export type LastActiveToolBeforeEraser =
+export type LastActiveTool =
| {
- type: typeof SHAPES[number]["value"] | "eraser";
+ type:
+ | typeof SHAPES[number]["value"]
+ | "eraser"
+ | "hand"
+ | "frame"
+ | "embeddable";
customType: null;
}
| {
@@ -91,10 +101,22 @@ export type LastActiveToolBeforeEraser =
}
| null;
+export type SidebarName = string;
+export type SidebarTabName = string;
+
export type AppState = {
+ contextMenu: {
+ items: ContextMenuItems;
+ top: number;
+ left: number;
+ } | null;
showWelcomeScreen: boolean;
isLoading: boolean;
- errorMessage: string | null;
+ errorMessage: React.ReactNode;
+ activeEmbeddable: {
+ element: NonDeletedExcalidrawElement;
+ state: "hover" | "active";
+ } | null;
draggingElement: NonDeletedExcalidrawElement | null;
resizingElement: NonDeletedExcalidrawElement | null;
multiElement: NonDeleted | null;
@@ -102,23 +124,41 @@ export type AppState = {
isBindingEnabled: boolean;
startBoundElement: NonDeleted | null;
suggestedBindings: SuggestedBinding[];
+ frameToHighlight: NonDeleted | null;
+ frameRendering: {
+ enabled: boolean;
+ name: boolean;
+ outline: boolean;
+ clip: boolean;
+ };
+ editingFrame: string | null;
+ elementsToHighlight: NonDeleted[] | null;
// element being edited, but not necessarily added to elements array yet
// (e.g. text element when typing into the input)
editingElement: NonDeletedExcalidrawElement | null;
editingLinearElement: LinearElementEditor | null;
- activeTool:
+ activeTool: {
+ /**
+ * indicates a previous tool we should revert back to if we deselect the
+ * currently active tool. At the moment applies to `eraser` and `hand` tool.
+ */
+ lastActiveTool: LastActiveTool;
+ locked: boolean;
+ } & (
| {
- type: typeof SHAPES[number]["value"] | "eraser";
- lastActiveToolBeforeEraser: LastActiveToolBeforeEraser;
- locked: boolean;
+ type:
+ | typeof SHAPES[number]["value"]
+ | "eraser"
+ | "hand"
+ | "frame"
+ | "embeddable";
customType: null;
}
| {
type: "custom";
customType: string;
- lastActiveToolBeforeEraser: LastActiveToolBeforeEraser;
- locked: boolean;
- };
+ }
+ );
penMode: boolean;
penDetected: boolean;
exportBackground: boolean;
@@ -148,18 +188,22 @@ export type AppState = {
isRotating: boolean;
zoom: Zoom;
openMenu: "canvas" | "shape" | null;
- openPopup:
- | "canvasColorPicker"
- | "backgroundColorPicker"
- | "strokeColorPicker"
- | null;
- openSidebar: "library" | "customSidebar" | null;
- openDialog: "imageExport" | "help" | null;
- isSidebarDocked: boolean;
+ openPopup: "canvasBackground" | "elementBackground" | "elementStroke" | null;
+ openSidebar: { name: SidebarName; tab?: SidebarTabName } | null;
+ openDialog: "imageExport" | "help" | "jsonExport" | null;
+ /**
+ * Reflects user preference for whether the default sidebar should be docked.
+ *
+ * NOTE this is only a user preference and does not reflect the actual docked
+ * state of the sidebar, because the host apps can override this through
+ * a DefaultSidebar prop, which is not reflected back to the appState.
+ */
+ defaultSidebarDockedPreference: boolean;
lastPointerDownWith: PointerType;
- selectedElementIds: { [id: string]: boolean };
- previousSelectedElementIds: { [id: string]: boolean };
+ selectedElementIds: Readonly<{ [id: string]: true }>;
+ previousSelectedElementIds: { [id: string]: true };
+ selectedElementsAreBeingDragged: boolean;
shouldCacheIgnoreZoom: boolean;
toast: { message: string; closable?: boolean; duration?: number } | null;
zenModeEnabled: boolean;
@@ -196,6 +240,15 @@ export type AppState = {
selectedLinearElement: LinearElementEditor | null;
};
+export type UIAppState = Omit<
+ AppState,
+ | "suggestedBindings"
+ | "startBoundElement"
+ | "cursorButton"
+ | "scrollX"
+ | "scrollY"
+>;
+
export type NormalizedZoomValue = number & { _brand: "normalizedZoom" };
export type Zoom = Readonly<{
@@ -280,7 +333,6 @@ export interface ExcalidrawProps {
| null
| Promise;
excalidrawRef?: ForwardRef;
- onCollabButtonClick?: () => void;
isCollaborating?: boolean;
onPointerUpdate?: (payload: {
pointer: { x: number; y: number };
@@ -293,9 +345,8 @@ export interface ExcalidrawProps {
) => Promise | boolean;
renderTopRightUI?: (
isMobile: boolean,
- appState: AppState,
+ appState: UIAppState,
) => JSX.Element | null;
- renderFooter?: (isMobile: boolean, appState: AppState) => JSX.Element | null;
langCode?: Language["code"];
viewModeEnabled?: boolean;
zenModeEnabled?: boolean;
@@ -305,12 +356,9 @@ export interface ExcalidrawProps {
name?: string;
renderCustomStats?: (
elements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
+ appState: UIAppState,
) => JSX.Element;
- UIOptions?: {
- dockedSidebarBreakpoint?: number;
- canvasActions?: CanvasActions;
- };
+ UIOptions?: Partial;
detectScroll?: boolean;
handleKeyboardGlobally?: boolean;
onLibraryChange?: (libraryItems: LibraryItems) => void | Promise;
@@ -327,10 +375,17 @@ export interface ExcalidrawProps {
pointerDownState: PointerDownState,
) => void;
onScrollChange?: (scrollX: number, scrollY: number) => void;
- /**
- * Render function that renders custom component.
- */
- renderSidebar?: () => JSX.Element | null;
+ children?: React.ReactNode;
+ validateEmbeddable?:
+ | boolean
+ | string[]
+ | RegExp
+ | RegExp[]
+ | ((link: string) => boolean | undefined);
+ renderEmbeddable?: (
+ element: NonDeleted,
+ appState: AppState,
+ ) => JSX.Element | null;
}
export type SceneData = {
@@ -350,13 +405,13 @@ export type ExportOpts = {
saveFileToDisk?: boolean;
onExportToBackend?: (
exportedElements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
+ appState: UIAppState,
files: BinaryFiles,
canvas: HTMLCanvasElement | null,
) => void;
renderCustomUI?: (
exportedElements: readonly NonDeletedExcalidrawElement[],
- appState: AppState,
+ appState: UIAppState,
files: BinaryFiles,
canvas: HTMLCanvasElement | null,
) => JSX.Element;
@@ -366,23 +421,32 @@ export type ExportOpts = {
// truthiness value will determine whether the action is rendered or not
// (see manager renderAction). We also override canvasAction values in
// excalidraw package index.tsx.
-type CanvasActions = {
- changeViewBackgroundColor?: boolean;
- clearCanvas?: boolean;
- export?: false | ExportOpts;
- loadScene?: boolean;
- saveToActiveFile?: boolean;
- toggleTheme?: boolean | null;
- saveAsImage?: boolean;
-};
+type CanvasActions = Partial<{
+ changeViewBackgroundColor: boolean;
+ clearCanvas: boolean;
+ export: false | ExportOpts;
+ loadScene: boolean;
+ saveToActiveFile: boolean;
+ toggleTheme: boolean | null;
+ saveAsImage: boolean;
+}>;
+
+type UIOptions = Partial<{
+ dockedSidebarBreakpoint: number;
+ canvasActions: CanvasActions;
+ /** @deprecated does nothing. Will be removed in 0.15 */
+ welcomeScreen?: boolean;
+}>;
export type AppProps = Merge<
ExcalidrawProps,
{
- UIOptions: {
- canvasActions: Required & { export: ExportOpts };
- dockedSidebarBreakpoint?: number;
- };
+ UIOptions: Merge<
+ UIOptions,
+ {
+ canvasActions: Required & { export: ExportOpts };
+ }
+ >;
detectScroll: boolean;
handleKeyboardGlobally: boolean;
isCollaborating: boolean;
@@ -401,12 +465,17 @@ export type AppClassProperties = {
FileId,
{
image: HTMLImageElement | Promise;
- mimeType: typeof ALLOWED_IMAGE_MIME_TYPES[number];
+ mimeType: ValueOf;
}
>;
files: BinaryFiles;
device: App["device"];
scene: App["scene"];
+ pasteFromClipboard: App["pasteFromClipboard"];
+ id: App["id"];
+ onInsertElements: App["onInsertElements"];
+ onExportImage: App["onExportImage"];
+ lastViewportPosition: App["lastViewportPosition"];
};
export type PointerDownState = Readonly<{
@@ -498,7 +567,13 @@ export type ExcalidrawImperativeAPI = {
setActiveTool: InstanceType["setActiveTool"];
setCursor: InstanceType["setCursor"];
resetCursor: InstanceType["resetCursor"];
- toggleMenu: InstanceType["toggleMenu"];
+ toggleSidebar: InstanceType["toggleSidebar"];
+ /**
+ * Disables rendering of frames (including element clipping), but currently
+ * the frames are still interactive in edit mode. As such, this API should be
+ * used in conjunction with view mode (props.viewModeEnabled).
+ */
+ updateFrameRendering: InstanceType["updateFrameRendering"];
};
export type Device = Readonly<{
@@ -506,4 +581,24 @@ export type Device = Readonly<{
isMobile: boolean;
isTouchScreen: boolean;
canDeviceFitSidebar: boolean;
+ isLandscape: boolean;
}>;
+
+type FrameNameBounds = {
+ x: number;
+ y: number;
+ width: number;
+ height: number;
+ angle: number;
+};
+
+export type FrameNameBoundsCache = {
+ get: (frameElement: ExcalidrawFrameElement) => FrameNameBounds | null;
+ _cache: Map<
+ string,
+ FrameNameBounds & {
+ zoom: AppState["zoom"]["value"];
+ versionNonce: ExcalidrawFrameElement["versionNonce"];
+ }
+ >;
+};
diff --git a/src/utility-types.ts b/src/utility-types.ts
new file mode 100644
index 000000000..860d818ef
--- /dev/null
+++ b/src/utility-types.ts
@@ -0,0 +1,56 @@
+export type Mutable = {
+ -readonly [P in keyof T]: T[P];
+};
+
+export type ValueOf = T[keyof T];
+
+export type Merge = Omit & N;
+
+/** utility type to assert that the second type is a subtype of the first type.
+ * Returns the subtype. */
+export type SubtypeOf = Subtype;
+
+export type ResolutionType any> = T extends (
+ ...args: any
+) => Promise
+ ? R
+ : any;
+
+// https://github.com/krzkaczor/ts-essentials
+export type MarkOptional = Omit &
+ Partial>;
+
+export type MarkRequired = Exclude &
+ Required>;
+
+export type MarkNonNullable = {
+ [P in K]-?: P extends K ? NonNullable : T[P];
+} & { [P in keyof T]: T[P] };
+
+export type NonOptional = Exclude;
+
+// -----------------------------------------------------------------------------
+// type getter for interface's callable type
+// src: https://stackoverflow.com/a/58658851/927631
+// -----------------------------------------------------------------------------
+export type SignatureType = T extends (...args: infer R) => any ? R : never;
+export type CallableType any> = (
+ ...args: SignatureType
+) => ReturnType;
+// --------------------------------------------------------------------------—
+
+// Type for React.forwardRef --- supply only the first generic argument T
+export type ForwardRef = Parameters<
+ CallableType>
+>[1];
+
+export type ExtractSetType> = T extends Set
+ ? U
+ : never;
+
+export type SameType = T extends U ? (U extends T ? true : false) : false;
+export type Assert = T;
+
+export type NestedKeyOf = K extends keyof T & (string | number)
+ ? `${K}` | (T[K] extends object ? `${K}.${NestedKeyOf}` : never)
+ : never;
diff --git a/src/utils.ts b/src/utils.ts
index aef6a7d57..e14413eaf 100644
--- a/src/utils.ts
+++ b/src/utils.ts
@@ -1,20 +1,25 @@
import oc from "open-color";
-
-import colors from "./colors";
+import { COLOR_PALETTE } from "./colors";
import {
CURSOR_TYPE,
DEFAULT_VERSION,
EVENT,
FONT_FAMILY,
+ isDarwin,
MIME_TYPES,
THEME,
WINDOWS_EMOJI_FALLBACK_FONT,
} from "./constants";
-import { FontFamilyValues, FontString } from "./element/types";
-import { AppState, DataURL, LastActiveToolBeforeEraser, Zoom } from "./types";
+import {
+ FontFamilyValues,
+ FontString,
+ NonDeletedExcalidrawElement,
+} from "./element/types";
+import { AppState, DataURL, LastActiveTool, Zoom } from "./types";
import { unstable_batchedUpdates } from "react-dom";
-import { isDarwin } from "./keys";
import { SHAPES } from "./shapes";
+import { isEraserActive, isHandToolActive } from "./appState";
+import { ResolutionType } from "./utility-types";
let mockDateTime: string | null = null;
@@ -59,6 +64,13 @@ export const isInputLike = (
target instanceof HTMLTextAreaElement ||
target instanceof HTMLSelectElement;
+export const isInteractive = (target: Element | EventTarget | null) => {
+ return (
+ isInputLike(target) ||
+ (target instanceof Element && !!target.closest("label, button"))
+ );
+};
+
export const isWritableElement = (
target: Element | EventTarget | null,
): target is
@@ -148,7 +160,7 @@ export const throttleRAF = (
};
const ret = (...args: T) => {
- if (process.env.NODE_ENV === "test") {
+ if (import.meta.env.MODE === "test") {
fn(...args);
return;
}
@@ -179,6 +191,145 @@ export const throttleRAF = (
return ret;
};
+/**
+ * Exponential ease-out method
+ *
+ * @param {number} k - The value to be tweened.
+ * @returns {number} The tweened value.
+ */
+export const easeOut = (k: number) => {
+ return 1 - Math.pow(1 - k, 4);
+};
+
+const easeOutInterpolate = (from: number, to: number, progress: number) => {
+ return (to - from) * easeOut(progress) + from;
+};
+
+/**
+ * Animates values from `fromValues` to `toValues` using the requestAnimationFrame API.
+ * Executes the `onStep` callback on each step with the interpolated values.
+ * Returns a function that can be called to cancel the animation.
+ *
+ * @example
+ * // Example usage:
+ * const fromValues = { x: 0, y: 0 };
+ * const toValues = { x: 100, y: 200 };
+ * const onStep = ({x, y}) => {
+ * setState(x, y)
+ * };
+ * const onCancel = () => {
+ * console.log("Animation canceled");
+ * };
+ *
+ * const cancelAnimation = easeToValuesRAF({
+ * fromValues,
+ * toValues,
+ * onStep,
+ * onCancel,
+ * });
+ *
+ * // To cancel the animation:
+ * cancelAnimation();
+ */
+export const easeToValuesRAF = <
+ T extends Record,
+ K extends keyof T,
+>({
+ fromValues,
+ toValues,
+ onStep,
+ duration = 250,
+ interpolateValue,
+ onStart,
+ onEnd,
+ onCancel,
+}: {
+ fromValues: T;
+ toValues: T;
+ /**
+ * Interpolate a single value.
+ * Return undefined to be handled by the default interpolator.
+ */
+ interpolateValue?: (
+ fromValue: number,
+ toValue: number,
+ /** no easing applied */
+ progress: number,
+ key: K,
+ ) => number | undefined;
+ onStep: (values: T) => void;
+ duration?: number;
+ onStart?: () => void;
+ onEnd?: () => void;
+ onCancel?: () => void;
+}) => {
+ let canceled = false;
+ let frameId = 0;
+ let startTime: number;
+
+ function step(timestamp: number) {
+ if (canceled) {
+ return;
+ }
+ if (startTime === undefined) {
+ startTime = timestamp;
+ onStart?.();
+ }
+
+ const elapsed = Math.min(timestamp - startTime, duration);
+ const factor = easeOut(elapsed / duration);
+
+ const newValues = {} as T;
+
+ Object.keys(fromValues).forEach((key) => {
+ const _key = key as keyof T;
+ const result = ((toValues[_key] - fromValues[_key]) * factor +
+ fromValues[_key]) as T[keyof T];
+ newValues[_key] = result;
+ });
+
+ onStep(newValues);
+
+ if (elapsed < duration) {
+ const progress = elapsed / duration;
+
+ const newValues = {} as T;
+
+ Object.keys(fromValues).forEach((key) => {
+ const _key = key as K;
+ const startValue = fromValues[_key];
+ const endValue = toValues[_key];
+
+ let result;
+
+ result = interpolateValue
+ ? interpolateValue(startValue, endValue, progress, _key)
+ : easeOutInterpolate(startValue, endValue, progress);
+
+ if (result == null) {
+ result = easeOutInterpolate(startValue, endValue, progress);
+ }
+
+ newValues[_key] = result as T[K];
+ });
+ onStep(newValues);
+
+ frameId = window.requestAnimationFrame(step);
+ } else {
+ onStep(toValues);
+ onEnd?.();
+ }
+ }
+
+ frameId = window.requestAnimationFrame(step);
+
+ return () => {
+ onCancel?.();
+ canceled = true;
+ window.cancelAnimationFrame(frameId);
+ };
+};
+
// https://github.com/lodash/lodash/blob/es/chunk.js
export const chunk = (
array: readonly T[],
@@ -218,9 +369,16 @@ export const distance = (x: number, y: number) => Math.abs(x - y);
export const updateActiveTool = (
appState: Pick,
data: (
- | { type: typeof SHAPES[number]["value"] | "eraser" }
+ | {
+ type:
+ | typeof SHAPES[number]["value"]
+ | "eraser"
+ | "hand"
+ | "frame"
+ | "embeddable";
+ }
| { type: "custom"; customType: string }
- ) & { lastActiveToolBeforeEraser?: LastActiveToolBeforeEraser },
+ ) & { lastActiveToolBeforeEraser?: LastActiveTool },
): AppState["activeTool"] => {
if (data.type === "custom") {
return {
@@ -232,9 +390,9 @@ export const updateActiveTool = (
return {
...appState.activeTool,
- lastActiveToolBeforeEraser:
+ lastActiveTool:
data.lastActiveToolBeforeEraser === undefined
- ? appState.activeTool.lastActiveToolBeforeEraser
+ ? appState.activeTool.lastActiveTool
: data.lastActiveToolBeforeEraser,
type: data.type,
customType: null,
@@ -297,14 +455,16 @@ export const setEraserCursor = (
export const setCursorForShape = (
canvas: HTMLCanvasElement | null,
- appState: AppState,
+ appState: Pick,
) => {
if (!canvas) {
return;
}
if (appState.activeTool.type === "selection") {
resetCursor(canvas);
- } else if (appState.activeTool.type === "eraser") {
+ } else if (isHandToolActive(appState)) {
+ canvas.style.cursor = CURSOR_TYPE.GRAB;
+ } else if (isEraserActive(appState)) {
setEraserCursor(canvas, appState.theme);
// do nothing if image tool is selected which suggests there's
// a image-preview set as the cursor
@@ -351,9 +511,8 @@ export const viewportCoordsToSceneCoords = (
scrollY: number;
},
) => {
- const invScale = 1 / zoom.value;
- const x = (clientX - offsetLeft) * invScale - scrollX;
- const y = (clientY - offsetTop) * invScale - scrollY;
+ const x = (clientX - offsetLeft) / zoom.value - scrollX;
+ const y = (clientY - offsetTop) / zoom.value - scrollY;
return { x, y };
};
@@ -453,7 +612,7 @@ export const isTransparent = (color: string) => {
return (
isRGBTransparent ||
isRRGGBBTransparent ||
- color === colors.elementBackground[0]
+ color === COLOR_PALETTE.transparent
);
};
@@ -605,11 +764,15 @@ export const arrayToMap = (
}, new Map());
};
-export const isTestEnv = () =>
- typeof process !== "undefined" && process.env?.NODE_ENV === "test";
+export const arrayToMapWithIndex = (
+ elements: readonly T[],
+) =>
+ elements.reduce((acc, element: T, idx) => {
+ acc.set(element.id, [element, idx]);
+ return acc;
+ }, new Map());
-export const isProdEnv = () =>
- typeof process !== "undefined" && process.env?.NODE_ENV === "production";
+export const isTestEnv = () => import.meta.env.MODE === "test";
export const wrapEvent = (name: EVENT, nativeEvent: T) => {
return new CustomEvent(name, {
@@ -662,6 +825,8 @@ export const getFrame = () => {
}
};
+export const isRunningInIframe = () => getFrame() === "iframe";
+
export const isPromiseLike = (
value: any,
): value is Promise> => {
@@ -686,3 +851,66 @@ export const queryFocusableElements = (container: HTMLElement | null) => {
)
: [];
};
+
+export const isShallowEqual = <
+ T extends Record,
+ I extends keyof T,
+>(
+ objA: T,
+ objB: T,
+ comparators?: Record boolean>,
+ debug = false,
+) => {
+ const aKeys = Object.keys(objA);
+ const bKeys = Object.keys(objB);
+ if (aKeys.length !== bKeys.length) {
+ return false;
+ }
+ return aKeys.every((key) => {
+ const comparator = comparators?.[key as I];
+ const ret = comparator
+ ? comparator(objA[key], objB[key])
+ : objA[key] === objB[key];
+ if (!ret && debug) {
+ console.info(
+ `%cisShallowEqual: ${key} not equal ->`,
+ "color: #8B4000",
+ objA[key],
+ objB[key],
+ );
+ }
+ return ret;
+ });
+};
+
+// taken from Radix UI
+// https://github.com/radix-ui/primitives/blob/main/packages/core/primitive/src/primitive.tsx
+export const composeEventHandlers = (
+ originalEventHandler?: (event: E) => void,
+ ourEventHandler?: (event: E) => void,
+ { checkForDefaultPrevented = true } = {},
+) => {
+ return function handleEvent(event: E) {
+ originalEventHandler?.(event);
+
+ if (
+ !checkForDefaultPrevented ||
+ !(event as unknown as Event).defaultPrevented
+ ) {
+ return ourEventHandler?.(event);
+ }
+ };
+};
+
+export const isOnlyExportingSingleFrame = (
+ elements: readonly NonDeletedExcalidrawElement[],
+) => {
+ const frames = elements.filter((element) => element.type === "frame");
+
+ return (
+ frames.length === 1 &&
+ elements.every(
+ (element) => element.type === "frame" || element.frameId === frames[0].id,
+ )
+ );
+};
diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts
new file mode 100644
index 000000000..8843ecc39
--- /dev/null
+++ b/src/vite-env.d.ts
@@ -0,0 +1,59 @@
+///
+///
+///
+///
+
+interface ImportMetaEnv {
+ // The port to run the dev server
+ VITE_APP_PORT: string;
+
+ VITE_APP_BACKEND_V2_GET_URL: string;
+ VITE_APP_BACKEND_V2_POST_URL: string;
+
+ VITE_APP_LIBRARY_URL: string;
+ VITE_APP_LIBRARY_BACKEND: string;
+
+ // collaboration WebSocket server (https: string
+ VITE_APP_WS_SERVER_URL: string;
+
+ // set this only if using the collaboration workflow we use on excalidraw.com
+ VITE_APP_PORTAL_URL: string;
+
+ VITE_APP_FIREBASE_CONFIG: string;
+
+ // whether to enable Service Workers in development
+ VITE_APP_DEV_ENABLE_SW: string;
+ // whether to disable live reload / HMR. Usuaully what you want to do when
+ // debugging Service Workers.
+ VITE_APP_DEV_DISABLE_LIVE_RELOAD: string;
+
+ FAST_REFRESH: string;
+
+ // MATOMO
+ VITE_APP_MATOMO_URL: string;
+ VITE_APP_CDN_MATOMO_TRACKER_URL: string;
+ VITE_APP_MATOMO_SITE_ID: string;
+
+ //Debug flags
+
+ // To enable bounding box for text containers
+ VITE_APP_DEBUG_ENABLE_TEXT_CONTAINER_BOUNDING_BOX: string;
+ VITE_APP_DISABLE_SENTRY: string;
+ // Set this flag to false if you want to open the overlay by default
+ VITE_APP_COLLAPSE_OVERLAY: string;
+ // Enable eslint in dev server
+ VITE_APP_ENABLE_ESLINT: string;
+
+ VITE_PKG_NAME: string;
+ VITE_PKG_VERSION: string;
+ VITE_IS_EXCALIDRAW_NPM_PACKAGE: string;
+
+ VITE_WORKER_ID: string;
+ MODE: string;
+ DEV: string;
+ PROD: string;
+}
+
+interface ImportMeta {
+ readonly env: ImportMetaEnv;
+}
diff --git a/src/zindex.ts b/src/zindex.ts
index 4b96c8eb4..a1f051c54 100644
--- a/src/zindex.ts
+++ b/src/zindex.ts
@@ -1,36 +1,52 @@
import { bumpVersion } from "./element/mutateElement";
+import { isFrameElement } from "./element/typeChecks";
import { ExcalidrawElement } from "./element/types";
+import { groupByFrames } from "./frame";
import { getElementsInGroup } from "./groups";
import { getSelectedElements } from "./scene";
import Scene from "./scene/Scene";
import { AppState } from "./types";
import { arrayToMap, findIndex, findLastIndex } from "./utils";
+// elements that do not belong to a frame are considered a root element
+const isRootElement = (element: ExcalidrawElement) => {
+ return !element.frameId;
+};
+
/**
* Returns indices of elements to move based on selected elements.
* Includes contiguous deleted elements that are between two selected elements,
* e.g.: [0 (selected), 1 (deleted), 2 (deleted), 3 (selected)]
+ *
+ * Specified elements (elementsToBeMoved) take precedence over
+ * appState.selectedElementsIds
*/
const getIndicesToMove = (
elements: readonly ExcalidrawElement[],
appState: AppState,
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
let selectedIndices: number[] = [];
let deletedIndices: number[] = [];
let includeDeletedIndex = null;
let index = -1;
const selectedElementIds = arrayToMap(
- getSelectedElements(elements, appState, true),
+ elementsToBeMoved
+ ? elementsToBeMoved
+ : getSelectedElements(elements, appState, {
+ includeBoundTextElement: true,
+ }),
);
while (++index < elements.length) {
- if (selectedElementIds.get(elements[index].id)) {
+ const element = elements[index];
+ if (selectedElementIds.get(element.id)) {
if (deletedIndices.length) {
selectedIndices = selectedIndices.concat(deletedIndices);
deletedIndices = [];
}
selectedIndices.push(index);
includeDeletedIndex = index + 1;
- } else if (elements[index].isDeleted && includeDeletedIndex === index) {
+ } else if (element.isDeleted && includeDeletedIndex === index) {
includeDeletedIndex = index + 1;
deletedIndices.push(index);
} else {
@@ -168,8 +184,8 @@ const getTargetIndex = (
return candidateIndex;
};
-const getTargetElementsMap = (
- elements: readonly ExcalidrawElement[],
+const getTargetElementsMap = (
+ elements: readonly T[],
indices: number[],
) => {
return indices.reduce((acc, index) => {
@@ -179,12 +195,13 @@ const getTargetElementsMap = (
}, {} as Record);
};
-const shiftElements = (
- appState: AppState,
+const _shiftElements = (
elements: readonly ExcalidrawElement[],
+ appState: AppState,
direction: "left" | "right",
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
- const indicesToMove = getIndicesToMove(elements, appState);
+ const indicesToMove = getIndicesToMove(elements, appState, elementsToBeMoved);
const targetElementsMap = getTargetElementsMap(elements, indicesToMove);
let groupedIndices = toContiguousGroups(indicesToMove);
@@ -246,7 +263,22 @@ const shiftElements = (
});
};
-const shiftElementsToEnd = (
+const shiftElements = (
+ appState: AppState,
+ elements: readonly ExcalidrawElement[],
+ direction: "left" | "right",
+ elementsToBeMoved?: readonly ExcalidrawElement[],
+) => {
+ return shift(
+ elements,
+ appState,
+ direction,
+ _shiftElements,
+ elementsToBeMoved,
+ );
+};
+
+const _shiftElementsToEnd = (
elements: readonly ExcalidrawElement[],
appState: AppState,
direction: "left" | "right",
@@ -317,33 +349,121 @@ const shiftElementsToEnd = (
];
};
+const shiftElementsToEnd = (
+ elements: readonly ExcalidrawElement[],
+ appState: AppState,
+ direction: "left" | "right",
+ elementsToBeMoved?: readonly ExcalidrawElement[],
+) => {
+ return shift(
+ elements,
+ appState,
+ direction,
+ _shiftElementsToEnd,
+ elementsToBeMoved,
+ );
+};
+
+function shift(
+ elements: readonly ExcalidrawElement[],
+ appState: AppState,
+ direction: "left" | "right",
+ shiftFunction: (
+ elements: ExcalidrawElement[],
+ appState: AppState,
+ direction: "left" | "right",
+ elementsToBeMoved?: readonly ExcalidrawElement[],
+ ) => ExcalidrawElement[] | readonly ExcalidrawElement[],
+ elementsToBeMoved?: readonly ExcalidrawElement[],
+) {
+ const elementsMap = arrayToMap(elements);
+ const frameElementsMap = groupByFrames(elements);
+
+ // in case root is non-existent, we promote children elements to root
+ let rootElements = elements.filter(
+ (element) =>
+ isRootElement(element) ||
+ (element.frameId && !elementsMap.has(element.frameId)),
+ );
+ // and remove non-existet root
+ for (const frameId of frameElementsMap.keys()) {
+ if (!elementsMap.has(frameId)) {
+ frameElementsMap.delete(frameId);
+ }
+ }
+
+ // shift the root elements first
+ rootElements = shiftFunction(
+ rootElements,
+ appState,
+ direction,
+ elementsToBeMoved,
+ ) as ExcalidrawElement[];
+
+ // shift the elements in frames if needed
+ frameElementsMap.forEach((frameElements, frameId) => {
+ if (!appState.selectedElementIds[frameId]) {
+ frameElementsMap.set(
+ frameId,
+ shiftFunction(
+ frameElements,
+ appState,
+ direction,
+ elementsToBeMoved,
+ ) as ExcalidrawElement[],
+ );
+ }
+ });
+
+ // return the final elements
+ let finalElements: ExcalidrawElement[] = [];
+
+ rootElements.forEach((element) => {
+ if (isFrameElement(element)) {
+ finalElements = [
+ ...finalElements,
+ ...(frameElementsMap.get(element.id) ?? []),
+ element,
+ ];
+ } else {
+ finalElements = [...finalElements, element];
+ }
+ });
+
+ return finalElements;
+}
+
// public API
// -----------------------------------------------------------------------------
export const moveOneLeft = (
elements: readonly ExcalidrawElement[],
appState: AppState,
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
- return shiftElements(appState, elements, "left");
+ return shiftElements(appState, elements, "left", elementsToBeMoved);
};
export const moveOneRight = (
elements: readonly ExcalidrawElement[],
appState: AppState,
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
- return shiftElements(appState, elements, "right");
+ return shiftElements(appState, elements, "right", elementsToBeMoved);
};
export const moveAllLeft = (
elements: readonly ExcalidrawElement[],
appState: AppState,
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
- return shiftElementsToEnd(elements, appState, "left");
+ return shiftElementsToEnd(elements, appState, "left", elementsToBeMoved);
};
export const moveAllRight = (
elements: readonly ExcalidrawElement[],
appState: AppState,
+ elementsToBeMoved?: readonly ExcalidrawElement[],
) => {
- return shiftElementsToEnd(elements, appState, "right");
+ return shiftElementsToEnd(elements, appState, "right", elementsToBeMoved);
};
diff --git a/tsconfig-types.json b/tsconfig-types.json
index 148459807..9fb129cf2 100644
--- a/tsconfig-types.json
+++ b/tsconfig-types.json
@@ -1,6 +1,7 @@
{
"include": ["src/packages/excalidraw", "src/global.d.ts", "src/css.d.ts"],
"compilerOptions": {
+ "types": ["vite/client", "vite-plugin-svgr/client"],
"allowJs": true,
"declaration": true,
"emitDeclarationOnly": true,
@@ -8,7 +9,7 @@
"jsx": "react-jsx",
"target": "es6",
"lib": ["dom", "dom.iterable", "esnext"],
- "module": "esnext",
+ "module": "ESNext",
"moduleResolution": "node",
"resolveJsonModule": true,
"skipLibCheck": true,
diff --git a/tsconfig.json b/tsconfig.json
index c8b09c92c..d75d3656a 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -1,6 +1,6 @@
{
"compilerOptions": {
- "target": "es6",
+ "target": "ESNext",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
@@ -8,9 +8,9 @@
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
- "module": "esnext",
- "moduleResolution": "node",
"noFallthroughCasesInSwitch": true,
+ "module": "ESNext",
+ "moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
diff --git a/vite.config.ts b/vite.config.ts
new file mode 100644
index 000000000..fe3c2c231
--- /dev/null
+++ b/vite.config.ts
@@ -0,0 +1,181 @@
+import { defineConfig, loadEnv } from "vite";
+import react from "@vitejs/plugin-react";
+import svgrPlugin from "vite-plugin-svgr";
+import { ViteEjsPlugin } from "vite-plugin-ejs";
+import { VitePWA } from "vite-plugin-pwa";
+import checker from "vite-plugin-checker";
+
+// To load .env.local variables
+const envVars = loadEnv("", process.cwd());
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ server: {
+ port: Number(envVars.VITE_APP_PORT || 3000),
+ // open the browser
+ open: true,
+ },
+ build: {
+ outDir: "build",
+ rollupOptions: {
+ output: {
+ // Creating separate chunk for locales except for en and percentages.json so they
+ // can be cached at runtime and not merged with
+ // app precache. en.json and percentages.json are needed for first load
+ // or fallback hence not clubbing with locales so first load followed by offline mode works fine. This is how CRA used to work too.
+ manualChunks(id) {
+ if (
+ id.includes("src/locales") &&
+ id.match(/en.json|percentages.json/) === null
+ ) {
+ const index = id.indexOf("locales/");
+ // Taking the substring after "locales/"
+ return `locales/${id.substring(index + 8)}`;
+ }
+ },
+ },
+ },
+ sourcemap: true,
+ },
+ plugins: [
+ react(),
+ checker({
+ typescript: true,
+ eslint:
+ envVars.VITE_APP_ENABLE_ESLINT === "false"
+ ? undefined
+ : { lintCommand: 'eslint "./src/**/*.{js,ts,tsx}"' },
+ overlay: {
+ initialIsOpen: envVars.VITE_APP_COLLAPSE_OVERLAY === "false",
+ badgeStyle: "margin-bottom: 4rem; margin-left: 1rem",
+ },
+ }),
+ svgrPlugin(),
+ ViteEjsPlugin(),
+ VitePWA({
+ devOptions: {
+ /* set this flag to true to enable in Development mode */
+ enabled: false,
+ },
+
+ workbox: {
+ // Don't push fonts and locales to app precache
+ globIgnores: ["fonts.css", "**/locales/**"],
+ runtimeCaching: [
+ {
+ urlPattern: new RegExp("/.+.(ttf|woff2|otf)"),
+ handler: "CacheFirst",
+ options: {
+ cacheName: "fonts",
+ expiration: {
+ maxEntries: 50,
+ maxAgeSeconds: 60 * 60 * 24 * 90, // <== 90 days
+ },
+ },
+ },
+ {
+ urlPattern: new RegExp("fonts.css"),
+ handler: "StaleWhileRevalidate",
+ options: {
+ cacheName: "fonts",
+ expiration: {
+ maxEntries: 50,
+ },
+ },
+ },
+ {
+ urlPattern: new RegExp("locales/[^/]+.js"),
+ handler: "CacheFirst",
+ options: {
+ cacheName: "locales",
+ expiration: {
+ maxEntries: 50,
+ maxAgeSeconds: 60 * 60 * 24 * 30, // <== 30 days
+ },
+ },
+ },
+ ],
+ },
+ manifest: {
+ short_name: "Excalidraw",
+ name: "Excalidraw",
+ description:
+ "Excalidraw is a whiteboard tool that lets you easily sketch diagrams that have a hand-drawn feel to them.",
+ icons: [
+ {
+ src: "logo-180x180.png",
+ sizes: "180x180",
+ type: "image/png",
+ },
+ {
+ src: "apple-touch-icon.png",
+ type: "image/png",
+ sizes: "256x256",
+ },
+ ],
+ start_url: "/",
+ display: "standalone",
+ theme_color: "#121212",
+ background_color: "#ffffff",
+ file_handlers: [
+ {
+ action: "/",
+ accept: {
+ "application/vnd.excalidraw+json": [".excalidraw"],
+ },
+ },
+ ],
+ share_target: {
+ action: "/web-share-target",
+ method: "POST",
+ enctype: "multipart/form-data",
+ params: {
+ files: [
+ {
+ name: "file",
+ accept: [
+ "application/vnd.excalidraw+json",
+ "application/json",
+ ".excalidraw",
+ ],
+ },
+ ],
+ },
+ },
+ screenshots: [
+ {
+ src: "/screenshots/virtual-whiteboard.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ {
+ src: "/screenshots/wireframe.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ {
+ src: "/screenshots/illustration.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ {
+ src: "/screenshots/shapes.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ {
+ src: "/screenshots/collaboration.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ {
+ src: "/screenshots/export.png",
+ type: "image/png",
+ sizes: "462x945",
+ },
+ ],
+ },
+ }),
+ ],
+ publicDir: "./public",
+});
diff --git a/vitest.config.ts b/vitest.config.ts
new file mode 100644
index 000000000..e7d08704d
--- /dev/null
+++ b/vitest.config.ts
@@ -0,0 +1,9 @@
+import { defineConfig } from "vitest/config";
+
+export default defineConfig({
+ test: {
+ setupFiles: ["./src/setupTests.ts"],
+ globals: true,
+ environment: "jsdom",
+ },
+});
diff --git a/yarn.lock b/yarn.lock
index ccb509009..b43a51893 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2,12 +2,12 @@
# yarn lockfile v1
-"@ampproject/remapping@^2.1.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d"
- integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==
+"@ampproject/remapping@^2.2.0":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630"
+ integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==
dependencies:
- "@jridgewell/gen-mapping" "^0.1.0"
+ "@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@apideck/better-ajv-errors@^0.3.1":
@@ -26,90 +26,99 @@
dependencies:
"@babel/highlight" "^7.10.4"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.8.3":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
- integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.21.4.tgz#d0fa9e4413aca81f2b23b9442797bda1826edb39"
+ integrity sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==
dependencies:
"@babel/highlight" "^7.18.6"
-"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.19.4", "@babel/compat-data@^7.20.0":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.0.tgz#9b61938c5f688212c7b9ae363a819df7d29d4093"
- integrity sha512-Gt9jszFJYq7qzXVK4slhc6NzJXnOVmRECWcVjF/T23rNXD9NtWQ0W3qxdg+p9wWIB+VQw3GYV/U2Ha9bRTfs4w==
-
-"@babel/compat-data@^7.20.1":
- version "7.20.1"
- resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.20.1.tgz#f2e6ef7790d8c8dbf03d379502dcc246dcce0b30"
- integrity sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==
-
-"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.16.0":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.19.6.tgz#7122ae4f5c5a37c0946c066149abd8e75f81540f"
- integrity sha512-D2Ue4KHpc6Ys2+AxpIx1BZ8+UegLLLE2p3KJEuJRKmokHOtl49jQ5ny1773KsGLZs8MQvBidAF6yWUJxRqtKtg==
+"@babel/code-frame@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.22.5.tgz#234d98e1551960604f1246e6475891a570ad5658"
+ integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==
dependencies:
- "@ampproject/remapping" "^2.1.0"
- "@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.19.6"
- "@babel/helper-compilation-targets" "^7.19.3"
- "@babel/helper-module-transforms" "^7.19.6"
- "@babel/helpers" "^7.19.4"
- "@babel/parser" "^7.19.6"
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.19.6"
- "@babel/types" "^7.19.4"
+ "@babel/highlight" "^7.22.5"
+
+"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.21.4.tgz#457ffe647c480dff59c2be092fc3acf71195c87f"
+ integrity sha512-/DYyDpeCfaVinT40FPGdkkb+lYSKvsVuMjDAG7jPOWWiM1ibOaB9CXJAlc4d1QpP/U2q2P9jbrSlClKSErd55g==
+
+"@babel/compat-data@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.22.5.tgz#b1f6c86a02d85d2dd3368a2b67c09add8cd0c255"
+ integrity sha512-4Jc/YuIaYqKnDDz892kPIledykKg12Aw1PYX5i/TY28anJtacvM1Rrr8wbieB9GfEJwlzqT0hUEao0CxEebiDA==
+
+"@babel/core@^7.11.1", "@babel/core@^7.16.0":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.21.4.tgz#c6dc73242507b8e2a27fd13a9c1814f9fa34a659"
+ integrity sha512-qt/YV149Jman/6AfmlxJ04LMIu8bMoyl3RB91yTFrxQmgbrSvQMy7cI8Q62FHx1t8wJ8B5fu0UDoLwHAhUo1QA==
+ dependencies:
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.21.4"
+ "@babel/generator" "^7.21.4"
+ "@babel/helper-compilation-targets" "^7.21.4"
+ "@babel/helper-module-transforms" "^7.21.2"
+ "@babel/helpers" "^7.21.0"
+ "@babel/parser" "^7.21.4"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.4"
+ "@babel/types" "^7.21.4"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
- json5 "^2.2.1"
+ json5 "^2.2.2"
semver "^6.3.0"
-"@babel/core@^7.11.1", "@babel/core@^7.7.2", "@babel/core@^7.8.0":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.20.2.tgz#8dc9b1620a673f92d3624bd926dc49a52cf25b92"
- integrity sha512-w7DbG8DtMrJcFOi4VrLm+8QM4az8Mo+PuLBKLp2zrYRCow8W/f9xiXm5sN53C8HksCyDQwCKha9JiDoIyPjT2g==
+"@babel/core@^7.19.6", "@babel/core@^7.20.12":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.22.5.tgz#d67d9747ecf26ee7ecd3ebae1ee22225fe902a89"
+ integrity sha512-SBuTAjg91A3eKOvD+bPEz3LlhHZRNu1nFOVts9lzDJTXshHTjII0BAtDS3Y2DAkdZdDKWVZGVwkDfc4Clxn1dg==
dependencies:
- "@ampproject/remapping" "^2.1.0"
- "@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.20.2"
- "@babel/helper-compilation-targets" "^7.20.0"
- "@babel/helper-module-transforms" "^7.20.2"
- "@babel/helpers" "^7.20.1"
- "@babel/parser" "^7.20.2"
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.20.1"
- "@babel/types" "^7.20.2"
+ "@ampproject/remapping" "^2.2.0"
+ "@babel/code-frame" "^7.22.5"
+ "@babel/generator" "^7.22.5"
+ "@babel/helper-compilation-targets" "^7.22.5"
+ "@babel/helper-module-transforms" "^7.22.5"
+ "@babel/helpers" "^7.22.5"
+ "@babel/parser" "^7.22.5"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.5"
+ "@babel/types" "^7.22.5"
convert-source-map "^1.7.0"
debug "^4.1.0"
gensync "^1.0.0-beta.2"
- json5 "^2.2.1"
+ json5 "^2.2.2"
semver "^6.3.0"
"@babel/eslint-parser@^7.16.3":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4"
- integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.21.3.tgz#d79e822050f2de65d7f368a076846e7184234af7"
+ integrity sha512-kfhmPimwo6k4P8zxNs8+T7yR44q1LdpsZdE1NkCsVlfiuTPRfnGgjaF8Qgug9q9Pou17u6wneYF0lDCZJATMFg==
dependencies:
"@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
eslint-visitor-keys "^2.1.0"
semver "^6.3.0"
-"@babel/generator@^7.19.6", "@babel/generator@^7.20.0":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.0.tgz#0bfc5379e0efb05ca6092091261fcdf7ec36249d"
- integrity sha512-GUPcXxWibClgmYJuIwC2Bc2Lg+8b9VjaJ+HlNdACEVt+Wlr1eoU1OPZjZRm7Hzl0gaTsUZNQfeihvZJhG7oc3w==
+"@babel/generator@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.21.4.tgz#64a94b7448989f421f919d5239ef553b37bb26bc"
+ integrity sha512-NieM3pVIYW2SwGzKoqfPrQsf4xGs9M9AIG3ThppsSRmO+m7eQhmI6amajKMUeIO37wFfsvnvcxQFx6x6iqxDnA==
dependencies:
- "@babel/types" "^7.20.0"
+ "@babel/types" "^7.21.4"
"@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
-"@babel/generator@^7.20.1", "@babel/generator@^7.20.2", "@babel/generator@^7.7.2":
- version "7.20.4"
- resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.20.4.tgz#4d9f8f0c30be75fd90a0562099a26e5839602ab8"
- integrity sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==
+"@babel/generator@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.22.5.tgz#1e7bf768688acfb05cf30b2369ef855e82d984f7"
+ integrity sha512-+lcUbnTRhd0jOewtFSedLyiPsD5tswKkbgcezOqqWFUVNEwoUTlpPOBmvhG7OXWLR4jMdv0czPGH5XbflnD1EA==
dependencies:
- "@babel/types" "^7.20.2"
+ "@babel/types" "^7.22.5"
"@jridgewell/gen-mapping" "^0.3.2"
+ "@jridgewell/trace-mapping" "^0.3.17"
jsesc "^2.5.1"
"@babel/helper-annotate-as-pure@^7.18.6":
@@ -127,36 +136,49 @@
"@babel/helper-explode-assignable-expression" "^7.18.6"
"@babel/types" "^7.18.9"
-"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.19.0", "@babel/helper-compilation-targets@^7.19.3", "@babel/helper-compilation-targets@^7.20.0":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz#6bf5374d424e1b3922822f1d9bdaa43b1a139d0a"
- integrity sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==
+"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.4.tgz#770cd1ce0889097ceacb99418ee6934ef0572656"
+ integrity sha512-Fa0tTuOXZ1iL8IeDFUWCzjZcn+sJGd9RZdH9esYVjEejGmzf+FFYQpMi/kZUk2kPy/q1H3/GPw7np8qar/stfg==
dependencies:
- "@babel/compat-data" "^7.20.0"
- "@babel/helper-validator-option" "^7.18.6"
+ "@babel/compat-data" "^7.21.4"
+ "@babel/helper-validator-option" "^7.21.0"
browserslist "^4.21.3"
+ lru-cache "^5.1.1"
semver "^6.3.0"
-"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.19.0.tgz#bfd6904620df4e46470bae4850d66be1054c404b"
- integrity sha512-NRz8DwF4jT3UfrmUoZjd0Uph9HQnP30t7Ash+weACcyNkiYTywpIjDBgReJMKgr+n86sn2nPVVmJ28Dm053Kqw==
+"@babel/helper-compilation-targets@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.5.tgz#fc7319fc54c5e2fa14b2909cf3c5fd3046813e02"
+ integrity sha512-Ji+ywpHeuqxB8WDxraCiqR0xfhYjiDE/e6k7FuIaANnoOFxAHskHChz4vA1mJC9Lbm01s1PVAGhQY4FUKSkGZw==
+ dependencies:
+ "@babel/compat-data" "^7.22.5"
+ "@babel/helper-validator-option" "^7.22.5"
+ browserslist "^4.21.3"
+ lru-cache "^5.1.1"
+ semver "^6.3.0"
+
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.21.4.tgz#3a017163dc3c2ba7deb9a7950849a9586ea24c18"
+ integrity sha512-46QrX2CQlaFRF4TkwfTt6nJD7IHq8539cCL7SDpqWSDeJKY1xylKKY5F/33mJhLZ3mFvKv2gGrVS6NkyF6qs+Q==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
"@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
- "@babel/helper-member-expression-to-functions" "^7.18.9"
+ "@babel/helper-function-name" "^7.21.0"
+ "@babel/helper-member-expression-to-functions" "^7.21.0"
"@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/helper-replace-supers" "^7.18.9"
+ "@babel/helper-replace-supers" "^7.20.7"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
"@babel/helper-split-export-declaration" "^7.18.6"
-"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz#7976aca61c0984202baca73d84e2337a5424a41b"
- integrity sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==
+"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.20.5":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.21.4.tgz#40411a8ab134258ad2cf3a3d987ec6aa0723cee5"
+ integrity sha512-M00OuhU+0GyZ5iBBN9czjugzWrEq2vDpf/zCYHxxf93ul/Q5rv+a5h+/+0WnI1AebHNVtl5bFV0qsJoH23DbfA==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- regexpu-core "^5.1.0"
+ regexpu-core "^5.3.1"
"@babel/helper-define-polyfill-provider@^0.3.3":
version "0.3.3"
@@ -175,6 +197,11 @@
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be"
integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==
+"@babel/helper-environment-visitor@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz#f06dd41b7c1f44e1f8da6c4055b41ab3a09a7e98"
+ integrity sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==
+
"@babel/helper-explode-assignable-expression@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096"
@@ -182,13 +209,21 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz#941574ed5390682e872e52d3f38ce9d1bef4648c"
- integrity sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==
+"@babel/helper-function-name@^7.18.9", "@babel/helper-function-name@^7.19.0", "@babel/helper-function-name@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz#d552829b10ea9f120969304023cd0645fa00b1b4"
+ integrity sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==
dependencies:
- "@babel/template" "^7.18.10"
- "@babel/types" "^7.19.0"
+ "@babel/template" "^7.20.7"
+ "@babel/types" "^7.21.0"
+
+"@babel/helper-function-name@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz#ede300828905bb15e582c037162f99d5183af1be"
+ integrity sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==
+ dependencies:
+ "@babel/template" "^7.22.5"
+ "@babel/types" "^7.22.5"
"@babel/helper-hoist-variables@^7.18.6":
version "7.18.6"
@@ -197,47 +232,61 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-member-expression-to-functions@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815"
- integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==
+"@babel/helper-hoist-variables@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb"
+ integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==
dependencies:
- "@babel/types" "^7.18.9"
+ "@babel/types" "^7.22.5"
-"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e"
- integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==
+"@babel/helper-member-expression-to-functions@^7.20.7", "@babel/helper-member-expression-to-functions@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.21.0.tgz#319c6a940431a133897148515877d2f3269c3ba5"
+ integrity sha512-Muu8cdZwNN6mRRNG6lAYErJ5X3bRevgYR2O8wN0yn7jJSnGDu6eG59RfT29JHxGUovyfrh6Pj0XzmR7drNVL3Q==
dependencies:
- "@babel/types" "^7.18.6"
+ "@babel/types" "^7.21.0"
-"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.19.6":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.19.6.tgz#6c52cc3ac63b70952d33ee987cbee1c9368b533f"
- integrity sha512-fCmcfQo/KYr/VXXDIyd3CBGZ6AFhPFy1TfSEJ+PilGVlQT6jcbqtHAM4C1EciRqMza7/TpOUZliuSH+U6HAhJw==
+"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz#ac88b2f76093637489e718a90cec6cf8a9b029af"
+ integrity sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==
dependencies:
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-simple-access" "^7.19.4"
- "@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/helper-validator-identifier" "^7.19.1"
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.19.6"
- "@babel/types" "^7.19.4"
+ "@babel/types" "^7.21.4"
-"@babel/helper-module-transforms@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz#ac53da669501edd37e658602a21ba14c08748712"
- integrity sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==
+"@babel/helper-module-imports@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz#1a8f4c9f4027d23f520bd76b364d44434a72660c"
+ integrity sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.20.11", "@babel/helper-module-transforms@^7.21.2":
+ version "7.21.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz#160caafa4978ac8c00ac66636cb0fa37b024e2d2"
+ integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==
dependencies:
"@babel/helper-environment-visitor" "^7.18.9"
"@babel/helper-module-imports" "^7.18.6"
"@babel/helper-simple-access" "^7.20.2"
"@babel/helper-split-export-declaration" "^7.18.6"
"@babel/helper-validator-identifier" "^7.19.1"
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.20.1"
- "@babel/types" "^7.20.2"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.2"
+ "@babel/types" "^7.21.2"
+
+"@babel/helper-module-transforms@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.22.5.tgz#0f65daa0716961b6e96b164034e737f60a80d2ef"
+ integrity sha512-+hGKDt/Ze8GFExiVHno/2dvG5IdstpzCq0y4Qc9OJ25D4q3pKfiIP/4Vp3/JvhDkLKsDK2api3q3fpIgiIF5bw==
+ dependencies:
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-module-imports" "^7.22.5"
+ "@babel/helper-simple-access" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.5"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.5"
+ "@babel/types" "^7.22.5"
"@babel/helper-optimise-call-expression@^7.18.6":
version "7.18.6"
@@ -246,17 +295,17 @@
dependencies:
"@babel/types" "^7.18.6"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.19.0.tgz#4796bb14961521f0f8715990bee2fb6e51ce21bf"
- integrity sha512-40Ryx7I8mT+0gaNxm8JGTZFUITNqdLAgdg0hXzeVZxVD6nFsdhQvip6v8dqkRHzsz1VFpFAaOCHNn0vKBL7Czw==
-
-"@babel/helper-plugin-utils@^7.20.2":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.19.0", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.20.2"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz#d1b9000752b18d0877cff85a5c376ce5c3121629"
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
-"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9":
+"@babel/helper-plugin-utils@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295"
+ integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==
+
+"@babel/helper-remap-async-to-generator@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519"
integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==
@@ -266,23 +315,17 @@
"@babel/helper-wrap-function" "^7.18.9"
"@babel/types" "^7.18.9"
-"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9", "@babel/helper-replace-supers@^7.19.1":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz#e1592a9b4b368aa6bdb8784a711e0bcbf0612b78"
- integrity sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==
+"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz#243ecd2724d2071532b2c8ad2f0f9f083bcae331"
+ integrity sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==
dependencies:
"@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-member-expression-to-functions" "^7.18.9"
+ "@babel/helper-member-expression-to-functions" "^7.20.7"
"@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/traverse" "^7.19.1"
- "@babel/types" "^7.19.0"
-
-"@babel/helper-simple-access@^7.19.4":
- version "7.19.4"
- resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.19.4.tgz#be553f4951ac6352df2567f7daa19a0ee15668e7"
- integrity sha512-f9Xq6WqBFqaDfbCzn2w85hwklswz5qsKlh7f08w4Y9yhJHpnNC0QemtSkK5YyOY8kPGvyiwdzZksGUhnGdaUIg==
- dependencies:
- "@babel/types" "^7.19.4"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.20.7"
+ "@babel/types" "^7.20.7"
"@babel/helper-simple-access@^7.20.2":
version "7.20.2"
@@ -291,7 +334,14 @@
dependencies:
"@babel/types" "^7.20.2"
-"@babel/helper-skip-transparent-expression-wrappers@^7.18.9":
+"@babel/helper-simple-access@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de"
+ integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
+"@babel/helper-skip-transparent-expression-wrappers@^7.20.0":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz#fbe4c52f60518cab8140d77101f0e63a8a230684"
integrity sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==
@@ -305,48 +355,70 @@
dependencies:
"@babel/types" "^7.18.6"
+"@babel/helper-split-export-declaration@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.5.tgz#88cf11050edb95ed08d596f7a044462189127a08"
+ integrity sha512-thqK5QFghPKWLhAV321lxF95yCg2K3Ob5yw+M3VHWfdia0IkPXUtoLH8x/6Fh486QUvzhb8YOWHChTVen2/PoQ==
+ dependencies:
+ "@babel/types" "^7.22.5"
+
"@babel/helper-string-parser@^7.19.4":
version "7.19.4"
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63"
integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==
+"@babel/helper-string-parser@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f"
+ integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==
+
"@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1":
version "7.19.1"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2"
integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==
-"@babel/helper-validator-option@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8"
- integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==
+"@babel/helper-validator-identifier@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz#9544ef6a33999343c8740fa51350f30eeaaaf193"
+ integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
+
+"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz#8224c7e13ace4bafdc4004da2cf064ef42673180"
+ integrity sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==
+
+"@babel/helper-validator-option@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz#de52000a15a177413c8234fa3a8af4ee8102d0ac"
+ integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==
"@babel/helper-wrap-function@^7.18.9":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz#89f18335cff1152373222f76a4b37799636ae8b1"
- integrity sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz#75e2d84d499a0ab3b31c33bcfe59d6b8a45f62e3"
+ integrity sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==
dependencies:
"@babel/helper-function-name" "^7.19.0"
"@babel/template" "^7.18.10"
- "@babel/traverse" "^7.19.0"
- "@babel/types" "^7.19.0"
+ "@babel/traverse" "^7.20.5"
+ "@babel/types" "^7.20.5"
-"@babel/helpers@^7.19.4":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.0.tgz#27c8ffa8cc32a2ed3762fba48886e7654dbcf77f"
- integrity sha512-aGMjYraN0zosCEthoGLdqot1oRsmxVTQRHadsUPz5QM44Zej2PYRz7XiDE7GqnkZnNtLbOuxqoZw42vkU7+XEQ==
+"@babel/helpers@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.21.0.tgz#9dd184fb5599862037917cdc9eecb84577dc4e7e"
+ integrity sha512-XXve0CBtOW0pd7MRzzmoyuSj0e3SEzj8pgyFxnTT1NJZL38BD1MK7yYrm8yefRPIDvNNe14xR4FdbHwpInD4rA==
dependencies:
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.20.0"
- "@babel/types" "^7.20.0"
+ "@babel/template" "^7.20.7"
+ "@babel/traverse" "^7.21.0"
+ "@babel/types" "^7.21.0"
-"@babel/helpers@^7.20.1":
- version "7.20.1"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.20.1.tgz#2ab7a0fcb0a03b5bf76629196ed63c2d7311f4c9"
- integrity sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==
+"@babel/helpers@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.22.5.tgz#74bb4373eb390d1ceed74a15ef97767e63120820"
+ integrity sha512-pSXRmfE1vzcUIDFQcSGA5Mr+GxBV9oiRKDuDxXvWQQBCh8HoIjs/2DlDB7H8smac1IVrB9/xdXj2N3Wol9Cr+Q==
dependencies:
- "@babel/template" "^7.18.10"
- "@babel/traverse" "^7.20.1"
- "@babel/types" "^7.20.0"
+ "@babel/template" "^7.22.5"
+ "@babel/traverse" "^7.22.5"
+ "@babel/types" "^7.22.5"
"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6":
version "7.18.6"
@@ -357,15 +429,24 @@
chalk "^2.0.0"
js-tokens "^4.0.0"
-"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.19.6", "@babel/parser@^7.20.0":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.0.tgz#b26133c888da4d79b0d3edcf42677bcadc783046"
- integrity sha512-G9VgAhEaICnz8iiJeGJQyVl6J2nTjbW0xeisva0PK6XcKsga7BIaqm4ZF8Rg1Wbaqmy6znspNqhPaPkyukujzg==
+"@babel/highlight@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.22.5.tgz#aa6c05c5407a67ebce408162b7ede789b4d22031"
+ integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.22.5"
+ chalk "^2.0.0"
+ js-tokens "^4.0.0"
-"@babel/parser@^7.20.1", "@babel/parser@^7.20.2":
- version "7.20.3"
- resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.3.tgz#5358cf62e380cf69efcb87a7bb922ff88bfac6e2"
- integrity sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==
+"@babel/parser@^7.20.7", "@babel/parser@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.21.4.tgz#94003fdfc520bbe2875d4ae557b43ddb6d880f17"
+ integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
+
+"@babel/parser@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.22.5.tgz#721fd042f3ce1896238cf1b341c77eb7dee7dbea"
+ integrity sha512-DFZMC9LJUG9PLOclRC32G63UXwzqS2koQC8dkx+PLdmt1xSePYpbT/NbsrJy8Q/muXz7o/h/d4A7Fuyixm559Q==
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6":
version "7.18.6"
@@ -374,32 +455,22 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50"
- integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==
+"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz#d9c85589258539a22a901033853101a6198d4ef1"
+ integrity sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
- "@babel/plugin-proposal-optional-chaining" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.20.7"
-"@babel/plugin-proposal-async-generator-functions@^7.19.1":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.19.1.tgz#34f6f5174b688529342288cd264f80c9ea9fb4a7"
- integrity sha512-0yu8vNATgLy4ivqMNBIwb1HebCelqN7YX8SL3FDXORv/RqT0zEEWUCH4GH44JsSrvCu6GqnAdR5EBFAPeNBB4Q==
+"@babel/plugin-proposal-async-generator-functions@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326"
+ integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==
dependencies:
"@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-remap-async-to-generator" "^7.18.9"
- "@babel/plugin-syntax-async-generators" "^7.8.4"
-
-"@babel/plugin-proposal-async-generator-functions@^7.20.1":
- version "7.20.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.1.tgz#352f02baa5d69f4e7529bdac39aaa02d41146af9"
- integrity sha512-Gh5rchzSwE4kC+o/6T8waD0WHEQIsDmjltY8WnWRXHUdH8axZhuH86Ov9M72YhJfDrZseQwuuWaaIT/TmePp3g==
- dependencies:
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-remap-async-to-generator" "^7.18.9"
"@babel/plugin-syntax-async-generators" "^7.8.4"
@@ -411,25 +482,25 @@
"@babel/helper-create-class-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-proposal-class-static-block@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020"
- integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==
+"@babel/plugin-proposal-class-static-block@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d"
+ integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-class-static-block" "^7.14.5"
"@babel/plugin-proposal-decorators@^7.16.4":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.20.0.tgz#3acef1f1206d7a6a1436aa6ccf9ed7b1bd06aff7"
- integrity sha512-vnuRRS20ygSxclEYikHzVrP9nZDFXaSzvJxGLQNAiBX041TmhS4hOUHWNIpq/q4muENuEP9XPJFXTNFejhemkg==
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.21.0.tgz#70e0c89fdcd7465c97593edb8f628ba6e4199d63"
+ integrity sha512-MfgX49uRrFUTL/HvWtmx3zmpyzMMr4MTj3d527MLlr/4RTT9G/ytFFP7qet2uM2Ve03b+BkpWUpK+lRXnQ+v9w==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.19.0"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-replace-supers" "^7.19.1"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-replace-supers" "^7.20.7"
"@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/plugin-syntax-decorators" "^7.19.0"
+ "@babel/plugin-syntax-decorators" "^7.21.0"
"@babel/plugin-proposal-dynamic-import@^7.18.6":
version "7.18.6"
@@ -455,12 +526,12 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-json-strings" "^7.8.3"
-"@babel/plugin-proposal-logical-assignment-operators@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23"
- integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==
+"@babel/plugin-proposal-logical-assignment-operators@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83"
+ integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6":
@@ -479,27 +550,16 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-numeric-separator" "^7.10.4"
-"@babel/plugin-proposal-object-rest-spread@^7.19.4":
- version "7.19.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.19.4.tgz#a8fc86e8180ff57290c91a75d83fe658189b642d"
- integrity sha512-wHmj6LDxVDnL+3WhXteUBaoM1aVILZODAUjg11kHqG4cOlfgMQGxw6aCgvrXrmaJR3Bn14oZhImyCPZzRpC93Q==
+"@babel/plugin-proposal-object-rest-spread@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a"
+ integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==
dependencies:
- "@babel/compat-data" "^7.19.4"
- "@babel/helper-compilation-targets" "^7.19.3"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-transform-parameters" "^7.18.8"
-
-"@babel/plugin-proposal-object-rest-spread@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz#a556f59d555f06961df1e572bb5eca864c84022d"
- integrity sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==
- dependencies:
- "@babel/compat-data" "^7.20.1"
- "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/compat-data" "^7.20.5"
+ "@babel/helper-compilation-targets" "^7.20.7"
"@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-transform-parameters" "^7.20.1"
+ "@babel/plugin-transform-parameters" "^7.20.7"
"@babel/plugin-proposal-optional-catch-binding@^7.18.6":
version "7.18.6"
@@ -509,13 +569,13 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
-"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993"
- integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==
+"@babel/plugin-proposal-optional-chaining@^7.16.0", "@babel/plugin-proposal-optional-chaining@^7.20.7", "@babel/plugin-proposal-optional-chaining@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea"
+ integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-proposal-private-methods@^7.16.0", "@babel/plugin-proposal-private-methods@^7.18.6":
@@ -526,14 +586,14 @@
"@babel/helper-create-class-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-proposal-private-property-in-object@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503"
- integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==
+"@babel/plugin-proposal-private-property-in-object@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0.tgz#19496bd9883dd83c23c7d7fc45dcd9ad02dfa1dc"
+ integrity sha512-ha4zfehbJjc5MmXBlHec1igel5TJXXLDDRbuJ4+XT2TJcyD9/V1919BA8gMvsdHcNMBy4WBUBiRb3nw/EQUtBw==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-create-class-features-plugin" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4":
@@ -551,14 +611,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-bigint@^7.8.3":
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea"
- integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.8.0"
-
-"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3":
+"@babel/plugin-syntax-class-properties@^7.12.13":
version "7.12.13"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10"
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
@@ -572,12 +625,12 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-decorators@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.19.0.tgz#5f13d1d8fce96951bea01a10424463c9a5b3a599"
- integrity sha512-xaBZUEDntt4faL1yN8oIFlhfXeQAWJW7CLKYsHTUqriCUbj8xOra8bfxxKGi/UwExPFBuPdH4XfHc9rGQhrVkQ==
+"@babel/plugin-syntax-decorators@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.21.0.tgz#d2b3f31c3e86fa86e16bb540b7660c55bd7d0e78"
+ integrity sha512-tIoPpGBR8UuM4++ccWN3gifhVvQu7ZizuR1fklhRJrd5ewgbkUS+0KVFeWWxELtn18NTLoW32XV7zyOgIAiz+w==
dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
@@ -594,26 +647,19 @@
"@babel/helper-plugin-utils" "^7.8.3"
"@babel/plugin-syntax-flow@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.18.6.tgz#774d825256f2379d06139be0c723c4dd444f3ca1"
- integrity sha512-LUbR+KNTBWCUAqRG9ex5Gnzu2IOkt8jRJbHHXFT9q+L9zm7M/QQbEqXyw1n1pohYvOyWC8CjeyjrSaIwiYjK7A==
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz#3e37fca4f06d93567c1cd9b75156422e90a67107"
+ integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-syntax-import-assertions@^7.18.6", "@babel/plugin-syntax-import-assertions@^7.20.0":
+"@babel/plugin-syntax-import-assertions@^7.20.0":
version "7.20.0"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz#bb50e0d4bea0957235390641209394e87bdb9cc4"
integrity sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==
dependencies:
"@babel/helper-plugin-utils" "^7.19.0"
-"@babel/plugin-syntax-import-meta@^7.8.3":
- version "7.10.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51"
- integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
- dependencies:
- "@babel/helper-plugin-utils" "^7.10.4"
-
"@babel/plugin-syntax-json-strings@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a"
@@ -621,14 +667,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-jsx@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz#a8feef63b010150abd97f1649ec296e849943ca0"
- integrity sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==
+"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz#f264ed7bf40ffc9ec239edabc17a50c4f5b6fea2"
+ integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
+"@babel/plugin-syntax-logical-assignment-operators@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699"
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
@@ -642,7 +688,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.0"
-"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3":
+"@babel/plugin-syntax-numeric-separator@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97"
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
@@ -677,35 +723,35 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3":
+"@babel/plugin-syntax-top-level-await@^7.14.5":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c"
integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
-"@babel/plugin-syntax-typescript@^7.20.0", "@babel/plugin-syntax-typescript@^7.7.2":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz#4e9a0cfc769c85689b77a2e642d24e9f697fc8c7"
- integrity sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==
+"@babel/plugin-syntax-typescript@^7.20.0":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz#2751948e9b7c6d771a8efa59340c15d4a2891ff8"
+ integrity sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==
dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-arrow-functions@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe"
- integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==
+"@babel/plugin-transform-arrow-functions@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz#bea332b0e8b2dab3dafe55a163d8227531ab0551"
+ integrity sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-async-to-generator@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615"
- integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==
+"@babel/plugin-transform-async-to-generator@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz#dfee18623c8cb31deb796aa3ca84dda9cea94354"
+ integrity sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==
dependencies:
"@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-remap-async-to-generator" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-remap-async-to-generator" "^7.18.9"
"@babel/plugin-transform-block-scoped-functions@^7.18.6":
version "7.18.6"
@@ -714,68 +760,40 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-block-scoping@^7.19.4":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.0.tgz#91fe5e6ffc9ba13cb6c95ed7f0b1204f68c988c5"
- integrity sha512-sXOohbpHZSk7GjxK9b3dKB7CfqUD5DwOH+DggKzOQ7TXYP+RCSbRykfjQmn/zq+rBjycVRtLf9pYhAaEJA786w==
- dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
-
-"@babel/plugin-transform-block-scoping@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz#f59b1767e6385c663fd0bce655db6ca9c8b236ed"
- integrity sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==
+"@babel/plugin-transform-block-scoping@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.21.0.tgz#e737b91037e5186ee16b76e7ae093358a5634f02"
+ integrity sha512-Mdrbunoh9SxwFZapeHVrwFmri16+oYotcZysSzhNIVDwIAb1UV+kvnxULSYq9J3/q5MDG+4X6w8QVgD1zhBXNQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-classes@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.19.0.tgz#0e61ec257fba409c41372175e7c1e606dc79bb20"
- integrity sha512-YfeEE9kCjqTS9IitkgfJuxjcEtLUHMqa8yUJ6zdz8vR7hKuo6mOy2C05P0F1tdMmDCeuyidKnlrw/iTppHcr2A==
+"@babel/plugin-transform-classes@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.21.0.tgz#f469d0b07a4c5a7dbb21afad9e27e57b47031665"
+ integrity sha512-RZhbYTCEUAe6ntPehC4hlslPWosNHDox+vAs4On/mCLRLfoDVHf6hVEd7kuxr1RnHwJmxFfUM3cZiZRmPxJPXQ==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.19.0"
+ "@babel/helper-compilation-targets" "^7.20.7"
"@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
- "@babel/helper-optimise-call-expression" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-replace-supers" "^7.18.9"
- "@babel/helper-split-export-declaration" "^7.18.6"
- globals "^11.1.0"
-
-"@babel/plugin-transform-classes@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz#c0033cf1916ccf78202d04be4281d161f6709bb2"
- integrity sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==
- dependencies:
- "@babel/helper-annotate-as-pure" "^7.18.6"
- "@babel/helper-compilation-targets" "^7.20.0"
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
+ "@babel/helper-function-name" "^7.21.0"
"@babel/helper-optimise-call-expression" "^7.18.6"
"@babel/helper-plugin-utils" "^7.20.2"
- "@babel/helper-replace-supers" "^7.19.1"
+ "@babel/helper-replace-supers" "^7.20.7"
"@babel/helper-split-export-declaration" "^7.18.6"
globals "^11.1.0"
-"@babel/plugin-transform-computed-properties@^7.18.9":
- version "7.18.9"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e"
- integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==
+"@babel/plugin-transform-computed-properties@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz#704cc2fd155d1c996551db8276d55b9d46e4d0aa"
+ integrity sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/template" "^7.20.7"
-"@babel/plugin-transform-destructuring@^7.19.4":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.0.tgz#712829ef4825d9cc04bb379de316f981e9a6f648"
- integrity sha512-1dIhvZfkDVx/zn2S1aFwlruspTt4189j7fEkH0Y0VyuDM6bQt7bD6kLcz3l4IlLG+e5OReaBz9ROAbttRtUHqA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
-
-"@babel/plugin-transform-destructuring@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz#c23741cfa44ddd35f5e53896e88c75331b8b2792"
- integrity sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==
+"@babel/plugin-transform-destructuring@^7.21.3":
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.21.3.tgz#73b46d0fd11cd6ef57dea8a381b1215f4959d401"
+ integrity sha512-bp6hwMFzuiE4HqYEyoGJ/V2LeIWn+hLVKc4pnj++E5XQptwhtcGmSayM029d/j2X1bPKGTlsyPwAubuU22KhMA==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
@@ -803,19 +821,19 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-transform-flow-strip-types@^7.16.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.19.0.tgz#e9e8606633287488216028719638cbbb2f2dde8f"
- integrity sha512-sgeMlNaQVbCSpgLSKP4ZZKfsJVnFnNQlUSk6gPYzR/q7tzCgQF2t8RBKAP6cKJeZdveei7Q7Jm527xepI8lNLg==
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz#6aeca0adcb81dc627c8986e770bfaa4d9812aff5"
+ integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==
dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-flow" "^7.18.6"
-"@babel/plugin-transform-for-of@^7.18.8":
- version "7.18.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1"
- integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==
+"@babel/plugin-transform-for-of@^7.21.0":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.21.0.tgz#964108c9988de1a60b4be2354a7d7e245f36e86e"
+ integrity sha512-LlUYlydgDkKpIY7mcBWvyPPmMcOphEyYA27Ef4xpbh1IiDNLr0kZsos2nf92vz3IccvJI25QUwp86Eo5s6HmBQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-transform-function-name@^7.18.9":
version "7.18.9"
@@ -840,31 +858,31 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-modules-amd@^7.18.6", "@babel/plugin-transform-modules-amd@^7.19.6":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz#aca391801ae55d19c4d8d2ebfeaa33df5f2a2cbd"
- integrity sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==
+"@babel/plugin-transform-modules-amd@^7.20.11":
+ version "7.20.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz#3daccca8e4cc309f03c3a0c4b41dc4b26f55214a"
+ integrity sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==
dependencies:
- "@babel/helper-module-transforms" "^7.19.6"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-module-transforms" "^7.20.11"
+ "@babel/helper-plugin-utils" "^7.20.2"
-"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@^7.19.6":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz#25b32feef24df8038fc1ec56038917eacb0b730c"
- integrity sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==
+"@babel/plugin-transform-modules-commonjs@^7.21.2":
+ version "7.21.2"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz#6ff5070e71e3192ef2b7e39820a06fb78e3058e7"
+ integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==
dependencies:
- "@babel/helper-module-transforms" "^7.19.6"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-simple-access" "^7.19.4"
+ "@babel/helper-module-transforms" "^7.21.2"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-simple-access" "^7.20.2"
-"@babel/plugin-transform-modules-systemjs@^7.19.0", "@babel/plugin-transform-modules-systemjs@^7.19.6":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz#59e2a84064b5736a4471b1aa7b13d4431d327e0d"
- integrity sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==
+"@babel/plugin-transform-modules-systemjs@^7.20.11":
+ version "7.20.11"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz#467ec6bba6b6a50634eea61c9c232654d8a4696e"
+ integrity sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==
dependencies:
"@babel/helper-hoist-variables" "^7.18.6"
- "@babel/helper-module-transforms" "^7.19.6"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-module-transforms" "^7.20.11"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/helper-validator-identifier" "^7.19.1"
"@babel/plugin-transform-modules-umd@^7.18.6":
@@ -875,13 +893,13 @@
"@babel/helper-module-transforms" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-named-capturing-groups-regex@^7.19.1":
- version "7.19.1"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz#ec7455bab6cd8fb05c525a94876f435a48128888"
- integrity sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==
+"@babel/plugin-transform-named-capturing-groups-regex@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz#626298dd62ea51d452c3be58b285d23195ba69a8"
+ integrity sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==
dependencies:
- "@babel/helper-create-regexp-features-plugin" "^7.19.0"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-create-regexp-features-plugin" "^7.20.5"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-transform-new-target@^7.18.6":
version "7.18.6"
@@ -898,17 +916,10 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/helper-replace-supers" "^7.18.6"
-"@babel/plugin-transform-parameters@^7.18.8":
- version "7.18.8"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a"
- integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==
- dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
-
-"@babel/plugin-transform-parameters@^7.20.1":
- version "7.20.3"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz#7b3468d70c3c5b62e46be0a47b6045d8590fb748"
- integrity sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==
+"@babel/plugin-transform-parameters@^7.20.7", "@babel/plugin-transform-parameters@^7.21.3":
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.21.3.tgz#18fc4e797cf6d6d972cb8c411dbe8a809fa157db"
+ integrity sha512-Wxc+TvppQG9xWFYatvCGPvZ6+SIUxQ2ZdiBP+PHYMIjnPXD+uThCshaz4NZOnODAtBjjcVQQ/3OKs9LW28purQ==
dependencies:
"@babel/helper-plugin-utils" "^7.20.2"
@@ -919,13 +930,6 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-react-constant-elements@^7.12.1":
- version "7.18.12"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.18.12.tgz#edf3bec47eb98f14e84fa0af137fcc6aad8e0443"
- integrity sha512-Q99U9/ttiu+LMnRU8psd23HhvwXmKWDQIpocm0JKaICcZHnw+mdQbHm6xnSy7dOl8I5PELakYtNBubNQlBXbZw==
- dependencies:
- "@babel/helper-plugin-utils" "^7.18.9"
-
"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz#8b1125f919ef36ebdfff061d664e266c666b9415"
@@ -940,16 +944,30 @@
dependencies:
"@babel/plugin-transform-react-jsx" "^7.18.6"
+"@babel/plugin-transform-react-jsx-self@^7.18.6":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz#ca2fdc11bc20d4d46de01137318b13d04e481d8e"
+ integrity sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
+"@babel/plugin-transform-react-jsx-source@^7.19.6":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz#49af1615bfdf6ed9d3e9e43e425e0b2b65d15b6c"
+ integrity sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.22.5"
+
"@babel/plugin-transform-react-jsx@^7.18.6":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.19.0.tgz#b3cbb7c3a00b92ec8ae1027910e331ba5c500eb9"
- integrity sha512-UVEvX3tXie3Szm3emi1+G63jyw1w5IcMY0FSKM+CRnKRI5Mr1YbCNgsSTwoTwKphQEG9P+QqmuRFneJPZuHNhg==
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.21.0.tgz#656b42c2fdea0a6d8762075d58ef9d4e3c4ab8a2"
+ integrity sha512-6OAWljMvQrZjR2DaNhVfRz6dkCAVV+ymcLUmaf8bccGOHn2v5rHJK3tTpij0BuhdYWP4LLaqj5lwcdlpAAPuvg==
dependencies:
"@babel/helper-annotate-as-pure" "^7.18.6"
"@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-jsx" "^7.18.6"
- "@babel/types" "^7.19.0"
+ "@babel/types" "^7.21.0"
"@babel/plugin-transform-react-pure-annotations@^7.18.6":
version "7.18.6"
@@ -959,13 +977,13 @@
"@babel/helper-annotate-as-pure" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-regenerator@^7.18.6":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73"
- integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==
+"@babel/plugin-transform-regenerator@^7.20.5":
+ version "7.20.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz#57cda588c7ffb7f4f8483cc83bdcea02a907f04d"
+ integrity sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
- regenerator-transform "^0.15.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ regenerator-transform "^0.15.1"
"@babel/plugin-transform-reserved-words@^7.18.6":
version "7.18.6"
@@ -975,12 +993,12 @@
"@babel/helper-plugin-utils" "^7.18.6"
"@babel/plugin-transform-runtime@^7.16.4":
- version "7.19.6"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.19.6.tgz#9d2a9dbf4e12644d6f46e5e75bfbf02b5d6e9194"
- integrity sha512-PRH37lz4JU156lYFW1p8OxE5i7d6Sl/zV58ooyr+q1J1lnQPyg5tIiXlIwNVhJaY4W3TmOtdc8jqdXQcB1v5Yw==
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.21.4.tgz#2e1da21ca597a7d01fc96b699b21d8d2023191aa"
+ integrity sha512-1J4dhrw1h1PqnNNpzwxQ2UBymJUF8KuPjAAnlLwZcGhHAIqUigFW7cdK6GHoB64ubY4qXQNYknoUeks4Wz7CUA==
dependencies:
- "@babel/helper-module-imports" "^7.18.6"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-module-imports" "^7.21.4"
+ "@babel/helper-plugin-utils" "^7.20.2"
babel-plugin-polyfill-corejs2 "^0.3.3"
babel-plugin-polyfill-corejs3 "^0.6.0"
babel-plugin-polyfill-regenerator "^0.4.1"
@@ -993,13 +1011,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/plugin-transform-spread@^7.19.0":
- version "7.19.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz#dd60b4620c2fec806d60cfaae364ec2188d593b6"
- integrity sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==
+"@babel/plugin-transform-spread@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz#c2d83e0b99d3bf83e07b11995ee24bf7ca09401e"
+ integrity sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==
dependencies:
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
"@babel/plugin-transform-sticky-regex@^7.18.6":
version "7.18.6"
@@ -1022,13 +1040,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.18.9"
-"@babel/plugin-transform-typescript@^7.18.6":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.20.0.tgz#2c7ec62b8bfc21482f3748789ba294a46a375169"
- integrity sha512-xOAsAFaun3t9hCwZ13Qe7gq423UgMZ6zAgmLxeGGapFqlT/X3L5qT2btjiVLlFn7gWtMaVyceS5VxGAuKbgizw==
+"@babel/plugin-transform-typescript@^7.21.3":
+ version "7.21.3"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.21.3.tgz#316c5be579856ea890a57ebc5116c5d064658f2b"
+ integrity sha512-RQxPz6Iqt8T0uw/WsJNReuBpWpBqs/n7mNo18sKLoTbMp+UrEekhH+pKSVC7gWz+DNjo9gryfV8YzCiT45RgMw==
dependencies:
- "@babel/helper-create-class-features-plugin" "^7.19.0"
- "@babel/helper-plugin-utils" "^7.19.0"
+ "@babel/helper-annotate-as-pure" "^7.18.6"
+ "@babel/helper-create-class-features-plugin" "^7.21.0"
+ "@babel/helper-plugin-utils" "^7.20.2"
"@babel/plugin-syntax-typescript" "^7.20.0"
"@babel/plugin-transform-unicode-escapes@^7.18.10":
@@ -1046,31 +1065,31 @@
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
"@babel/helper-plugin-utils" "^7.18.6"
-"@babel/preset-env@^7.11.0":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.20.2.tgz#9b1642aa47bb9f43a86f9630011780dab7f86506"
- integrity sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==
+"@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.21.4.tgz#a952482e634a8dd8271a3fe5459a16eb10739c58"
+ integrity sha512-2W57zHs2yDLm6GD5ZpvNn71lZ0B/iypSdIeq25OurDKji6AdzV07qp4s3n1/x5BqtiGaTrPN3nerlSCaC5qNTw==
dependencies:
- "@babel/compat-data" "^7.20.1"
- "@babel/helper-compilation-targets" "^7.20.0"
+ "@babel/compat-data" "^7.21.4"
+ "@babel/helper-compilation-targets" "^7.21.4"
"@babel/helper-plugin-utils" "^7.20.2"
- "@babel/helper-validator-option" "^7.18.6"
+ "@babel/helper-validator-option" "^7.21.0"
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9"
- "@babel/plugin-proposal-async-generator-functions" "^7.20.1"
+ "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.20.7"
+ "@babel/plugin-proposal-async-generator-functions" "^7.20.7"
"@babel/plugin-proposal-class-properties" "^7.18.6"
- "@babel/plugin-proposal-class-static-block" "^7.18.6"
+ "@babel/plugin-proposal-class-static-block" "^7.21.0"
"@babel/plugin-proposal-dynamic-import" "^7.18.6"
"@babel/plugin-proposal-export-namespace-from" "^7.18.9"
"@babel/plugin-proposal-json-strings" "^7.18.6"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9"
+ "@babel/plugin-proposal-logical-assignment-operators" "^7.20.7"
"@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
"@babel/plugin-proposal-numeric-separator" "^7.18.6"
- "@babel/plugin-proposal-object-rest-spread" "^7.20.2"
+ "@babel/plugin-proposal-object-rest-spread" "^7.20.7"
"@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
- "@babel/plugin-proposal-optional-chaining" "^7.18.9"
+ "@babel/plugin-proposal-optional-chaining" "^7.21.0"
"@babel/plugin-proposal-private-methods" "^7.18.6"
- "@babel/plugin-proposal-private-property-in-object" "^7.18.6"
+ "@babel/plugin-proposal-private-property-in-object" "^7.21.0"
"@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
"@babel/plugin-syntax-async-generators" "^7.8.4"
"@babel/plugin-syntax-class-properties" "^7.12.13"
@@ -1087,121 +1106,40 @@
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
- "@babel/plugin-transform-arrow-functions" "^7.18.6"
- "@babel/plugin-transform-async-to-generator" "^7.18.6"
+ "@babel/plugin-transform-arrow-functions" "^7.20.7"
+ "@babel/plugin-transform-async-to-generator" "^7.20.7"
"@babel/plugin-transform-block-scoped-functions" "^7.18.6"
- "@babel/plugin-transform-block-scoping" "^7.20.2"
- "@babel/plugin-transform-classes" "^7.20.2"
- "@babel/plugin-transform-computed-properties" "^7.18.9"
- "@babel/plugin-transform-destructuring" "^7.20.2"
+ "@babel/plugin-transform-block-scoping" "^7.21.0"
+ "@babel/plugin-transform-classes" "^7.21.0"
+ "@babel/plugin-transform-computed-properties" "^7.20.7"
+ "@babel/plugin-transform-destructuring" "^7.21.3"
"@babel/plugin-transform-dotall-regex" "^7.18.6"
"@babel/plugin-transform-duplicate-keys" "^7.18.9"
"@babel/plugin-transform-exponentiation-operator" "^7.18.6"
- "@babel/plugin-transform-for-of" "^7.18.8"
+ "@babel/plugin-transform-for-of" "^7.21.0"
"@babel/plugin-transform-function-name" "^7.18.9"
"@babel/plugin-transform-literals" "^7.18.9"
"@babel/plugin-transform-member-expression-literals" "^7.18.6"
- "@babel/plugin-transform-modules-amd" "^7.19.6"
- "@babel/plugin-transform-modules-commonjs" "^7.19.6"
- "@babel/plugin-transform-modules-systemjs" "^7.19.6"
+ "@babel/plugin-transform-modules-amd" "^7.20.11"
+ "@babel/plugin-transform-modules-commonjs" "^7.21.2"
+ "@babel/plugin-transform-modules-systemjs" "^7.20.11"
"@babel/plugin-transform-modules-umd" "^7.18.6"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1"
+ "@babel/plugin-transform-named-capturing-groups-regex" "^7.20.5"
"@babel/plugin-transform-new-target" "^7.18.6"
"@babel/plugin-transform-object-super" "^7.18.6"
- "@babel/plugin-transform-parameters" "^7.20.1"
+ "@babel/plugin-transform-parameters" "^7.21.3"
"@babel/plugin-transform-property-literals" "^7.18.6"
- "@babel/plugin-transform-regenerator" "^7.18.6"
+ "@babel/plugin-transform-regenerator" "^7.20.5"
"@babel/plugin-transform-reserved-words" "^7.18.6"
"@babel/plugin-transform-shorthand-properties" "^7.18.6"
- "@babel/plugin-transform-spread" "^7.19.0"
+ "@babel/plugin-transform-spread" "^7.20.7"
"@babel/plugin-transform-sticky-regex" "^7.18.6"
"@babel/plugin-transform-template-literals" "^7.18.9"
"@babel/plugin-transform-typeof-symbol" "^7.18.9"
"@babel/plugin-transform-unicode-escapes" "^7.18.10"
"@babel/plugin-transform-unicode-regex" "^7.18.6"
"@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.20.2"
- babel-plugin-polyfill-corejs2 "^0.3.3"
- babel-plugin-polyfill-corejs3 "^0.6.0"
- babel-plugin-polyfill-regenerator "^0.4.1"
- core-js-compat "^3.25.1"
- semver "^6.3.0"
-
-"@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4":
- version "7.19.4"
- resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.19.4.tgz#4c91ce2e1f994f717efb4237891c3ad2d808c94b"
- integrity sha512-5QVOTXUdqTCjQuh2GGtdd7YEhoRXBMVGROAtsBeLGIbIz3obCBIfRMT1I3ZKkMgNzwkyCkftDXSSkHxnfVf4qg==
- dependencies:
- "@babel/compat-data" "^7.19.4"
- "@babel/helper-compilation-targets" "^7.19.3"
- "@babel/helper-plugin-utils" "^7.19.0"
- "@babel/helper-validator-option" "^7.18.6"
- "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6"
- "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9"
- "@babel/plugin-proposal-async-generator-functions" "^7.19.1"
- "@babel/plugin-proposal-class-properties" "^7.18.6"
- "@babel/plugin-proposal-class-static-block" "^7.18.6"
- "@babel/plugin-proposal-dynamic-import" "^7.18.6"
- "@babel/plugin-proposal-export-namespace-from" "^7.18.9"
- "@babel/plugin-proposal-json-strings" "^7.18.6"
- "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9"
- "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6"
- "@babel/plugin-proposal-numeric-separator" "^7.18.6"
- "@babel/plugin-proposal-object-rest-spread" "^7.19.4"
- "@babel/plugin-proposal-optional-catch-binding" "^7.18.6"
- "@babel/plugin-proposal-optional-chaining" "^7.18.9"
- "@babel/plugin-proposal-private-methods" "^7.18.6"
- "@babel/plugin-proposal-private-property-in-object" "^7.18.6"
- "@babel/plugin-proposal-unicode-property-regex" "^7.18.6"
- "@babel/plugin-syntax-async-generators" "^7.8.4"
- "@babel/plugin-syntax-class-properties" "^7.12.13"
- "@babel/plugin-syntax-class-static-block" "^7.14.5"
- "@babel/plugin-syntax-dynamic-import" "^7.8.3"
- "@babel/plugin-syntax-export-namespace-from" "^7.8.3"
- "@babel/plugin-syntax-import-assertions" "^7.18.6"
- "@babel/plugin-syntax-json-strings" "^7.8.3"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
- "@babel/plugin-syntax-numeric-separator" "^7.10.4"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
- "@babel/plugin-syntax-optional-chaining" "^7.8.3"
- "@babel/plugin-syntax-private-property-in-object" "^7.14.5"
- "@babel/plugin-syntax-top-level-await" "^7.14.5"
- "@babel/plugin-transform-arrow-functions" "^7.18.6"
- "@babel/plugin-transform-async-to-generator" "^7.18.6"
- "@babel/plugin-transform-block-scoped-functions" "^7.18.6"
- "@babel/plugin-transform-block-scoping" "^7.19.4"
- "@babel/plugin-transform-classes" "^7.19.0"
- "@babel/plugin-transform-computed-properties" "^7.18.9"
- "@babel/plugin-transform-destructuring" "^7.19.4"
- "@babel/plugin-transform-dotall-regex" "^7.18.6"
- "@babel/plugin-transform-duplicate-keys" "^7.18.9"
- "@babel/plugin-transform-exponentiation-operator" "^7.18.6"
- "@babel/plugin-transform-for-of" "^7.18.8"
- "@babel/plugin-transform-function-name" "^7.18.9"
- "@babel/plugin-transform-literals" "^7.18.9"
- "@babel/plugin-transform-member-expression-literals" "^7.18.6"
- "@babel/plugin-transform-modules-amd" "^7.18.6"
- "@babel/plugin-transform-modules-commonjs" "^7.18.6"
- "@babel/plugin-transform-modules-systemjs" "^7.19.0"
- "@babel/plugin-transform-modules-umd" "^7.18.6"
- "@babel/plugin-transform-named-capturing-groups-regex" "^7.19.1"
- "@babel/plugin-transform-new-target" "^7.18.6"
- "@babel/plugin-transform-object-super" "^7.18.6"
- "@babel/plugin-transform-parameters" "^7.18.8"
- "@babel/plugin-transform-property-literals" "^7.18.6"
- "@babel/plugin-transform-regenerator" "^7.18.6"
- "@babel/plugin-transform-reserved-words" "^7.18.6"
- "@babel/plugin-transform-shorthand-properties" "^7.18.6"
- "@babel/plugin-transform-spread" "^7.19.0"
- "@babel/plugin-transform-sticky-regex" "^7.18.6"
- "@babel/plugin-transform-template-literals" "^7.18.9"
- "@babel/plugin-transform-typeof-symbol" "^7.18.9"
- "@babel/plugin-transform-unicode-escapes" "^7.18.10"
- "@babel/plugin-transform-unicode-regex" "^7.18.6"
- "@babel/preset-modules" "^0.1.5"
- "@babel/types" "^7.19.4"
+ "@babel/types" "^7.21.4"
babel-plugin-polyfill-corejs2 "^0.3.3"
babel-plugin-polyfill-corejs3 "^0.6.0"
babel-plugin-polyfill-regenerator "^0.4.1"
@@ -1219,7 +1157,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0":
+"@babel/preset-react@^7.16.0":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.18.6.tgz#979f76d6277048dc19094c217b507f3ad517dd2d"
integrity sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==
@@ -1232,210 +1170,332 @@
"@babel/plugin-transform-react-pure-annotations" "^7.18.6"
"@babel/preset-typescript@^7.16.0":
- version "7.18.6"
- resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399"
- integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ==
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.21.4.tgz#b913ac8e6aa8932e47c21b01b4368d8aa239a529"
+ integrity sha512-sMLNWY37TCdRH/bJ6ZeeOH1nPuanED7Ai9Y/vH31IPqalioJ6ZNFUWONsakhv4r4n+I6gm5lmoE0olkgib/j/A==
dependencies:
- "@babel/helper-plugin-utils" "^7.18.6"
- "@babel/helper-validator-option" "^7.18.6"
- "@babel/plugin-transform-typescript" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-validator-option" "^7.21.0"
+ "@babel/plugin-syntax-jsx" "^7.21.4"
+ "@babel/plugin-transform-modules-commonjs" "^7.21.2"
+ "@babel/plugin-transform-typescript" "^7.21.3"
-"@babel/runtime-corejs3@^7.10.2":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.20.0.tgz#56ef7af3cd23d1570969809a5a8782e774e0141a"
- integrity sha512-v1JH7PeAAGBEyTQM9TqojVl+b20zXtesFKCJHu50xMxZKD1fX0TKaKHPsZfFkXfs7D1M9M6Eeqg1FkJ3a0x2dA==
+"@babel/regjsgen@^0.8.0":
+ version "0.8.0"
+ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310"
+ integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
+
+"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.20.7", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
+ version "7.21.0"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.21.0.tgz#5b55c9d394e5fcf304909a8b00c07dc217b56673"
+ integrity sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==
dependencies:
- core-js-pure "^3.25.1"
- regenerator-runtime "^0.13.10"
+ regenerator-runtime "^0.13.11"
-"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.14.6", "@babel/runtime@^7.16.3", "@babel/runtime@^7.18.9", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.0.tgz#824a9ef325ffde6f78056059db3168c08785e24a"
- integrity sha512-NDYdls71fTXoU8TZHfbBWg7DiZfNzClcKui/+kyi6ppD2L1qnWW3VV6CjtaBXSUGGhiTWJ6ereOIkUvenif66Q==
- dependencies:
- regenerator-runtime "^0.13.10"
-
-"@babel/runtime@^7.11.2":
- version "7.20.1"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9"
- integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg==
- dependencies:
- regenerator-runtime "^0.13.10"
-
-"@babel/template@^7.18.10", "@babel/template@^7.3.3":
- version "7.18.10"
- resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71"
- integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==
+"@babel/template@^7.18.10", "@babel/template@^7.20.7":
+ version "7.20.7"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.20.7.tgz#a15090c2839a83b02aa996c0b4994005841fd5a8"
+ integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
dependencies:
"@babel/code-frame" "^7.18.6"
- "@babel/parser" "^7.18.10"
- "@babel/types" "^7.18.10"
+ "@babel/parser" "^7.20.7"
+ "@babel/types" "^7.20.7"
-"@babel/traverse@^7.19.0", "@babel/traverse@^7.19.1", "@babel/traverse@^7.19.6", "@babel/traverse@^7.20.0":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.0.tgz#538c4c6ce6255f5666eba02252a7b59fc2d5ed98"
- integrity sha512-5+cAXQNARgjRUK0JWu2UBwja4JLSO/rBMPJzpsKb+oBF5xlUuCfljQepS4XypBQoiigL0VQjTZy6WiONtUdScQ==
+"@babel/template@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.5.tgz#0c8c4d944509875849bd0344ff0050756eefc6ec"
+ integrity sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==
dependencies:
- "@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.20.0"
+ "@babel/code-frame" "^7.22.5"
+ "@babel/parser" "^7.22.5"
+ "@babel/types" "^7.22.5"
+
+"@babel/traverse@^7.20.5", "@babel/traverse@^7.20.7", "@babel/traverse@^7.21.0", "@babel/traverse@^7.21.2", "@babel/traverse@^7.21.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.21.4.tgz#a836aca7b116634e97a6ed99976236b3282c9d36"
+ integrity sha512-eyKrRHKdyZxqDm+fV1iqL9UAHMoIg0nDaGqfIOd8rKH17m5snv7Gn4qgjBoFfLz9APvjFU/ICT00NVCv1Epp8Q==
+ dependencies:
+ "@babel/code-frame" "^7.21.4"
+ "@babel/generator" "^7.21.4"
"@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
+ "@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.20.0"
- "@babel/types" "^7.20.0"
+ "@babel/parser" "^7.21.4"
+ "@babel/types" "^7.21.4"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/traverse@^7.20.1", "@babel/traverse@^7.7.2":
- version "7.20.1"
- resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.20.1.tgz#9b15ccbf882f6d107eeeecf263fbcdd208777ec8"
- integrity sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==
+"@babel/traverse@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.22.5.tgz#44bd276690db6f4940fdb84e1cb4abd2f729ccd1"
+ integrity sha512-7DuIjPgERaNo6r+PZwItpjCZEa5vyw4eJGufeLxrPdBXBoLcCJCIasvK6pK/9DVNrLZTLFhUGqaC6X/PA007TQ==
dependencies:
- "@babel/code-frame" "^7.18.6"
- "@babel/generator" "^7.20.1"
- "@babel/helper-environment-visitor" "^7.18.9"
- "@babel/helper-function-name" "^7.19.0"
- "@babel/helper-hoist-variables" "^7.18.6"
- "@babel/helper-split-export-declaration" "^7.18.6"
- "@babel/parser" "^7.20.1"
- "@babel/types" "^7.20.0"
+ "@babel/code-frame" "^7.22.5"
+ "@babel/generator" "^7.22.5"
+ "@babel/helper-environment-visitor" "^7.22.5"
+ "@babel/helper-function-name" "^7.22.5"
+ "@babel/helper-hoist-variables" "^7.22.5"
+ "@babel/helper-split-export-declaration" "^7.22.5"
+ "@babel/parser" "^7.22.5"
+ "@babel/types" "^7.22.5"
debug "^4.1.0"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.19.0", "@babel/types@^7.19.4", "@babel/types@^7.20.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
- version "7.20.0"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.0.tgz#52c94cf8a7e24e89d2a194c25c35b17a64871479"
- integrity sha512-Jlgt3H0TajCW164wkTOTzHkZb075tMQMULzrLUoUeKmO7eFL96GgDxf7/Axhc5CAuKE3KFyVW1p6ysKsi2oXAg==
+"@babel/types@^7.18.6", "@babel/types@^7.18.9", "@babel/types@^7.20.0", "@babel/types@^7.20.2", "@babel/types@^7.20.5", "@babel/types@^7.20.7", "@babel/types@^7.21.0", "@babel/types@^7.21.2", "@babel/types@^7.21.4", "@babel/types@^7.4.4":
+ version "7.21.4"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.21.4.tgz#2d5d6bb7908699b3b416409ffd3b5daa25b030d4"
+ integrity sha512-rU2oY501qDxE8Pyo7i/Orqma4ziCOrby0/9mvbDUGEfvZjb279Nk9k19e2fiCxHbRRpY2ZyrgW1eq22mvmOIzA==
dependencies:
"@babel/helper-string-parser" "^7.19.4"
"@babel/helper-validator-identifier" "^7.19.1"
to-fast-properties "^2.0.0"
-"@babel/types@^7.20.2":
- version "7.20.2"
- resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.20.2.tgz#67ac09266606190f496322dbaff360fdaa5e7842"
- integrity sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==
+"@babel/types@^7.22.5":
+ version "7.22.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.22.5.tgz#cd93eeaab025880a3a47ec881f4b096a5b786fbe"
+ integrity sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==
dependencies:
- "@babel/helper-string-parser" "^7.19.4"
- "@babel/helper-validator-identifier" "^7.19.1"
+ "@babel/helper-string-parser" "^7.22.5"
+ "@babel/helper-validator-identifier" "^7.22.5"
to-fast-properties "^2.0.0"
-"@bcoe/v8-coverage@^0.2.3":
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
- integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
+"@braintree/sanitize-url@6.0.2":
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.2.tgz#6110f918d273fe2af8ea1c4398a88774bb9fc12f"
+ integrity sha512-Tbsj02wXCbqGmzdnXNk0SOF19ChhRU70BsroIi4Pm6Ehp56in6vch94mfbdQ17DozxkL3BAVjbZ4Qc1a0HFRAg==
-"@csstools/normalize.css@*":
- version "12.0.0"
- resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4"
- integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==
+"@esbuild/android-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz#bafb75234a5d3d1b690e7c2956a599345e84a2fd"
+ integrity sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==
-"@csstools/postcss-cascade-layers@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad"
- integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==
+"@esbuild/android-arm64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.11.tgz#fa6f0cc7105367cb79cc0a8bf32bf50cb1673e45"
+ integrity sha512-snieiq75Z1z5LJX9cduSAjUr7vEI1OdlzFPMw0HH5YI7qQHDd3qs+WZoMrWYDsfRJSq36lIA6mfZBkvL46KoIw==
+
+"@esbuild/android-arm@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.17.19.tgz#5898f7832c2298bc7d0ab53701c57beb74d78b4d"
+ integrity sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==
+
+"@esbuild/android-arm@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.11.tgz#ae84a410696c9f549a15be94eaececb860bacacb"
+ integrity sha512-q4qlUf5ucwbUJZXF5tEQ8LF7y0Nk4P58hOsGk3ucY0oCwgQqAnqXVbUuahCddVHfrxmpyewRpiTHwVHIETYu7Q==
+
+"@esbuild/android-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.17.19.tgz#658368ef92067866d95fb268719f98f363d13ae1"
+ integrity sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==
+
+"@esbuild/android-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.11.tgz#0e58360bbc789ad0d68174d32ba20e678c2a16b6"
+ integrity sha512-iPuoxQEV34+hTF6FT7om+Qwziv1U519lEOvekXO9zaMMlT9+XneAhKL32DW3H7okrCOBQ44BMihE8dclbZtTuw==
+
+"@esbuild/darwin-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz#584c34c5991b95d4d48d333300b1a4e2ff7be276"
+ integrity sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==
+
+"@esbuild/darwin-arm64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.18.11.tgz#fcdcd2ef76ca656540208afdd84f284072f0d1f9"
+ integrity sha512-Gm0QkI3k402OpfMKyQEEMG0RuW2LQsSmI6OeO4El2ojJMoF5NLYb3qMIjvbG/lbMeLOGiW6ooU8xqc+S0fgz2w==
+
+"@esbuild/darwin-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz#7751d236dfe6ce136cce343dce69f52d76b7f6cb"
+ integrity sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==
+
+"@esbuild/darwin-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.11.tgz#c5ac602ec0504a8ff81e876bc8a9811e94d69d37"
+ integrity sha512-N15Vzy0YNHu6cfyDOjiyfJlRJCB/ngKOAvoBf1qybG3eOq0SL2Lutzz9N7DYUbb7Q23XtHPn6lMDF6uWbGv9Fw==
+
+"@esbuild/freebsd-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz#cacd171665dd1d500f45c167d50c6b7e539d5fd2"
+ integrity sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==
+
+"@esbuild/freebsd-arm64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.11.tgz#7012fb06ee3e6e0d5560664a65f3fefbcc46db2e"
+ integrity sha512-atEyuq6a3omEY5qAh5jIORWk8MzFnCpSTUruBgeyN9jZq1K/QI9uke0ATi3MHu4L8c59CnIi4+1jDKMuqmR71A==
+
+"@esbuild/freebsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz#0769456eee2a08b8d925d7c00b79e861cb3162e4"
+ integrity sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==
+
+"@esbuild/freebsd-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.11.tgz#c5de1199f70e1f97d5c8fca51afa9bf9a2af5969"
+ integrity sha512-XtuPrEfBj/YYYnAAB7KcorzzpGTvOr/dTtXPGesRfmflqhA4LMF0Gh/n5+a9JBzPuJ+CGk17CA++Hmr1F/gI0Q==
+
+"@esbuild/linux-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz#38e162ecb723862c6be1c27d6389f48960b68edb"
+ integrity sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==
+
+"@esbuild/linux-arm64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.11.tgz#2a6d3a74e0b8b5f294e22b4515b29f76ebd42660"
+ integrity sha512-c6Vh2WS9VFKxKZ2TvJdA7gdy0n6eSy+yunBvv4aqNCEhSWVor1TU43wNRp2YLO9Vng2G+W94aRz+ILDSwAiYog==
+
+"@esbuild/linux-arm@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz#1a2cd399c50040184a805174a6d89097d9d1559a"
+ integrity sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==
+
+"@esbuild/linux-arm@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.11.tgz#5175bd61b793b436e4aece6328aa0d9be07751e1"
+ integrity sha512-Idipz+Taso/toi2ETugShXjQ3S59b6m62KmLHkJlSq/cBejixmIydqrtM2XTvNCywFl3VC7SreSf6NV0i6sRyg==
+
+"@esbuild/linux-ia32@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz#e28c25266b036ce1cabca3c30155222841dc035a"
+ integrity sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==
+
+"@esbuild/linux-ia32@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.11.tgz#20ee6cfd65a398875f321a485e7b2278e5f6f67b"
+ integrity sha512-S3hkIF6KUqRh9n1Q0dSyYcWmcVa9Cg+mSoZEfFuzoYXXsk6196qndrM+ZiHNwpZKi3XOXpShZZ+9dfN5ykqjjw==
+
+"@esbuild/linux-loong64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz#0f887b8bb3f90658d1a0117283e55dbd4c9dcf72"
+ integrity sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==
+
+"@esbuild/linux-loong64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.11.tgz#8e7b251dede75083bf44508dab5edce3f49d052b"
+ integrity sha512-MRESANOoObQINBA+RMZW+Z0TJWpibtE7cPFnahzyQHDCA9X9LOmGh68MVimZlM9J8n5Ia8lU773te6O3ILW8kw==
+
+"@esbuild/linux-mips64el@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz#f5d2a0b8047ea9a5d9f592a178ea054053a70289"
+ integrity sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==
+
+"@esbuild/linux-mips64el@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.11.tgz#a3125eb48538ac4932a9d05089b157f94e443165"
+ integrity sha512-qVyPIZrXNMOLYegtD1u8EBccCrBVshxMrn5MkuFc3mEVsw7CCQHaqZ4jm9hbn4gWY95XFnb7i4SsT3eflxZsUg==
+
+"@esbuild/linux-ppc64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz#876590e3acbd9fa7f57a2c7d86f83717dbbac8c7"
+ integrity sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==
+
+"@esbuild/linux-ppc64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.11.tgz#842abadb7a0995bd539adee2be4d681b68279499"
+ integrity sha512-T3yd8vJXfPirZaUOoA9D2ZjxZX4Gr3QuC3GztBJA6PklLotc/7sXTOuuRkhE9W/5JvJP/K9b99ayPNAD+R+4qQ==
+
+"@esbuild/linux-riscv64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz#7f49373df463cd9f41dc34f9b2262d771688bf09"
+ integrity sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==
+
+"@esbuild/linux-riscv64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.11.tgz#7ce6e6cee1c72d5b4d2f4f8b6fcccf4a9bea0e28"
+ integrity sha512-evUoRPWiwuFk++snjH9e2cAjF5VVSTj+Dnf+rkO/Q20tRqv+644279TZlPK8nUGunjPAtQRCj1jQkDAvL6rm2w==
+
+"@esbuild/linux-s390x@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz#e2afd1afcaf63afe2c7d9ceacd28ec57c77f8829"
+ integrity sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==
+
+"@esbuild/linux-s390x@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.11.tgz#98fbc794363d02ded07d300df2e535650b297b96"
+ integrity sha512-/SlRJ15XR6i93gRWquRxYCfhTeC5PdqEapKoLbX63PLCmAkXZHY2uQm2l9bN0oPHBsOw2IswRZctMYS0MijFcg==
+
+"@esbuild/linux-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz#8a0e9738b1635f0c53389e515ae83826dec22aa4"
+ integrity sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==
+
+"@esbuild/linux-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.11.tgz#f8458ec8cf74c8274e4cacd00744d8446cac52eb"
+ integrity sha512-xcncej+wF16WEmIwPtCHi0qmx1FweBqgsRtEL1mSHLFR6/mb3GEZfLQnx+pUDfRDEM4DQF8dpXIW7eDOZl1IbA==
+
+"@esbuild/netbsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz#c29fb2453c6b7ddef9a35e2c18b37bda1ae5c462"
+ integrity sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==
+
+"@esbuild/netbsd-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.11.tgz#a7b2f991b8293748a7be42eac1c4325faf0c7cca"
+ integrity sha512-aSjMHj/F7BuS1CptSXNg6S3M4F3bLp5wfFPIJM+Km2NfIVfFKhdmfHF9frhiCLIGVzDziggqWll0B+9AUbud/Q==
+
+"@esbuild/openbsd-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz#95e75a391403cb10297280d524d66ce04c920691"
+ integrity sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==
+
+"@esbuild/openbsd-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.11.tgz#3e50923de84c54008f834221130fd23646072b2f"
+ integrity sha512-tNBq+6XIBZtht0xJGv7IBB5XaSyvYPCm1PxJ33zLQONdZoLVM0bgGqUrXnJyiEguD9LU4AHiu+GCXy/Hm9LsdQ==
+
+"@esbuild/sunos-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz#722eaf057b83c2575937d3ffe5aeb16540da7273"
+ integrity sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==
+
+"@esbuild/sunos-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.11.tgz#ae47a550b0cd395de03606ecfba03cc96c7c19e2"
+ integrity sha512-kxfbDOrH4dHuAAOhr7D7EqaYf+W45LsAOOhAet99EyuxxQmjbk8M9N4ezHcEiCYPaiW8Dj3K26Z2V17Gt6p3ng==
+
+"@esbuild/win32-arm64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz#9aa9dc074399288bdcdd283443e9aeb6b9552b6f"
+ integrity sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==
+
+"@esbuild/win32-arm64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.11.tgz#05d364582b7862d7fbf4698ef43644f7346dcfcc"
+ integrity sha512-Sh0dDRyk1Xi348idbal7lZyfSkjhJsdFeuC13zqdipsvMetlGiFQNdO+Yfp6f6B4FbyQm7qsk16yaZk25LChzg==
+
+"@esbuild/win32-ia32@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz#95ad43c62ad62485e210f6299c7b2571e48d2b03"
+ integrity sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==
+
+"@esbuild/win32-ia32@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.11.tgz#a3372095a4a1939da672156a3c104f8ce85ee616"
+ integrity sha512-o9JUIKF1j0rqJTFbIoF4bXj6rvrTZYOrfRcGyL0Vm5uJ/j5CkBD/51tpdxe9lXEDouhRgdr/BYzUrDOvrWwJpg==
+
+"@esbuild/win32-x64@0.17.19":
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz#8cfaf2ff603e9aabb910e9c0558c26cf32744061"
+ integrity sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==
+
+"@esbuild/win32-x64@0.18.11":
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.11.tgz#6526c7e1b40d5b9f0a222c6b767c22f6fb97aa57"
+ integrity sha512-rQI4cjLHd2hGsM1LqgDI7oOCYbQ6IBOVsX9ejuRMSze0GqXUG2ekwiKkiBU1pRGSeCqFFHxTrcEydB2Hyoz9CA==
+
+"@eslint-community/eslint-utils@^4.2.0":
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
+ integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
dependencies:
- "@csstools/selector-specificity" "^2.0.2"
- postcss-selector-parser "^6.0.10"
+ eslint-visitor-keys "^3.3.0"
-"@csstools/postcss-color-function@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b"
- integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==
- dependencies:
- "@csstools/postcss-progressive-custom-properties" "^1.1.0"
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-font-format-keywords@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a"
- integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-hwb-function@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b"
- integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-ic-unit@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58"
- integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==
- dependencies:
- "@csstools/postcss-progressive-custom-properties" "^1.1.0"
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-is-pseudo-class@^2.0.7":
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1"
- integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==
- dependencies:
- "@csstools/selector-specificity" "^2.0.0"
- postcss-selector-parser "^6.0.10"
-
-"@csstools/postcss-nested-calc@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26"
- integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-normalize-display-values@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3"
- integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-oklab-function@^1.1.1":
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844"
- integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==
- dependencies:
- "@csstools/postcss-progressive-custom-properties" "^1.1.0"
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0":
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa"
- integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-stepped-value-functions@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4"
- integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-text-decoration-shorthand@^1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f"
- integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-trigonometric-functions@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756"
- integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-"@csstools/postcss-unset-value@^1.0.2":
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77"
- integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==
-
-"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz#1bfafe4b7ed0f3e4105837e056e0a89b108ebe36"
- integrity sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==
+"@eslint-community/regexpp@^4.4.0":
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.5.0.tgz#f6f729b02feee2c749f57e334b7a1b5f40a81724"
+ integrity sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==
"@eslint/eslintrc@^0.4.3":
version "0.4.3"
@@ -1452,31 +1512,21 @@
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
-"@eslint/eslintrc@^1.3.3":
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.3.tgz#2b044ab39fdfa75b4688184f9e573ce3c5b0ff95"
- integrity sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==
- dependencies:
- ajv "^6.12.4"
- debug "^4.3.2"
- espree "^9.4.0"
- globals "^13.15.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"
-
-"@excalidraw/eslint-config@1.0.0":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@excalidraw/eslint-config/-/eslint-config-1.0.0.tgz#1cc527a88cfe20fd730496c1b631c3aecf9c825e"
- integrity sha512-5SQFsQXO4vzny7OFSJr/DDPr1Mzeh6w0uwmZ0Fk2qjBcS5nhPtnx5KOTRPmpc6Hf5Ao57WK/MKI4lhCzw66V/A==
+"@excalidraw/eslint-config@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@excalidraw/eslint-config/-/eslint-config-1.0.3.tgz#2122ef7413ae77874ae9848ce0f1c6b3f0d8bbbd"
+ integrity sha512-GemHNF5Z6ga0BWBSX7GJaNBUchLu6RwTcAB84eX1MeckRNhNasAsPCdelDlFalz27iS4RuYEQh0bPE8SRxJgbQ==
"@excalidraw/prettier-config@1.0.2":
version "1.0.2"
resolved "https://registry.yarnpkg.com/@excalidraw/prettier-config/-/prettier-config-1.0.2.tgz#b7c061c99cee2f78b9ca470ea1fbd602683bba65"
integrity sha512-rFIq8+A8WvkEzBsF++Rw6gzxE+hU3ZNkdg8foI+Upz2y/rOC/gUpWJaggPbCkoH3nlREVU59axQjZ1+F6ePRGg==
+"@excalidraw/random-username@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@excalidraw/random-username/-/random-username-1.0.0.tgz#6d5293148aee6cd08dcdfcadc0c91276572f4499"
+ integrity sha512-pd4VapWahQ7PIyThGq32+C+JUS73mf3RSdC7BmQiXzhQsCTU4RHc8y9jBi+pb1CFV0iJXvjJRXnVdLCbTj3+HA==
+
"@firebase/analytics-types@0.4.0":
version "0.4.0"
resolved "https://registry.yarnpkg.com/@firebase/analytics-types/-/analytics-types-0.4.0.tgz#d6716f9fa36a6e340bc0ecfe68af325aa6f60508"
@@ -1701,10 +1751,30 @@
resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.4.1.tgz#600f2275ff54739ad5ac0102f1467b8963cd5f71"
integrity sha512-0yPjzuzGMkW1GkrC8yWsiN7vt1OzkMIi9HgxRmKREZl2wnNPOKo/yScTjXf/O57HM8dltqxPF6jlNLFVtc2qdw==
+"@floating-ui/core@^0.7.3":
+ version "0.7.3"
+ resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-0.7.3.tgz#d274116678ffae87f6b60e90f88cc4083eefab86"
+ integrity sha512-buc8BXHmG9l82+OQXOFU3Kr2XQx9ys01U/Q9HMIrZ300iLc8HLMgh7dcCqgYzAzf4BkoQvDcXf5Y+CuEZ5JBYg==
+
+"@floating-ui/dom@^0.5.3":
+ version "0.5.4"
+ resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-0.5.4.tgz#4eae73f78bcd4bd553ae2ade30e6f1f9c73fe3f1"
+ integrity sha512-419BMceRLq0RrmTSDxn8hf9R3VCJv2K9PUfugh5JyEFmdjzDo+e8U5EdR8nzKq8Yj1htzLm3b6eQEEam3/rrtg==
+ dependencies:
+ "@floating-ui/core" "^0.7.3"
+
+"@floating-ui/react-dom@0.7.2":
+ version "0.7.2"
+ resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-0.7.2.tgz#0bf4ceccb777a140fc535c87eb5d6241c8e89864"
+ integrity sha512-1T0sJcpHgX/u4I1OzIEhlcrvkUN8ln39nz7fMoE/2HDHrPiMFoOGR7++GYyfUmIQHkkrTinaeQsO3XWubjSvGg==
+ dependencies:
+ "@floating-ui/dom" "^0.5.3"
+ use-isomorphic-layout-effect "^1.1.1"
+
"@grpc/grpc-js@^1.0.0":
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.7.3.tgz#f2ea79f65e31622d7f86d4b4c9ae38f13ccab99a"
- integrity sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==
+ version "1.8.13"
+ resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.8.13.tgz#e775685962909b76f8d4b813833c3d123867165b"
+ integrity sha512-iY3jsdfbc0ARoCLFvbvUB8optgyb0r1XLPb142u+QtgBcKJYkCIFt3Fd/881KqjLYWjsBJF57N3b8Eop9NDfUA==
dependencies:
"@grpc/proto-loader" "^0.7.0"
"@types/node" ">=12.12.47"
@@ -1718,9 +1788,9 @@
protobufjs "^6.8.6"
"@grpc/proto-loader@^0.7.0":
- version "0.7.3"
- resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.3.tgz#75a6f95b51b85c5078ac7394da93850c32d36bb8"
- integrity sha512-5dAvoZwna2Py3Ef96Ux9jIkp3iZ62TUsV00p3wVBPNX5K178UbNi8Q7gQVqwXT1Yq9RejIGG9G2IPEo93T6RcA==
+ version "0.7.6"
+ resolved "https://registry.yarnpkg.com/@grpc/proto-loader/-/proto-loader-0.7.6.tgz#b71fdf92b184af184b668c4e9395a5ddc23d61de"
+ integrity sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==
dependencies:
"@types/long" "^4.0.1"
lodash.camelcase "^4.3.0"
@@ -1728,15 +1798,6 @@
protobufjs "^7.0.0"
yargs "^16.2.0"
-"@humanwhocodes/config-array@^0.11.6":
- version "0.11.7"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.7.tgz#38aec044c6c828f6ed51d5d7ae3d9b9faf6dbb0f"
- integrity sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==
- dependencies:
- "@humanwhocodes/object-schema" "^1.2.1"
- debug "^4.1.1"
- minimatch "^3.0.5"
-
"@humanwhocodes/config-array@^0.5.0":
version "0.5.0"
resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
@@ -1746,280 +1807,41 @@
debug "^4.1.1"
minimatch "^3.0.4"
-"@humanwhocodes/module-importer@^1.0.1":
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
- integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
-
-"@humanwhocodes/object-schema@^1.2.0", "@humanwhocodes/object-schema@^1.2.1":
+"@humanwhocodes/object-schema@^1.2.0":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
-"@istanbuljs/load-nyc-config@^1.0.0":
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced"
- integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
+"@jest/expect-utils@^29.5.0":
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.5.0.tgz#f74fad6b6e20f924582dc8ecbf2cb800fe43a036"
+ integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==
dependencies:
- camelcase "^5.3.1"
- find-up "^4.1.0"
- get-package-type "^0.1.0"
- js-yaml "^3.13.1"
- resolve-from "^5.0.0"
+ jest-get-type "^29.4.3"
-"@istanbuljs/schema@^0.1.2":
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98"
- integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
-
-"@jest/console@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba"
- integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==
+"@jest/schemas@^29.4.3":
+ version "29.4.3"
+ resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.4.3.tgz#39cf1b8469afc40b6f5a2baaa146e332c4151788"
+ integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==
dependencies:
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- chalk "^4.0.0"
- jest-message-util "^27.5.1"
- jest-util "^27.5.1"
- slash "^3.0.0"
+ "@sinclair/typebox" "^0.25.16"
-"@jest/console@^28.1.3":
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df"
- integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==
+"@jest/types@^29.5.0":
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.5.0.tgz#f59ef9b031ced83047c67032700d8c807d6e1593"
+ integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==
dependencies:
- "@jest/types" "^28.1.3"
- "@types/node" "*"
- chalk "^4.0.0"
- jest-message-util "^28.1.3"
- jest-util "^28.1.3"
- slash "^3.0.0"
-
-"@jest/core@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626"
- integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==
- dependencies:
- "@jest/console" "^27.5.1"
- "@jest/reporters" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- emittery "^0.8.1"
- exit "^0.1.2"
- graceful-fs "^4.2.9"
- jest-changed-files "^27.5.1"
- jest-config "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-message-util "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-resolve-dependencies "^27.5.1"
- jest-runner "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
- jest-watcher "^27.5.1"
- micromatch "^4.0.4"
- rimraf "^3.0.0"
- slash "^3.0.0"
- strip-ansi "^6.0.0"
-
-"@jest/environment@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74"
- integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==
- dependencies:
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- jest-mock "^27.5.1"
-
-"@jest/expect-utils@^29.2.2":
- version "29.2.2"
- resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.2.tgz#460a5b5a3caf84d4feb2668677393dd66ff98665"
- integrity sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg==
- dependencies:
- jest-get-type "^29.2.0"
-
-"@jest/fake-timers@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74"
- integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==
- dependencies:
- "@jest/types" "^27.5.1"
- "@sinonjs/fake-timers" "^8.0.1"
- "@types/node" "*"
- jest-message-util "^27.5.1"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
-
-"@jest/globals@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b"
- integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/types" "^27.5.1"
- expect "^27.5.1"
-
-"@jest/reporters@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04"
- integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==
- dependencies:
- "@bcoe/v8-coverage" "^0.2.3"
- "@jest/console" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- chalk "^4.0.0"
- collect-v8-coverage "^1.0.0"
- exit "^0.1.2"
- glob "^7.1.2"
- graceful-fs "^4.2.9"
- istanbul-lib-coverage "^3.0.0"
- istanbul-lib-instrument "^5.1.0"
- istanbul-lib-report "^3.0.0"
- istanbul-lib-source-maps "^4.0.0"
- istanbul-reports "^3.1.3"
- jest-haste-map "^27.5.1"
- jest-resolve "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
- slash "^3.0.0"
- source-map "^0.6.0"
- string-length "^4.0.1"
- terminal-link "^2.0.0"
- v8-to-istanbul "^8.1.0"
-
-"@jest/schemas@^28.1.3":
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905"
- integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==
- dependencies:
- "@sinclair/typebox" "^0.24.1"
-
-"@jest/schemas@^29.0.0":
- version "29.0.0"
- resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-29.0.0.tgz#5f47f5994dd4ef067fb7b4188ceac45f77fe952a"
- integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==
- dependencies:
- "@sinclair/typebox" "^0.24.1"
-
-"@jest/source-map@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf"
- integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==
- dependencies:
- callsites "^3.0.0"
- graceful-fs "^4.2.9"
- source-map "^0.6.0"
-
-"@jest/test-result@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb"
- integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==
- dependencies:
- "@jest/console" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/istanbul-lib-coverage" "^2.0.0"
- collect-v8-coverage "^1.0.0"
-
-"@jest/test-result@^28.1.3":
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5"
- integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==
- dependencies:
- "@jest/console" "^28.1.3"
- "@jest/types" "^28.1.3"
- "@types/istanbul-lib-coverage" "^2.0.0"
- collect-v8-coverage "^1.0.0"
-
-"@jest/test-sequencer@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b"
- integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==
- dependencies:
- "@jest/test-result" "^27.5.1"
- graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-runtime "^27.5.1"
-
-"@jest/transform@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409"
- integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==
- dependencies:
- "@babel/core" "^7.1.0"
- "@jest/types" "^27.5.1"
- babel-plugin-istanbul "^6.1.1"
- chalk "^4.0.0"
- convert-source-map "^1.4.0"
- fast-json-stable-stringify "^2.0.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-util "^27.5.1"
- micromatch "^4.0.4"
- pirates "^4.0.4"
- slash "^3.0.0"
- source-map "^0.6.1"
- write-file-atomic "^3.0.0"
-
-"@jest/types@^27.5.1":
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80"
- integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==
- dependencies:
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^16.0.0"
- chalk "^4.0.0"
-
-"@jest/types@^28.1.3":
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b"
- integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
- dependencies:
- "@jest/schemas" "^28.1.3"
+ "@jest/schemas" "^29.4.3"
"@types/istanbul-lib-coverage" "^2.0.0"
"@types/istanbul-reports" "^3.0.0"
"@types/node" "*"
"@types/yargs" "^17.0.8"
chalk "^4.0.0"
-"@jest/types@^29.2.1":
- version "29.2.1"
- resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.2.1.tgz#ec9c683094d4eb754e41e2119d8bdaef01cf6da0"
- integrity sha512-O/QNDQODLnINEPAI0cl9U6zUIDXEWXt6IC1o2N2QENuos7hlGUIthlKyV4p6ki3TvXFX071blj8HUhgLGquPjw==
- dependencies:
- "@jest/schemas" "^29.0.0"
- "@types/istanbul-lib-coverage" "^2.0.0"
- "@types/istanbul-reports" "^3.0.0"
- "@types/node" "*"
- "@types/yargs" "^17.0.8"
- chalk "^4.0.0"
-
-"@jridgewell/gen-mapping@^0.1.0":
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996"
- integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==
- dependencies:
- "@jridgewell/set-array" "^1.0.0"
- "@jridgewell/sourcemap-codec" "^1.4.10"
-
"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
- integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098"
+ integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==
dependencies:
"@jridgewell/set-array" "^1.0.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
@@ -2030,37 +1852,37 @@
resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
-"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1":
+"@jridgewell/set-array@^1.0.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
"@jridgewell/source-map@^0.3.2":
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
- integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
+ version "0.3.3"
+ resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.3.tgz#8108265659d4c33e72ffe14e33d6cc5eb59f2fda"
+ integrity sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==
dependencies:
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
-"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10":
+"@jridgewell/sourcemap-codec@1.4.14":
version "1.4.14"
resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
-"@jridgewell/trace-mapping@^0.3.14", "@jridgewell/trace-mapping@^0.3.9":
- version "0.3.17"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz#793041277af9073b0951a7fe0f0d8c4c98c36985"
- integrity sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==
+"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13":
+ version "1.4.15"
+ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
+ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
+
+"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9":
+ version "0.3.18"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz#25783b2086daf6ff1dcb53c9249ae480e4dd4cd6"
+ integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
dependencies:
"@jridgewell/resolve-uri" "3.1.0"
"@jridgewell/sourcemap-codec" "1.4.14"
-"@leichtgewicht/ip-codec@^2.0.1":
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
- integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
-
"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
version "5.1.1-v1"
resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129"
@@ -2081,7 +1903,7 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
+"@nodelib/fs.walk@^1.2.3":
version "1.2.8"
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -2089,20 +1911,10 @@
"@nodelib/fs.scandir" "2.1.5"
fastq "^1.6.0"
-"@pmmmwh/react-refresh-webpack-plugin@^0.5.3":
- version "0.5.9"
- resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.9.tgz#35aae6624a6270ca7ad755800b7eec417fa6f830"
- integrity sha512-7QV4cqUwhkDIHpMAZ9mestSJ2DMIotVTbOUwbiudhjCRTAWWKIaBecELiEM2LT3AHFeOAaHIcFu4dbXjX+9GBA==
- dependencies:
- ansi-html-community "^0.0.8"
- common-path-prefix "^3.0.0"
- core-js-pure "^3.23.3"
- error-stack-parser "^2.0.6"
- find-up "^5.0.0"
- html-entities "^2.1.0"
- loader-utils "^2.0.3"
- schema-utils "^3.0.0"
- source-map "^0.7.3"
+"@polka/url@^1.0.0-next.20":
+ version "1.0.0-next.21"
+ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1"
+ integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
@@ -2157,6 +1969,246 @@
resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570"
integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==
+"@radix-ui/primitive@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.0.0.tgz#e1d8ef30b10ea10e69c76e896f608d9276352253"
+ integrity sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-arrow@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.0.1.tgz#5246adf79e97f89e819af68da51ddcf349ecf1c4"
+ integrity sha512-1yientwXqXcErDHEv8av9ZVNEBldH8L9scVR3is20lL+jOCfcJyMFZFEY5cgIrgexsq1qggSXqiEL/d/4f+QXA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.1"
+
+"@radix-ui/react-collection@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.0.1.tgz#259506f97c6703b36291826768d3c1337edd1de5"
+ integrity sha512-uuiFbs+YCKjn3X1DTSx9G7BHApu4GHbi3kgiwsnFUbOKCrwejAJv4eE4Vc8C0Oaxt9T0aV4ox0WCOdx+39Xo+g==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-slot" "1.0.1"
+
+"@radix-ui/react-compose-refs@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.0.tgz#37595b1f16ec7f228d698590e78eeed18ff218ae"
+ integrity sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-context@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.0.tgz#f38e30c5859a9fb5e9aa9a9da452ee3ed9e0aee0"
+ integrity sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-direction@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.0.0.tgz#a2e0b552352459ecf96342c79949dd833c1e6e45"
+ integrity sha512-2HV05lGUgYcA6xgLQ4BKPDmtL+QbIZYH5fCOTAOOcJ5O0QbWS3i9lKaurLzliYUDhORI2Qr3pyjhJh44lKA3rQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-dismissable-layer@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.2.tgz#f04d1061bddf00b1ca304148516b9ddc62e45fb2"
+ integrity sha512-WjJzMrTWROozDqLB0uRWYvj4UuXsM/2L19EmQ3Au+IJWqwvwq9Bwd+P8ivo0Deg9JDPArR1I6MbWNi1CmXsskg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.0"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+ "@radix-ui/react-use-escape-keydown" "1.0.2"
+
+"@radix-ui/react-focus-guards@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.0.tgz#339c1c69c41628c1a5e655f15f7020bf11aa01fa"
+ integrity sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-focus-scope@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.1.tgz#faea8c25f537c5a5c38c50914b63722db0e7f951"
+ integrity sha512-Ej2MQTit8IWJiS2uuujGUmxXjF/y5xZptIIQnyd2JHLwtV0R2j9NRVoRj/1j/gJ7e3REdaBw4Hjf4a1ImhkZcQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+
+"@radix-ui/react-id@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.0.tgz#8d43224910741870a45a8c9d092f25887bb6d11e"
+ integrity sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/react-popover@1.0.3":
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-popover/-/react-popover-1.0.3.tgz#65ae2ee1fca2d7fd750308549eb8e0857c6160fe"
+ integrity sha512-YwedSukfWsyJs3/yP3yXUq44k4/JBe3jqU63Z8v2i19qZZ3dsx32oma17ztgclWPNuqp3A+Xa9UiDlZHyVX8Vg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.0"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-dismissable-layer" "1.0.2"
+ "@radix-ui/react-focus-guards" "1.0.0"
+ "@radix-ui/react-focus-scope" "1.0.1"
+ "@radix-ui/react-id" "1.0.0"
+ "@radix-ui/react-popper" "1.1.0"
+ "@radix-ui/react-portal" "1.0.1"
+ "@radix-ui/react-presence" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-slot" "1.0.1"
+ "@radix-ui/react-use-controllable-state" "1.0.0"
+ aria-hidden "^1.1.1"
+ react-remove-scroll "2.5.5"
+
+"@radix-ui/react-popper@1.1.0":
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.1.0.tgz#2be7e4c0cd4581f54277ca33a981c9037d2a8e60"
+ integrity sha512-07U7jpI0dZcLRAxT7L9qs6HecSoPhDSJybF7mEGHJDBDv+ZoGCvIlva0s+WxMXwJEav+ckX3hAlXBtnHmuvlCQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@floating-ui/react-dom" "0.7.2"
+ "@radix-ui/react-arrow" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+ "@radix-ui/react-use-rect" "1.0.0"
+ "@radix-ui/react-use-size" "1.0.0"
+ "@radix-ui/rect" "1.0.0"
+
+"@radix-ui/react-portal@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.1.tgz#169c5a50719c2bb0079cf4c91a27aa6d37e5dd33"
+ integrity sha512-NY2vUWI5WENgAT1nfC6JS7RU5xRYBfjZVLq0HmgEN1Ezy3rk/UruMV4+Rd0F40PEaFC5SrLS1ixYvcYIQrb4Ig==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-primitive" "1.0.1"
+
+"@radix-ui/react-presence@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.0.tgz#814fe46df11f9a468808a6010e3f3ca7e0b2e84a"
+ integrity sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/react-primitive@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.1.tgz#c1ebcce283dd2f02e4fbefdaa49d1cb13dbc990a"
+ integrity sha512-fHbmislWVkZaIdeF6GZxF0A/NH/3BjrGIYj+Ae6eTmTCr7EB0RQAAVEiqsXK6p3/JcRqVSBQoceZroj30Jj3XA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-slot" "1.0.1"
+
+"@radix-ui/react-roving-focus@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.2.tgz#d8ac2e3b8006697bdfc2b0eb06bef7e15b6245de"
+ integrity sha512-HLK+CqD/8pN6GfJm3U+cqpqhSKYAWiOJDe+A+8MfxBnOue39QEeMa43csUn2CXCHQT0/mewh1LrrG4tfkM9DMA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.0"
+ "@radix-ui/react-collection" "1.0.1"
+ "@radix-ui/react-compose-refs" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-direction" "1.0.0"
+ "@radix-ui/react-id" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+ "@radix-ui/react-use-controllable-state" "1.0.0"
+
+"@radix-ui/react-slot@1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.1.tgz#e7868c669c974d649070e9ecbec0b367ee0b4d81"
+ integrity sha512-avutXAFL1ehGvAXtPquu0YK5oz6ctS474iM3vNGQIkswrVhdrS52e3uoMQBzZhNRAIE0jBnUyXWNmSjGHhCFcw==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-compose-refs" "1.0.0"
+
+"@radix-ui/react-tabs@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.0.2.tgz#8f5ec73ca41b151a413bdd6e00553408ff34ce07"
+ integrity sha512-gOUwh+HbjCuL0UCo8kZ+kdUEG8QtpdO4sMQduJ34ZEz0r4922g9REOBM+vIsfwtGxSug4Yb1msJMJYN2Bk8TpQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/primitive" "1.0.0"
+ "@radix-ui/react-context" "1.0.0"
+ "@radix-ui/react-direction" "1.0.0"
+ "@radix-ui/react-id" "1.0.0"
+ "@radix-ui/react-presence" "1.0.0"
+ "@radix-ui/react-primitive" "1.0.1"
+ "@radix-ui/react-roving-focus" "1.0.2"
+ "@radix-ui/react-use-controllable-state" "1.0.0"
+
+"@radix-ui/react-use-callback-ref@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.0.tgz#9e7b8b6b4946fe3cbe8f748c82a2cce54e7b6a90"
+ integrity sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-controllable-state@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.0.tgz#a64deaafbbc52d5d407afaa22d493d687c538b7f"
+ integrity sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+
+"@radix-ui/react-use-escape-keydown@1.0.2":
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.2.tgz#09ab6455ab240b4f0a61faf06d4e5132c4d639f6"
+ integrity sha512-DXGim3x74WgUv+iMNCF+cAo8xUHHeqvjx8zs7trKf+FkQKPQXLk2sX7Gx1ysH7Q76xCpZuxIJE7HLPxRE+Q+GA==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-callback-ref" "1.0.0"
+
+"@radix-ui/react-use-layout-effect@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.0.tgz#2fc19e97223a81de64cd3ba1dc42ceffd82374dc"
+ integrity sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
+"@radix-ui/react-use-rect@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.0.0.tgz#b040cc88a4906b78696cd3a32b075ed5b1423b3e"
+ integrity sha512-TB7pID8NRMEHxb/qQJpvSt3hQU4sqNPM1VCTjTRjEOa7cEop/QMuq8S6fb/5Tsz64kqSvB9WnwsDHtjnrM9qew==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/rect" "1.0.0"
+
+"@radix-ui/react-use-size@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.0.0.tgz#a0b455ac826749419f6354dc733e2ca465054771"
+ integrity sha512-imZ3aYcoYCKhhgNpkNDh/aTiU05qw9hX+HHI1QDBTyIlcFjgeFlKKySNGMwTp7nYFLQg/j0VA2FmCY4WPDDHMg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+ "@radix-ui/react-use-layout-effect" "1.0.0"
+
+"@radix-ui/rect@1.0.0":
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.0.0.tgz#0dc8e6a829ea2828d53cbc94b81793ba6383bf3c"
+ integrity sha512-d0O68AYy/9oeEy1DdC07bz1/ZXX+DqCskRd3i4JzLSTXwefzaepQrKjXC7aNM8lTHjFLDO0pDgaEiQ7jEk+HVg==
+ dependencies:
+ "@babel/runtime" "^7.13.10"
+
"@rollup/plugin-babel@^5.2.0":
version "5.3.1"
resolved "https://registry.yarnpkg.com/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz#04bc0608f4aa4b2e4b1aebf284344d0f68fda283"
@@ -2194,6 +2246,15 @@
estree-walker "^1.0.1"
picomatch "^2.2.2"
+"@rollup/pluginutils@^5.0.2":
+ version "5.0.2"
+ resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33"
+ integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==
+ dependencies:
+ "@types/estree" "^1.0.0"
+ estree-walker "^2.0.2"
+ picomatch "^2.3.1"
+
"@rushstack/eslint-patch@^1.1.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz#8be36a1f66f3265389e90b5f9c9962146758f728"
@@ -2261,24 +2322,10 @@
"@sentry/types" "6.2.5"
tslib "^1.9.3"
-"@sinclair/typebox@^0.24.1":
- version "0.24.51"
- resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f"
- integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==
-
-"@sinonjs/commons@^1.7.0":
- version "1.8.3"
- resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
- integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
- dependencies:
- type-detect "4.0.8"
-
-"@sinonjs/fake-timers@^8.0.1":
- version "8.1.0"
- resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7"
- integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
- dependencies:
- "@sinonjs/commons" "^1.7.0"
+"@sinclair/typebox@^0.25.16":
+ version "0.25.24"
+ resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.25.24.tgz#8c7688559979f7079aacaf31aa881c3aa410b718"
+ integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
"@surma/rollup-plugin-off-main-thread@^2.2.3":
version "2.2.3"
@@ -2290,117 +2337,97 @@
magic-string "^0.25.0"
string.prototype.matchall "^4.0.6"
-"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz#81ef61947bb268eb9d50523446f9c638fb355906"
- integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==
+"@svgr/babel-plugin-add-jsx-attribute@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz#74a5d648bd0347bda99d82409d87b8ca80b9a1ba"
+ integrity sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==
-"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz#6b2c770c95c874654fd5e1d5ef475b78a0a962ef"
- integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==
+"@svgr/babel-plugin-remove-jsx-attribute@*":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz#69177f7937233caca3a1afb051906698f2f59186"
+ integrity sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==
-"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz#25621a8915ed7ad70da6cea3d0a6dbc2ea933efd"
- integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==
+"@svgr/babel-plugin-remove-jsx-empty-expression@*":
+ version "8.0.0"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz#c2c48104cfd7dcd557f373b70a56e9e3bdae1d44"
+ integrity sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==
-"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1":
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz#0b221fc57f9fcd10e91fe219e2cd0dd03145a897"
- integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==
+"@svgr/babel-plugin-replace-jsx-attribute-value@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz#fb9d22ea26d2bc5e0a44b763d4c46d5d3f596c60"
+ integrity sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==
-"@svgr/babel-plugin-svg-dynamic-title@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz#139b546dd0c3186b6e5db4fefc26cb0baea729d7"
- integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==
+"@svgr/babel-plugin-svg-dynamic-title@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz#01b2024a2b53ffaa5efceaa0bf3e1d5a4c520ce4"
+ integrity sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==
-"@svgr/babel-plugin-svg-em-dimensions@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz#6543f69526632a133ce5cabab965deeaea2234a0"
- integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==
+"@svgr/babel-plugin-svg-em-dimensions@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz#dd3fa9f5b24eb4f93bcf121c3d40ff5facecb217"
+ integrity sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==
-"@svgr/babel-plugin-transform-react-native-svg@^5.4.0":
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz#00bf9a7a73f1cad3948cdab1f8dfb774750f8c80"
- integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==
+"@svgr/babel-plugin-transform-react-native-svg@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz#1d8e945a03df65b601551097d8f5e34351d3d305"
+ integrity sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==
-"@svgr/babel-plugin-transform-svg-component@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz#583a5e2a193e214da2f3afeb0b9e8d3250126b4a"
- integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==
+"@svgr/babel-plugin-transform-svg-component@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz#48620b9e590e25ff95a80f811544218d27f8a250"
+ integrity sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==
-"@svgr/babel-preset@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-5.5.0.tgz#8af54f3e0a8add7b1e2b0fcd5a882c55393df327"
- integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==
+"@svgr/babel-preset@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/babel-preset/-/babel-preset-6.5.1.tgz#b90de7979c8843c5c580c7e2ec71f024b49eb828"
+ integrity sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==
dependencies:
- "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0"
- "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0"
- "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1"
- "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1"
- "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0"
- "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0"
- "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0"
- "@svgr/babel-plugin-transform-svg-component" "^5.5.0"
+ "@svgr/babel-plugin-add-jsx-attribute" "^6.5.1"
+ "@svgr/babel-plugin-remove-jsx-attribute" "*"
+ "@svgr/babel-plugin-remove-jsx-empty-expression" "*"
+ "@svgr/babel-plugin-replace-jsx-attribute-value" "^6.5.1"
+ "@svgr/babel-plugin-svg-dynamic-title" "^6.5.1"
+ "@svgr/babel-plugin-svg-em-dimensions" "^6.5.1"
+ "@svgr/babel-plugin-transform-react-native-svg" "^6.5.1"
+ "@svgr/babel-plugin-transform-svg-component" "^6.5.1"
-"@svgr/core@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/core/-/core-5.5.0.tgz#82e826b8715d71083120fe8f2492ec7d7874a579"
- integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==
+"@svgr/core@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/core/-/core-6.5.1.tgz#d3e8aa9dbe3fbd747f9ee4282c1c77a27410488a"
+ integrity sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==
dependencies:
- "@svgr/plugin-jsx" "^5.5.0"
+ "@babel/core" "^7.19.6"
+ "@svgr/babel-preset" "^6.5.1"
+ "@svgr/plugin-jsx" "^6.5.1"
camelcase "^6.2.0"
- cosmiconfig "^7.0.0"
+ cosmiconfig "^7.0.1"
-"@svgr/hast-util-to-babel-ast@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz#5ee52a9c2533f73e63f8f22b779f93cd432a5461"
- integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==
+"@svgr/hast-util-to-babel-ast@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz#81800bd09b5bcdb968bf6ee7c863d2288fdb80d2"
+ integrity sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==
dependencies:
- "@babel/types" "^7.12.6"
+ "@babel/types" "^7.20.0"
+ entities "^4.4.0"
-"@svgr/plugin-jsx@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz#1aa8cd798a1db7173ac043466d7b52236b369000"
- integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==
+"@svgr/plugin-jsx@^6.5.1":
+ version "6.5.1"
+ resolved "https://registry.yarnpkg.com/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz#0e30d1878e771ca753c94e69581c7971542a7072"
+ integrity sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==
dependencies:
- "@babel/core" "^7.12.3"
- "@svgr/babel-preset" "^5.5.0"
- "@svgr/hast-util-to-babel-ast" "^5.5.0"
- svg-parser "^2.0.2"
-
-"@svgr/plugin-svgo@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz#02da55d85320549324e201c7b2e53bf431fcc246"
- integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==
- dependencies:
- cosmiconfig "^7.0.0"
- deepmerge "^4.2.2"
- svgo "^1.2.2"
-
-"@svgr/webpack@^5.5.0":
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/@svgr/webpack/-/webpack-5.5.0.tgz#aae858ee579f5fa8ce6c3166ef56c6a1b381b640"
- integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==
- dependencies:
- "@babel/core" "^7.12.3"
- "@babel/plugin-transform-react-constant-elements" "^7.12.1"
- "@babel/preset-env" "^7.12.1"
- "@babel/preset-react" "^7.12.5"
- "@svgr/core" "^5.5.0"
- "@svgr/plugin-jsx" "^5.5.0"
- "@svgr/plugin-svgo" "^5.5.0"
- loader-utils "^2.0.0"
+ "@babel/core" "^7.19.6"
+ "@svgr/babel-preset" "^6.5.1"
+ "@svgr/hast-util-to-babel-ast" "^6.5.1"
+ svg-parser "^2.0.4"
"@testing-library/dom@^8.0.0":
- version "8.19.0"
- resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.19.0.tgz#bd3f83c217ebac16694329e413d9ad5fdcfd785f"
- integrity sha512-6YWYPPpxG3e/xOo6HIWwB/58HukkwIVTOaZ0VwdMVjhRUX/01E4FtQbck9GazOOj7MXHc5RBzMrU86iBJHbI+A==
+ version "8.20.0"
+ resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.20.0.tgz#914aa862cef0f5e89b98cc48e3445c4c921010f6"
+ integrity sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
- "@types/aria-query" "^4.2.0"
+ "@types/aria-query" "^5.0.1"
aria-query "^5.0.0"
chalk "^4.1.0"
dom-accessibility-api "^0.5.9"
@@ -2436,170 +2463,44 @@
resolved "https://registry.yarnpkg.com/@tldraw/vec/-/vec-1.7.1.tgz#5bfac9a56e11ad890cbd1c620293d7fcb23bf1ea"
integrity sha512-qM6Z9RvkLFFEzr91mmsA4HI14msyDgDDOu36csIzG5BYu2bFmEz5siQ8WntHgDtUjzJHP+VSSOTbAXhklEZHLA==
-"@tootallnate/once@1":
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82"
- integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+"@tootallnate/once@2":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf"
+ integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
-"@trysound/sax@0.2.0":
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
- integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+"@types/aria-query@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-5.0.1.tgz#3286741fb8f1e1580ac28784add4c7a1d49bdfbc"
+ integrity sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==
-"@types/aria-query@^4.2.0":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@types/aria-query/-/aria-query-4.2.2.tgz#ed4e0ad92306a704f9fb132a0cfcf77486dbe2bc"
- integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
-
-"@types/babel__core@^7.0.0":
- version "7.1.19"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.19.tgz#7b497495b7d1b4812bdb9d02804d0576f43ee460"
- integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
+"@types/chai-subset@^1.3.3":
+ version "1.3.3"
+ resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94"
+ integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==
dependencies:
- "@babel/parser" "^7.1.0"
- "@babel/types" "^7.0.0"
- "@types/babel__generator" "*"
- "@types/babel__template" "*"
- "@types/babel__traverse" "*"
+ "@types/chai" "*"
-"@types/babel__core@^7.1.14":
- version "7.1.20"
- resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.20.tgz#e168cdd612c92a2d335029ed62ac94c95b362359"
- integrity sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==
- dependencies:
- "@babel/parser" "^7.1.0"
- "@babel/types" "^7.0.0"
- "@types/babel__generator" "*"
- "@types/babel__template" "*"
- "@types/babel__traverse" "*"
-
-"@types/babel__generator@*":
- version "7.6.4"
- resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.4.tgz#1f20ce4c5b1990b37900b63f050182d28c2439b7"
- integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
- dependencies:
- "@babel/types" "^7.0.0"
-
-"@types/babel__template@*":
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.1.tgz#3d1a48fd9d6c0edfd56f2ff578daed48f36c8969"
- integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
- dependencies:
- "@babel/parser" "^7.1.0"
- "@babel/types" "^7.0.0"
-
-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6":
- version "7.18.2"
- resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.18.2.tgz#235bf339d17185bdec25e024ca19cce257cc7309"
- integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==
- dependencies:
- "@babel/types" "^7.3.0"
-
-"@types/body-parser@*":
- version "1.19.2"
- resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
- integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
- dependencies:
- "@types/connect" "*"
- "@types/node" "*"
-
-"@types/bonjour@^3.5.9":
- version "3.5.10"
- resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
- integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
- dependencies:
- "@types/node" "*"
+"@types/chai@*", "@types/chai@^4.3.5":
+ version "4.3.5"
+ resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.5.tgz#ae69bcbb1bebb68c4ac0b11e9d8ed04526b3562b"
+ integrity sha512-mEo1sAde+UCE6b2hxn332f1g1E8WfYRu6p5SvTKr2ZKC1f7gFJXk4h5PyGP9Dt6gCaG8y8XhwnXWC6Iy2cmBng==
"@types/chai@4.3.0":
version "4.3.0"
resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.0.tgz#23509ebc1fa32f1b4d50d6a66c4032d5b8eaabdc"
integrity sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==
-"@types/connect-history-api-fallback@^1.3.5":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
- integrity sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==
- dependencies:
- "@types/express-serve-static-core" "*"
- "@types/node" "*"
-
-"@types/connect@*":
- version "3.4.35"
- resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
- integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
- dependencies:
- "@types/node" "*"
-
-"@types/eslint-scope@^3.7.3":
- version "3.7.4"
- resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
- integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==
- dependencies:
- "@types/eslint" "*"
- "@types/estree" "*"
-
-"@types/eslint@*", "@types/eslint@^7.29.0 || ^8.4.1":
- version "8.4.10"
- resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.4.10.tgz#19731b9685c19ed1552da7052b6f668ed7eb64bb"
- integrity sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==
- dependencies:
- "@types/estree" "*"
- "@types/json-schema" "*"
-
-"@types/estree@*":
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
- integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
-
"@types/estree@0.0.39":
version "0.0.39"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
-"@types/estree@^0.0.51":
- version "0.0.51"
- resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
- integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
+"@types/estree@^1.0.0":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194"
+ integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==
-"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
- version "4.17.31"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz#a1139efeab4e7323834bb0226e62ac019f474b2f"
- integrity sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==
- dependencies:
- "@types/node" "*"
- "@types/qs" "*"
- "@types/range-parser" "*"
-
-"@types/express@*", "@types/express@^4.17.13":
- version "4.17.14"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.14.tgz#143ea0557249bc1b3b54f15db4c81c3d4eb3569c"
- integrity sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==
- dependencies:
- "@types/body-parser" "*"
- "@types/express-serve-static-core" "^4.17.18"
- "@types/qs" "*"
- "@types/serve-static" "*"
-
-"@types/graceful-fs@^4.1.2":
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15"
- integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
- dependencies:
- "@types/node" "*"
-
-"@types/html-minifier-terser@^6.0.0":
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#4fc33a00c1d0c16987b1a20cf92d20614c55ac35"
- integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
-
-"@types/http-proxy@^1.17.8":
- version "1.17.9"
- resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a"
- integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==
- dependencies:
- "@types/node" "*"
-
-"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
+"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
version "2.0.4"
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44"
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
@@ -2619,9 +2520,9 @@
"@types/istanbul-lib-report" "*"
"@types/jest@*":
- version "29.2.0"
- resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.2.0.tgz#fa98e08b46ab119f1a74a9552c48c589f5378a96"
- integrity sha512-KO7bPV21d65PKwv3LLsD8Jn3E05pjNjRZvkm+YTacWhVmykAb07wW6IkZUmQAltwQafNcDUEUrMO2h3jeBSisg==
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.0.tgz#337b90bbcfe42158f39c2fb5619ad044bbb518ac"
+ integrity sha512-3Emr5VOl/aoBwnWcH/EFQvlSAmjV+XtV9GGu5mwdYew5vhQh0IUZx/60x0TzHDu09Bi7HMx10t/namdJw5QIcg==
dependencies:
expect "^29.0.0"
pretty-format "^29.0.0"
@@ -2634,7 +2535,7 @@
jest-diff "^27.0.0"
pretty-format "^27.0.0"
-"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
+"@types/json-schema@^7.0.9":
version "7.0.11"
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
@@ -2652,24 +2553,19 @@
"@types/lodash" "*"
"@types/lodash@*":
- version "4.14.186"
- resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97"
- integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw==
+ version "4.14.192"
+ resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.192.tgz#5790406361a2852d332d41635d927f1600811285"
+ integrity sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==
"@types/long@^4.0.1":
version "4.0.2"
resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.2.tgz#b74129719fc8d11c01868010082d483b7545591a"
integrity sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==
-"@types/mime@*":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
- integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
-
"@types/node@*", "@types/node@>=12.12.47", "@types/node@>=13.7.0":
- version "18.11.8"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.8.tgz#16d222a58d4363a2a359656dd20b28414de5d265"
- integrity sha512-uGwPWlE0Hj972KkHtCDVwZ8O39GmyjfMane1Z3GUBGGnkZ2USDq7SxLpVIiIHpweY9DS0QTDH0Nw7RNBsAAZ5A==
+ version "18.15.11"
+ resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.11.tgz#b3b790f09cb1696cffcec605de025b088fa4225f"
+ integrity sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==
"@types/pako@1.0.3":
version "1.0.3"
@@ -2686,31 +2582,11 @@
resolved "https://registry.yarnpkg.com/@types/pica/-/pica-5.1.3.tgz#5ef64529a1f83f7d6586a8bf75a8a00be32aca02"
integrity sha512-13SEyETRE5psd9bE0AmN+0M1tannde2fwHfLVaVIljkbL9V0OfFvKwCicyeDvVYLkmjQWEydbAlsDsmjrdyTOg==
-"@types/prettier@^2.1.5":
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.1.tgz#dfd20e2dc35f027cdd6c1908e80a5ddc7499670e"
- integrity sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==
-
"@types/prop-types@*":
version "15.7.5"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
-"@types/q@^1.5.1":
- version "1.5.5"
- resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.5.tgz#75a2a8e7d8ab4b230414505d92335d1dcb53a6df"
- integrity sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==
-
-"@types/qs@*":
- version "6.9.7"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
- integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
-
-"@types/range-parser@*":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
- integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-
"@types/react-dom@18.0.6":
version "18.0.6"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.6.tgz#36652900024842b74607a17786b6662dd1e103a1"
@@ -2719,16 +2595,16 @@
"@types/react" "*"
"@types/react-dom@<18.0.0":
- version "17.0.18"
- resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.18.tgz#8f7af38f5d9b42f79162eea7492e5a1caff70dc2"
- integrity sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==
+ version "17.0.19"
+ resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.19.tgz#36feef3aa35d045cacd5ed60fe0eef5272f19492"
+ integrity sha512-PiYG40pnQRdPHnlf7tZnp0aQ6q9tspYr72vD61saO6zFCybLfMqwUCN0va1/P+86DXn18ZWeW30Bk7xlC5eEAQ==
dependencies:
"@types/react" "^17"
"@types/react@*":
- version "18.0.24"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.24.tgz#2f79ed5b27f08d05107aab45c17919754cc44c20"
- integrity sha512-wRJWT6ouziGUy+9uX0aW4YOJxAY0bG6/AOk5AW5QSvZqI7dk6VBIbXvcVgIw/W5Jrl24f77df98GEKTJGOLx7Q==
+ version "18.0.34"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.34.tgz#e553444a578f023e6e1ac499514688fb80b0a984"
+ integrity sha512-NO1UO8941541CJl1BeOXi8a9dNKFK09Gnru5ZJqkm4Q3/WoQJtHvmwt0VX0SB9YCEwe7TfSSxDuaNmx6H2BAIQ==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -2744,9 +2620,9 @@
csstype "^3.0.2"
"@types/react@^17":
- version "17.0.52"
- resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.52.tgz#10d8b907b5c563ac014a541f289ae8eaa9bf2e9b"
- integrity sha512-vwk8QqVODi0VaZZpDXQCmEmiOuyjEFPY7Ttaw5vjM112LOq37yz1CDJGrRJwA1fYEq4Iitd5rnjd1yWAc/bT+A==
+ version "17.0.57"
+ resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.57.tgz#341152f222222075caf020ae6e0e68b9b835404c"
+ integrity sha512-e4msYpu5QDxzNrXDHunU/VPyv2M1XemGG/p7kfCjUiPtlLDCWLGQfgAMng6YyisWYxZ09mYdQlmMnyS0NfZdEg==
dependencies:
"@types/prop-types" "*"
"@types/scheduler" "*"
@@ -2764,48 +2640,21 @@
dependencies:
"@types/node" "*"
-"@types/retry@0.12.0":
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
- integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
-
"@types/scheduler@*":
- version "0.16.2"
- resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
- integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
+ version "0.16.3"
+ resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
+ integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
"@types/semver@^7.3.12":
version "7.3.13"
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
-"@types/serve-index@^1.9.1":
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
- integrity sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==
- dependencies:
- "@types/express" "*"
-
-"@types/serve-static@*", "@types/serve-static@^1.13.10":
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
- integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
- dependencies:
- "@types/mime" "*"
- "@types/node" "*"
-
"@types/socket.io-client@1.4.36":
version "1.4.36"
resolved "https://registry.yarnpkg.com/@types/socket.io-client/-/socket.io-client-1.4.36.tgz#e4f1ca065f84c20939e9850e70222202bd76ff3f"
integrity sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag==
-"@types/sockjs@^0.3.33":
- version "0.3.33"
- resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
- integrity sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==
- dependencies:
- "@types/node" "*"
-
"@types/stack-utils@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
@@ -2819,324 +2668,210 @@
"@types/jest" "*"
"@types/trusted-types@^2.0.2":
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.2.tgz#fc25ad9943bcac11cceb8168db4f275e0e72e756"
- integrity sha512-F5DIZ36YVLE+PN+Zwws4kJogq47hNgX3Nx6WyDJ3kcplxyke3XIzB8uK5n/Lpm1HBsbGzd6nmGehL8cPekP+Tg==
-
-"@types/ws@^8.5.1":
- version "8.5.3"
- resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
- integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
- dependencies:
- "@types/node" "*"
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/@types/trusted-types/-/trusted-types-2.0.3.tgz#a136f83b0758698df454e328759dbd3d44555311"
+ integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==
"@types/yargs-parser@*":
version "21.0.0"
resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b"
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
-"@types/yargs@^16.0.0":
- version "16.0.4"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977"
- integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==
- dependencies:
- "@types/yargs-parser" "*"
-
"@types/yargs@^17.0.8":
- version "17.0.13"
- resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.13.tgz#34cced675ca1b1d51fcf4d34c3c6f0fa142a5c76"
- integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==
+ version "17.0.24"
+ resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902"
+ integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==
dependencies:
"@types/yargs-parser" "*"
"@typescript-eslint/eslint-plugin@^5.5.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz#4a5248eb31b454715ddfbf8cfbf497529a0a78bc"
- integrity sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.58.0.tgz#b1d4b0ad20243269d020ef9bbb036a40b0849829"
+ integrity sha512-vxHvLhH0qgBd3/tW6/VccptSfc8FxPQIkmNTVLWcCOVqSBvqpnKkBTYrhcGlXfSnd78azwe+PsjYFj0X34/njA==
dependencies:
- "@typescript-eslint/scope-manager" "5.43.0"
- "@typescript-eslint/type-utils" "5.43.0"
- "@typescript-eslint/utils" "5.43.0"
+ "@eslint-community/regexpp" "^4.4.0"
+ "@typescript-eslint/scope-manager" "5.58.0"
+ "@typescript-eslint/type-utils" "5.58.0"
+ "@typescript-eslint/utils" "5.58.0"
debug "^4.3.4"
+ grapheme-splitter "^1.0.4"
ignore "^5.2.0"
natural-compare-lite "^1.4.0"
- regexpp "^3.2.0"
semver "^7.3.7"
tsutils "^3.21.0"
"@typescript-eslint/experimental-utils@^5.0.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.43.0.tgz#2fbea6ea89e59e780e42ca65bc39fc830db95ed4"
- integrity sha512-WkT637CumTJbm/hRbFfnHBMgfUYTKr08LitVsD7gQId7bi6rnkx3pu3jac67lmp5ObW4MpJ9SNFZAIOUB/Qbsw==
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-5.58.0.tgz#157af1376add1a945c4559eef25114f0a29f49e1"
+ integrity sha512-LA/sRPaynZlrlYxdefrZbMx8dqs/1Kc0yNG+XOk5CwwZx7tTv263ix3AJNioF0YBVt7hADpAUR20owl6pv4MIQ==
dependencies:
- "@typescript-eslint/utils" "5.43.0"
+ "@typescript-eslint/utils" "5.58.0"
"@typescript-eslint/parser@^5.5.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.43.0.tgz#9c86581234b88f2ba406f0b99a274a91c11630fd"
- integrity sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.58.0.tgz#2ac4464cf48bef2e3234cb178ede5af352dddbc6"
+ integrity sha512-ixaM3gRtlfrKzP8N6lRhBbjTow1t6ztfBvQNGuRM8qH1bjFFXIJ35XY+FC0RRBKn3C6cT+7VW1y8tNm7DwPHDQ==
dependencies:
- "@typescript-eslint/scope-manager" "5.43.0"
- "@typescript-eslint/types" "5.43.0"
- "@typescript-eslint/typescript-estree" "5.43.0"
+ "@typescript-eslint/scope-manager" "5.58.0"
+ "@typescript-eslint/types" "5.58.0"
+ "@typescript-eslint/typescript-estree" "5.58.0"
debug "^4.3.4"
-"@typescript-eslint/scope-manager@5.43.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz#566e46303392014d5d163704724872e1f2dd3c15"
- integrity sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==
+"@typescript-eslint/scope-manager@5.58.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.58.0.tgz#5e023a48352afc6a87be6ce3c8e763bc9e2f0bc8"
+ integrity sha512-b+w8ypN5CFvrXWQb9Ow9T4/6LC2MikNf1viLkYTiTbkQl46CnR69w7lajz1icW0TBsYmlpg+mRzFJ4LEJ8X9NA==
dependencies:
- "@typescript-eslint/types" "5.43.0"
- "@typescript-eslint/visitor-keys" "5.43.0"
+ "@typescript-eslint/types" "5.58.0"
+ "@typescript-eslint/visitor-keys" "5.58.0"
-"@typescript-eslint/type-utils@5.43.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz#91110fb827df5161209ecca06f70d19a96030be6"
- integrity sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==
+"@typescript-eslint/type-utils@5.58.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.58.0.tgz#f7d5b3971483d4015a470d8a9e5b8a7d10066e52"
+ integrity sha512-FF5vP/SKAFJ+LmR9PENql7fQVVgGDOS+dq3j+cKl9iW/9VuZC/8CFmzIP0DLKXfWKpRHawJiG70rVH+xZZbp8w==
dependencies:
- "@typescript-eslint/typescript-estree" "5.43.0"
- "@typescript-eslint/utils" "5.43.0"
+ "@typescript-eslint/typescript-estree" "5.58.0"
+ "@typescript-eslint/utils" "5.58.0"
debug "^4.3.4"
tsutils "^3.21.0"
-"@typescript-eslint/types@5.43.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.43.0.tgz#e4ddd7846fcbc074325293515fa98e844d8d2578"
- integrity sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==
+"@typescript-eslint/types@5.58.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.58.0.tgz#54c490b8522c18986004df7674c644ffe2ed77d8"
+ integrity sha512-JYV4eITHPzVQMnHZcYJXl2ZloC7thuUHrcUmxtzvItyKPvQ50kb9QXBkgNAt90OYMqwaodQh2kHutWZl1fc+1g==
-"@typescript-eslint/typescript-estree@5.43.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz#b6883e58ba236a602c334be116bfc00b58b3b9f2"
- integrity sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==
+"@typescript-eslint/typescript-estree@5.58.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.58.0.tgz#4966e6ff57eaf6e0fce2586497edc097e2ab3e61"
+ integrity sha512-cRACvGTodA+UxnYM2uwA2KCwRL7VAzo45syNysqlMyNyjw0Z35Icc9ihPJZjIYuA5bXJYiJ2YGUB59BqlOZT1Q==
dependencies:
- "@typescript-eslint/types" "5.43.0"
- "@typescript-eslint/visitor-keys" "5.43.0"
+ "@typescript-eslint/types" "5.58.0"
+ "@typescript-eslint/visitor-keys" "5.58.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
semver "^7.3.7"
tsutils "^3.21.0"
-"@typescript-eslint/utils@5.43.0", "@typescript-eslint/utils@^5.13.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.43.0.tgz#00fdeea07811dbdf68774a6f6eacfee17fcc669f"
- integrity sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==
+"@typescript-eslint/utils@5.58.0", "@typescript-eslint/utils@^5.43.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.58.0.tgz#430d7c95f23ec457b05be5520c1700a0dfd559d5"
+ integrity sha512-gAmLOTFXMXOC+zP1fsqm3VceKSBQJNzV385Ok3+yzlavNHZoedajjS4UyS21gabJYcobuigQPs/z71A9MdJFqQ==
dependencies:
+ "@eslint-community/eslint-utils" "^4.2.0"
"@types/json-schema" "^7.0.9"
"@types/semver" "^7.3.12"
- "@typescript-eslint/scope-manager" "5.43.0"
- "@typescript-eslint/types" "5.43.0"
- "@typescript-eslint/typescript-estree" "5.43.0"
+ "@typescript-eslint/scope-manager" "5.58.0"
+ "@typescript-eslint/types" "5.58.0"
+ "@typescript-eslint/typescript-estree" "5.58.0"
eslint-scope "^5.1.1"
- eslint-utils "^3.0.0"
semver "^7.3.7"
-"@typescript-eslint/visitor-keys@5.43.0":
- version "5.43.0"
- resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz#cbbdadfdfea385310a20a962afda728ea106befa"
- integrity sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==
+"@typescript-eslint/visitor-keys@5.58.0":
+ version "5.58.0"
+ resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.58.0.tgz#eb9de3a61d2331829e6761ce7fd13061781168b4"
+ integrity sha512-/fBraTlPj0jwdyTwLyrRTxv/3lnU2H96pNTVM6z3esTWLtA5MZ9ghSMJ7Rb+TtUAdtEw9EyJzJ0EydIMKxQ9gA==
dependencies:
- "@typescript-eslint/types" "5.43.0"
+ "@typescript-eslint/types" "5.58.0"
eslint-visitor-keys "^3.3.0"
-"@webassemblyjs/ast@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
- integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==
+"@vitejs/plugin-react@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz#d1091f535eab8b83d6e74034d01e27d73c773240"
+ integrity sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==
dependencies:
- "@webassemblyjs/helper-numbers" "1.11.1"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
+ "@babel/core" "^7.20.12"
+ "@babel/plugin-transform-react-jsx-self" "^7.18.6"
+ "@babel/plugin-transform-react-jsx-source" "^7.19.6"
+ magic-string "^0.27.0"
+ react-refresh "^0.14.0"
-"@webassemblyjs/floating-point-hex-parser@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
- integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==
-
-"@webassemblyjs/helper-api-error@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
- integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==
-
-"@webassemblyjs/helper-buffer@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
- integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==
-
-"@webassemblyjs/helper-numbers@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
- integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==
+"@vitest/expect@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.32.2.tgz#8111f6ab1ff3b203efbe3a25e8bb2d160ce4b720"
+ integrity sha512-6q5yzweLnyEv5Zz1fqK5u5E83LU+gOMVBDuxBl2d2Jfx1BAp5M+rZgc5mlyqdnxquyoiOXpXmFNkcGcfFnFH3Q==
dependencies:
- "@webassemblyjs/floating-point-hex-parser" "1.11.1"
- "@webassemblyjs/helper-api-error" "1.11.1"
- "@xtuc/long" "4.2.2"
+ "@vitest/spy" "0.32.2"
+ "@vitest/utils" "0.32.2"
+ chai "^4.3.7"
-"@webassemblyjs/helper-wasm-bytecode@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
- integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==
-
-"@webassemblyjs/helper-wasm-section@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
- integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==
+"@vitest/runner@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/runner/-/runner-0.32.2.tgz#18dd979ce4e8766bcc90948d11b4c8ae6ed90b89"
+ integrity sha512-06vEL0C1pomOEktGoLjzZw+1Fb+7RBRhmw/06WkDrd1akkT9i12su0ku+R/0QM69dfkIL/rAIDTG+CSuQVDcKw==
dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/helper-buffer" "1.11.1"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
- "@webassemblyjs/wasm-gen" "1.11.1"
+ "@vitest/utils" "0.32.2"
+ concordance "^5.0.4"
+ p-limit "^4.0.0"
+ pathe "^1.1.0"
-"@webassemblyjs/ieee754@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
- integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==
+"@vitest/snapshot@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/snapshot/-/snapshot-0.32.2.tgz#500b6453e88e4c50a0aded39839352c16b519b9e"
+ integrity sha512-JwhpeH/PPc7GJX38vEfCy9LtRzf9F4er7i4OsAJyV7sjPwjj+AIR8cUgpMTWK4S3TiamzopcTyLsZDMuldoi5A==
dependencies:
- "@xtuc/ieee754" "^1.2.0"
+ magic-string "^0.30.0"
+ pathe "^1.1.0"
+ pretty-format "^27.5.1"
-"@webassemblyjs/leb128@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
- integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==
+"@vitest/spy@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-0.32.2.tgz#f3ef7afe0d34e863b90df7c959fa5af540a6aaf9"
+ integrity sha512-Q/ZNILJ4ca/VzQbRM8ur3Si5Sardsh1HofatG9wsJY1RfEaw0XKP8IVax2lI1qnrk9YPuG9LA2LkZ0EI/3d4ug==
dependencies:
- "@xtuc/long" "4.2.2"
+ tinyspy "^2.1.0"
-"@webassemblyjs/utf8@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
- integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==
-
-"@webassemblyjs/wasm-edit@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
- integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==
+"@vitest/ui@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/ui/-/ui-0.32.2.tgz#3a39ef1e23e7a10c2c37d7f570e94b435d34de4c"
+ integrity sha512-N5JKftnB8qzKFtpQC5OcUGxYTLo6wiB/95Lgyk6MF52t74Y7BJOWbf6EFYhXqt9J0MSbhOR2kapq+WKKUGDW0g==
dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/helper-buffer" "1.11.1"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
- "@webassemblyjs/helper-wasm-section" "1.11.1"
- "@webassemblyjs/wasm-gen" "1.11.1"
- "@webassemblyjs/wasm-opt" "1.11.1"
- "@webassemblyjs/wasm-parser" "1.11.1"
- "@webassemblyjs/wast-printer" "1.11.1"
+ "@vitest/utils" "0.32.2"
+ fast-glob "^3.2.12"
+ fflate "^0.7.4"
+ flatted "^3.2.7"
+ pathe "^1.1.0"
+ picocolors "^1.0.0"
+ sirv "^2.0.3"
-"@webassemblyjs/wasm-gen@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
- integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==
+"@vitest/utils@0.32.2":
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.32.2.tgz#809c720cafbf4b35ce651deb8570d57785e77819"
+ integrity sha512-lnJ0T5i03j0IJaeW73hxe2AuVnZ/y1BhhCOuIcl9LIzXnbpXJT9Lrt6brwKHXLOiA7MZ6N5hSJjt0xE1dGNCzQ==
dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
- "@webassemblyjs/ieee754" "1.11.1"
- "@webassemblyjs/leb128" "1.11.1"
- "@webassemblyjs/utf8" "1.11.1"
+ diff-sequences "^29.4.3"
+ loupe "^2.3.6"
+ pretty-format "^27.5.1"
-"@webassemblyjs/wasm-opt@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
- integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==
- dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/helper-buffer" "1.11.1"
- "@webassemblyjs/wasm-gen" "1.11.1"
- "@webassemblyjs/wasm-parser" "1.11.1"
-
-"@webassemblyjs/wasm-parser@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
- integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==
- dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/helper-api-error" "1.11.1"
- "@webassemblyjs/helper-wasm-bytecode" "1.11.1"
- "@webassemblyjs/ieee754" "1.11.1"
- "@webassemblyjs/leb128" "1.11.1"
- "@webassemblyjs/utf8" "1.11.1"
-
-"@webassemblyjs/wast-printer@1.11.1":
- version "1.11.1"
- resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
- integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==
- dependencies:
- "@webassemblyjs/ast" "1.11.1"
- "@xtuc/long" "4.2.2"
-
-"@xtuc/ieee754@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
- integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
-
-"@xtuc/long@4.2.2":
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
- integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
-
-abab@^2.0.3, abab@^2.0.5:
+abab@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291"
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
-accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
- integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
- dependencies:
- mime-types "~2.1.34"
- negotiator "0.6.3"
-
-acorn-globals@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45"
- integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
- dependencies:
- acorn "^7.1.1"
- acorn-walk "^7.1.1"
-
-acorn-import-assertions@^1.7.6:
- version "1.8.0"
- resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
- integrity sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==
-
-acorn-jsx@^5.3.1, acorn-jsx@^5.3.2:
+acorn-jsx@^5.3.1:
version "5.3.2"
resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn-node@^1.8.2:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
- integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
- dependencies:
- acorn "^7.0.0"
- acorn-walk "^7.0.0"
- xtend "^4.0.2"
+acorn-walk@^8.2.0:
+ version "8.2.0"
+ resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
+ integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-acorn-walk@^7.0.0, acorn-walk@^7.1.1:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
- integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-
-acorn@^7.0.0, acorn@^7.1.1, acorn@^7.4.0:
+acorn@^7.4.0:
version "7.4.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.2.4, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.8.0:
- version "8.8.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
- integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+acorn@^8.5.0:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
-address@^1.0.1, address@^1.1.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/address/-/address-1.2.1.tgz#25bb61095b7522d65b357baa11bc05492d4c8acd"
- integrity sha512-B+6bi5D34+fDYENiH5qOlA0cV2rAGKuWZ9LeyUUehbXy8e0VS9e498yO0Jeeh+iM+6KbfudHTFjXw2MmJD4QRA==
-
-adjust-sourcemap-loader@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99"
- integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==
- dependencies:
- loader-utils "^2.0.0"
- regex-parser "^2.2.11"
+acorn@^8.8.2, acorn@^8.9.0:
+ version "8.9.0"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.9.0.tgz#78a16e3b2bcc198c10822786fa6679e245db5b59"
+ integrity sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==
after@0.8.2:
version "0.8.2"
@@ -3158,26 +2893,7 @@ aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
-ajv-formats@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
- integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
- dependencies:
- ajv "^8.0.0"
-
-ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
- integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-
-ajv-keywords@^5.0.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
- integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
- dependencies:
- fast-deep-equal "^3.1.3"
-
-ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.10.0, ajv@^6.12.4:
version "6.12.6"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -3187,20 +2903,10 @@ ajv@^6.10.0, ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ajv@^8.0.0, ajv@^8.6.0, ajv@^8.8.0:
- version "8.11.2"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78"
- integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==
- dependencies:
- fast-deep-equal "^3.1.1"
- json-schema-traverse "^1.0.0"
- require-from-string "^2.0.2"
- uri-js "^4.2.2"
-
-ajv@^8.0.1:
- version "8.11.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
- integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
+ajv@^8.0.1, ajv@^8.6.0:
+ version "8.12.0"
+ resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
@@ -3212,18 +2918,13 @@ ansi-colors@^4.1.1:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-ansi-escapes@^4.2.1, ansi-escapes@^4.3.0, ansi-escapes@^4.3.1:
+ansi-escapes@^4.3.0:
version "4.3.2"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
dependencies:
type-fest "^0.21.3"
-ansi-html-community@^0.0.8:
- version "0.0.8"
- resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
- integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
-
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
@@ -3258,19 +2959,14 @@ ansi-styles@^6.0.0:
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
-anymatch@^3.0.3, anymatch@~3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
- integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
+anymatch@~3.1.2:
+ version "3.1.3"
+ resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
+ integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
-arg@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c"
- integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
-
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
@@ -3278,48 +2974,29 @@ argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
-argparse@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
- integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-
-aria-query@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-4.2.2.tgz#0d2ca6c9aceb56b8977e9fed6aed7e15bbd2f83b"
- integrity sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==
+aria-hidden@^1.1.1:
+ version "1.2.3"
+ resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.3.tgz#14aeb7fb692bbb72d69bebfa47279c1fd725e954"
+ integrity sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==
dependencies:
- "@babel/runtime" "^7.10.2"
- "@babel/runtime-corejs3" "^7.10.2"
+ tslib "^2.0.0"
-aria-query@^5.0.0:
+aria-query@^5.0.0, aria-query@^5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e"
integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
dependencies:
deep-equal "^2.0.5"
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
-
-array-flatten@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
- integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==
-
-array-includes@^3.1.4, array-includes@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb"
- integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ==
+array-buffer-byte-length@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
+ integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.19.5"
- get-intrinsic "^1.1.1"
- is-string "^1.0.7"
+ is-array-buffer "^3.0.1"
-array-includes@^3.1.6:
+array-includes@^3.1.5, array-includes@^3.1.6:
version "3.1.6"
resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.6.tgz#9e9e720e194f198266ba9e18c29e6a9b0e4b225f"
integrity sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==
@@ -3335,14 +3012,14 @@ array-union@^2.1.0:
resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-array.prototype.flat@^1.2.5:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b"
- integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw==
+array.prototype.flat@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz#ffc6576a7ca3efc2f46a143b9d1dda9b4b3cf5e2"
+ integrity sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==
dependencies:
call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
es-shim-unscopables "^1.0.0"
array.prototype.flatmap@^1.3.1:
@@ -3355,17 +3032,6 @@ array.prototype.flatmap@^1.3.1:
es-abstract "^1.20.4"
es-shim-unscopables "^1.0.0"
-array.prototype.reduce@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.4.tgz#8167e80089f78bff70a99e20bd4201d4663b0a6f"
- integrity sha512-WnM+AjG/DvLRLo4DDl+r+SvCzYtD2Jd9oeBYMcEaI7t3fFrHY9M53/wdLcTvmZNQ70IU6Htj0emFkZ5TS+lrdw==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.2"
- es-array-method-boxes-properly "^1.0.0"
- is-string "^1.0.7"
-
array.prototype.tosorted@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz#ccf44738aa2b5ac56578ffda97c03fd3e23dd532"
@@ -3382,11 +3048,6 @@ arraybuffer.slice@~0.0.7:
resolved "https://registry.yarnpkg.com/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz#3bbc4275dd584cc1b10809b89d4e8b63a69e7675"
integrity sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==
-asap@~2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
- integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
-
assertion-error@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
@@ -3407,6 +3068,13 @@ async-limiter@~1.0.0:
resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd"
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
+async@^2.6.4:
+ version "2.6.4"
+ resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
+ integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
+ dependencies:
+ lodash "^4.17.14"
+
async@^3.2.3:
version "3.2.4"
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
@@ -3427,77 +3095,22 @@ atob@^2.1.2:
resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-autoprefixer@^10.4.13:
- version "10.4.13"
- resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.13.tgz#b5136b59930209a321e9fa3dca2e7c4d223e83a8"
- integrity sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==
- dependencies:
- browserslist "^4.21.4"
- caniuse-lite "^1.0.30001426"
- fraction.js "^4.2.0"
- normalize-range "^0.1.2"
- picocolors "^1.0.0"
- postcss-value-parser "^4.2.0"
-
available-typed-arrays@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7"
integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==
-axe-core@^4.4.3:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.5.0.tgz#6efe2ecdba205fcc9d7ddb3d48c2cf630f70eb5e"
- integrity sha512-4+rr8eQ7+XXS5nZrKcMO/AikHL0hVqy+lHWAnE3xdHl+aguag8SOQ6eEqLexwLNWgXIMfunGuD3ON1/6Kyet0A==
+axe-core@^4.6.2:
+ version "4.6.3"
+ resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece"
+ integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==
-axobject-query@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.2.0.tgz#943d47e10c0b704aa42275e20edf3722648989be"
- integrity sha512-Td525n+iPOOyUQIeBfcASuG6uJsDOITl7Mds5gFyerkWiX7qhUTdYUBlSgNMyVqtSJqwpt1kXGLdUt6SykLMRA==
-
-babel-jest@^27.4.2, babel-jest@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444"
- integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==
+axobject-query@^3.1.1:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1"
+ integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==
dependencies:
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/babel__core" "^7.1.14"
- babel-plugin-istanbul "^6.1.1"
- babel-preset-jest "^27.5.1"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- slash "^3.0.0"
-
-babel-loader@^8.2.3:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8"
- integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==
- dependencies:
- find-cache-dir "^3.3.1"
- loader-utils "^2.0.0"
- make-dir "^3.1.0"
- schema-utils "^2.6.5"
-
-babel-plugin-istanbul@^6.1.1:
- version "6.1.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73"
- integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
- dependencies:
- "@babel/helper-plugin-utils" "^7.0.0"
- "@istanbuljs/load-nyc-config" "^1.0.0"
- "@istanbuljs/schema" "^0.1.2"
- istanbul-lib-instrument "^5.0.4"
- test-exclude "^6.0.0"
-
-babel-plugin-jest-hoist@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e"
- integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==
- dependencies:
- "@babel/template" "^7.3.3"
- "@babel/types" "^7.3.3"
- "@types/babel__core" "^7.0.0"
- "@types/babel__traverse" "^7.0.6"
+ deep-equal "^2.0.5"
babel-plugin-macros@^3.1.0:
version "3.1.0"
@@ -3508,11 +3121,6 @@ babel-plugin-macros@^3.1.0:
cosmiconfig "^7.0.0"
resolve "^1.19.0"
-babel-plugin-named-asset-import@^0.3.8:
- version "0.3.8"
- resolved "https://registry.yarnpkg.com/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz#6b7fa43c59229685368683c28bc9734f24524cc2"
- integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==
-
babel-plugin-polyfill-corejs2@^0.3.3:
version "0.3.3"
resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122"
@@ -3542,32 +3150,6 @@ babel-plugin-transform-react-remove-prop-types@^0.4.24:
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
-babel-preset-current-node-syntax@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b"
- integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
- dependencies:
- "@babel/plugin-syntax-async-generators" "^7.8.4"
- "@babel/plugin-syntax-bigint" "^7.8.3"
- "@babel/plugin-syntax-class-properties" "^7.8.3"
- "@babel/plugin-syntax-import-meta" "^7.8.3"
- "@babel/plugin-syntax-json-strings" "^7.8.3"
- "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
- "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
- "@babel/plugin-syntax-numeric-separator" "^7.8.3"
- "@babel/plugin-syntax-object-rest-spread" "^7.8.3"
- "@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
- "@babel/plugin-syntax-optional-chaining" "^7.8.3"
- "@babel/plugin-syntax-top-level-await" "^7.8.3"
-
-babel-preset-jest@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81"
- integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==
- dependencies:
- babel-plugin-jest-hoist "^27.5.1"
- babel-preset-current-node-syntax "^1.0.0"
-
babel-preset-react-app@^10.0.1:
version "10.0.1"
resolved "https://registry.yarnpkg.com/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz#ed6005a20a24f2c88521809fa9aea99903751584"
@@ -3610,25 +3192,12 @@ base64-arraybuffer@0.1.4:
resolved "https://registry.yarnpkg.com/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz#9818c79e059b1355f97e0428a017c838e90ba812"
integrity sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==
-batch@0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
- integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
-
-bfj@^7.0.2:
- version "7.0.2"
- resolved "https://registry.yarnpkg.com/bfj/-/bfj-7.0.2.tgz#1988ce76f3add9ac2913fd8ba47aad9e651bfbb2"
- integrity sha512-+e/UqUzwmzJamNF50tBV6tZPTORow7gQ96iFow+8b562OdMpEK0BcJEq2OSPEDmAbSMBQ7PKZ87ubFkgxpYWgw==
+basic-auth@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
+ integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
- bluebird "^3.5.5"
- check-types "^11.1.1"
- hoopy "^0.1.4"
- tryer "^1.0.1"
-
-big.js@^5.2.2:
- version "5.2.2"
- resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
- integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
+ safe-buffer "5.1.2"
binary-extensions@^2.0.0:
version "2.2.0"
@@ -3640,43 +3209,10 @@ blob@0.0.5:
resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683"
integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==
-bluebird@^3.5.5:
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
-body-parser@1.20.1:
- version "1.20.1"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
- integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
- 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"
-
-bonjour-service@^1.0.11:
- version "1.0.14"
- resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.0.14.tgz#c346f5bc84e87802d08f8d5a60b93f758e514ee7"
- integrity sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==
- dependencies:
- array-flatten "^2.1.2"
- dns-equal "^1.0.0"
- fast-deep-equal "^3.1.3"
- multicast-dns "^7.2.5"
-
-boolbase@^1.0.0, boolbase@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
- integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+blueimp-md5@^2.10.0:
+ version "2.19.0"
+ resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.19.0.tgz#b53feea5498dcb53dc6ec4b823adb84b729c4af0"
+ integrity sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==
brace-expansion@^1.1.7:
version "1.1.11"
@@ -3705,27 +3241,15 @@ browser-fs-access@0.29.1:
resolved "https://registry.yarnpkg.com/browser-fs-access/-/browser-fs-access-0.29.1.tgz#8a9794c73cf86b9aec74201829999c597128379c"
integrity sha512-LSvVX5e21LRrXqVMhqtAwj5xPgDb+fXAIH80NsnCQ9xuZPs2xWsOREi24RKgZa1XOiQRbcmVrv87+ulOKsgjxw==
-browser-process-hrtime@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626"
- integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
-
-browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.21.3, browserslist@^4.21.4:
- version "4.21.4"
- resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.4.tgz#e7496bbc67b9e39dd0f98565feccdcb0d4ff6987"
- integrity sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==
+browserslist@^4.21.3, browserslist@^4.21.5:
+ version "4.21.5"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7"
+ integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==
dependencies:
- caniuse-lite "^1.0.30001400"
- electron-to-chromium "^1.4.251"
- node-releases "^2.0.6"
- update-browserslist-db "^1.0.9"
-
-bser@2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05"
- integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
- dependencies:
- node-int64 "^0.4.0"
+ caniuse-lite "^1.0.30001449"
+ electron-to-chromium "^1.4.284"
+ node-releases "^2.0.8"
+ update-browserslist-db "^1.0.10"
buffer-from@^1.0.0:
version "1.1.2"
@@ -3737,15 +3261,10 @@ builtin-modules@^3.1.0:
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
-bytes@3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
- integrity sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==
-
-bytes@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
- integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
+cac@^6.7.14:
+ version "6.7.14"
+ resolved "https://registry.yarnpkg.com/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
+ integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
call-bind@^1.0.0, call-bind@^1.0.2:
version "1.0.2"
@@ -3760,53 +3279,20 @@ callsites@^3.0.0:
resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
-camel-case@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
- integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
- dependencies:
- pascal-case "^3.1.2"
- tslib "^2.0.3"
-
-camelcase-css@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5"
- integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
-
-camelcase@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320"
- integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-
-camelcase@^6.2.0, camelcase@^6.2.1:
+camelcase@^6.2.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
-caniuse-api@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0"
- integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
- dependencies:
- browserslist "^4.0.0"
- caniuse-lite "^1.0.0"
- lodash.memoize "^4.1.2"
- lodash.uniq "^4.5.0"
+caniuse-lite@^1.0.30001449:
+ version "1.0.30001478"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001478.tgz#0ef8a1cf8b16be47a0f9fc4ecfc952232724b32a"
+ integrity sha512-gMhDyXGItTHipJj2ApIvR+iVB5hd0KP3svMWWXDvZOmjzJJassGLMfxRkQCSYgGd2gtdL/ReeiyvMSFD1Ss6Mw==
-caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001400:
- version "1.0.30001427"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001427.tgz#d3a749f74be7ae0671fbec3a4eea18576e8ad646"
- integrity sha512-lfXQ73oB9c8DP5Suxaszm+Ta2sr/4tf8+381GkIm1MLj/YdLf+rEDyDSRCzeltuyTVGm+/s18gdZ0q+Wmp8VsQ==
-
-caniuse-lite@^1.0.30001426:
- version "1.0.30001431"
- resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz#e7c59bd1bc518fae03a4656be442ce6c4887a795"
- integrity sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==
-
-case-sensitive-paths-webpack-plugin@^2.4.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4"
- integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
+canvas-roundrect-polyfill@0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/canvas-roundrect-polyfill/-/canvas-roundrect-polyfill-0.0.1.tgz#70bf107ebe2037f26d839d7f809a26f4a95f5696"
+ integrity sha512-yWq+R3U3jE+coOeEb3a3GgE2j/0MMiDKM/QpLb6h9ihf5fGY9UXtvK9o4vNqjWXoZz7/3EaSVU3IX53TvFFUOw==
chai@4.3.6:
version "4.3.6"
@@ -3821,7 +3307,20 @@ chai@4.3.6:
pathval "^1.1.1"
type-detect "^4.0.5"
-chalk@^2.0.0, chalk@^2.4.1:
+chai@^4.3.7:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.7.tgz#ec63f6df01829088e8bf55fca839bcd464a8ec51"
+ integrity sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==
+ 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"
+
+chalk@^2.0.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -3838,7 +3337,7 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -3846,27 +3345,12 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-char-regex@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf"
- integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
-
-char-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-2.0.1.tgz#6dafdb25f9d3349914079f010ba8d0e6ff9cd01e"
- integrity sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==
-
check-error@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82"
integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==
-check-types@^11.1.1:
- version "11.1.2"
- resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f"
- integrity sha512-tzWzvgePgLORb9/3a0YenggReLKAIb2owL03H2Xdoe5pKcUyWRSEQ8xfCar8t2SIAuEDwtmx2da1YB52YuHQMQ==
-
-"chokidar@>=3.0.0 <4.0.0", chokidar@^3.4.2, chokidar@^3.5.3:
+"chokidar@>=3.0.0 <4.0.0", chokidar@^3.5.1:
version "3.5.3"
resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
@@ -3881,27 +3365,10 @@ check-types@^11.1.1:
optionalDependencies:
fsevents "~2.3.2"
-chrome-trace-event@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
- integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==
-
ci-info@^3.2.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.5.0.tgz#bfac2a29263de4c829d806b1ab478e35091e171f"
- integrity sha512-yH4RezKOGlOhxkmhbeNuC4eYZKAUsEaGtBuBzDDP1eFUKiccDWzBABxBfOx31IDwDIXMTxWuwAxUGModvkbuVw==
-
-cjs-module-lexer@^1.0.0:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
- integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
-
-clean-css@^5.2.2:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-5.3.1.tgz#d0610b0b90d125196a2894d35366f734e5d7aa32"
- integrity sha512-lCr8OHhiWCTw4v8POJovCoh4T7I9U11yVsPjMWWnnMmp9ZowCxyad1Pathle/9HjaDp+fdQKjO9fQydE6RHTZg==
- dependencies:
- source-map "~0.6.0"
+ version "3.8.0"
+ resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.8.0.tgz#81408265a5380c929f0bc665d62256628ce9ef91"
+ integrity sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==
clean-stack@^2.0.0:
version "2.2.0"
@@ -3945,25 +3412,6 @@ clsx@1.1.1:
resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188"
integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA==
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
- integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
-
-coa@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3"
- integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
- dependencies:
- "@types/q" "^1.5.1"
- chalk "^2.4.1"
- q "^1.1.2"
-
-collect-v8-coverage@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59"
- integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
-
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
@@ -3988,12 +3436,7 @@ color-name@^1.1.4, color-name@~1.1.4:
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-colord@^2.9.1:
- version "2.9.3"
- resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43"
- integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
-
-colorette@^2.0.10, colorette@^2.0.16:
+colorette@^2.0.16:
version "2.0.19"
resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
@@ -4010,31 +3453,16 @@ commander@^2.20.0:
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-commander@^7.2.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
- integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-
-commander@^8.3.0:
+commander@^8.0.0, commander@^8.3.0:
version "8.3.0"
resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66"
integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
-common-path-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
- integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
-
common-tags@^1.8.0:
version "1.8.2"
resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
-commondir@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
- integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
-
component-bind@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/component-bind/-/component-bind-1.0.0.tgz#00c608ab7dcd93897c0009651b1d3a8e1e73bbd1"
@@ -4050,120 +3478,61 @@ component-inherit@0.0.3:
resolved "https://registry.yarnpkg.com/component-inherit/-/component-inherit-0.0.3.tgz#645fc4adf58b72b649d5cae65135619db26ff143"
integrity sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==
-compressible@~2.0.16:
- version "2.0.18"
- resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
- integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==
- dependencies:
- mime-db ">= 1.43.0 < 2"
-
-compression@^1.7.4:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
- integrity sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==
- 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"
-
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
+concordance@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.yarnpkg.com/concordance/-/concordance-5.0.4.tgz#9896073261adced72f88d60e4d56f8efc4bbbbd2"
+ integrity sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==
+ dependencies:
+ date-time "^3.1.0"
+ esutils "^2.0.3"
+ fast-diff "^1.2.0"
+ js-string-escape "^1.0.1"
+ lodash "^4.17.15"
+ md5-hex "^3.0.1"
+ semver "^7.3.2"
+ well-known-symbols "^2.0.0"
+
confusing-browser-globals@^1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz#ae40e9b57cdd3915408a2805ebd3a5585608dc81"
integrity sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==
-connect-history-api-fallback@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
- integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
-
-content-disposition@0.5.4:
- version "0.5.4"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
- integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
- dependencies:
- safe-buffer "5.2.1"
-
-content-type@~1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
- integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
-convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0:
+convert-source-map@^1.7.0:
version "1.9.0"
resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f"
integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
-
-cookie@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
- integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
-
core-js-compat@^3.25.1:
- version "3.26.0"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.26.0.tgz#94e2cf8ba3e63800c4956ea298a6473bc9d62b44"
- integrity sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==
+ version "3.30.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.30.0.tgz#99aa2789f6ed2debfa1df3232784126ee97f4d80"
+ integrity sha512-P5A2h/9mRYZFIAP+5Ab8ns6083IyVpSclU74UNvbGVQ8VM7n3n3/g2yF3AkKQ9NXz2O+ioxLbEWKnDtgsFamhg==
dependencies:
- browserslist "^4.21.4"
-
-core-js-pure@^3.23.3:
- version "3.26.1"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.1.tgz#653f4d7130c427820dcecd3168b594e8bb095a33"
- integrity sha512-VVXcDpp/xJ21KdULRq/lXdLzQAtX7+37LzpyfFM973il0tWSsDEoyzG38G14AjTpK9VTfiNM9jnFauq/CpaWGQ==
-
-core-js-pure@^3.25.1:
- version "3.26.0"
- resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.26.0.tgz#7ad8a5dd7d910756f3124374b50026e23265ca9a"
- integrity sha512-LiN6fylpVBVwT8twhhluD9TzXmZQQsr2I2eIKtWNbZI1XMfBT7CV18itaN6RA7EtQd/SDdRx/wzvAShX2HvhQA==
+ browserslist "^4.21.5"
core-js@3.6.5:
version "3.6.5"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
-core-js@^3.19.2:
- version "3.26.1"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.1.tgz#7a9816dabd9ee846c1c0fe0e8fcad68f3709134e"
- integrity sha512-21491RRQVzUn0GGM9Z1Jrpr6PNPxPi+Za8OM9q4tksTSnlbXXGKK1nXNg/QvwFYettXvSX6zWKCtHHfjN4puyA==
-
core-js@^3.4:
- version "3.26.0"
- resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.26.0.tgz#a516db0ed0811be10eac5d94f3b8463d03faccfe"
- integrity sha512-+DkDrhoR4Y0PxDz6rurahuB+I45OsEUv8E1maPTB6OuHRohMMcznBq9TMpdpDMm/hUPob/mJJS3PqgbHpMTQgw==
+ version "3.30.0"
+ resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.30.0.tgz#64ac6f83bc7a49fd42807327051701d4b1478dea"
+ integrity sha512-hQotSSARoNh1mYPi9O2YaWeiq/cEB95kOrFb4NCrO4RIFt1qqNpKsaE+vy/L3oiqvND5cThqXzUU3r9F7Efztg==
-core-util-is@~1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
- integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+corser@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/corser/-/corser-2.0.1.tgz#8eda252ecaab5840dcd975ceb90d9370c819ff87"
+ integrity sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==
-cosmiconfig@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982"
- integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
- dependencies:
- "@types/parse-json" "^4.0.0"
- import-fresh "^3.1.0"
- parse-json "^5.0.0"
- path-type "^4.0.0"
- yaml "^1.7.2"
-
-cosmiconfig@^7.0.0:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
- integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==
+cosmiconfig@^7.0.0, cosmiconfig@^7.0.1:
+ version "7.1.0"
+ resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6"
+ integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==
dependencies:
"@types/parse-json" "^4.0.0"
import-fresh "^3.2.1"
@@ -4176,7 +3545,14 @@ crc-32@^0.3.0:
resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-0.3.0.tgz#6a3d3687f5baec41f7e9b99fe1953a2e5d19775e"
integrity sha512-kucVIjOmMc1f0tv53BJ/5WIX+MGLcKuoBhnGqQrgKJNqLByb/sVMWfW/Aw6hw0jgcqjJ2pi9E5y32zOIpaUlsA==
-cross-spawn@^7.0.2, cross-spawn@^7.0.3:
+cross-env@7.0.3:
+ version "7.0.3"
+ resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf"
+ integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==
+ dependencies:
+ cross-spawn "^7.0.1"
+
+cross-spawn@^7.0.1, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
@@ -4190,108 +3566,6 @@ crypto-random-string@^2.0.0:
resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
-css-blank-pseudo@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561"
- integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==
- dependencies:
- postcss-selector-parser "^6.0.9"
-
-css-declaration-sorter@^6.3.1:
- version "6.3.1"
- resolved "https://registry.yarnpkg.com/css-declaration-sorter/-/css-declaration-sorter-6.3.1.tgz#be5e1d71b7a992433fb1c542c7a1b835e45682ec"
- integrity sha512-fBffmak0bPAnyqc/HO8C3n2sHrp9wcqQz6ES9koRF2/mLOVAx9zIQ3Y7R29sYCteTPqMCwns4WYQoCX91Xl3+w==
-
-css-has-pseudo@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73"
- integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==
- dependencies:
- postcss-selector-parser "^6.0.9"
-
-css-loader@^6.5.1:
- version "6.7.2"
- resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.2.tgz#26bc22401b5921686a10fbeba75d124228302304"
- integrity sha512-oqGbbVcBJkm8QwmnNzrFrWTnudnRZC+1eXikLJl0n4ljcfotgRifpg2a1lKy8jTrc4/d9A/ap1GFq1jDKG7J+Q==
- dependencies:
- icss-utils "^5.1.0"
- postcss "^8.4.18"
- 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"
-
-css-minimizer-webpack-plugin@^3.2.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz#ab78f781ced9181992fe7b6e4f3422e76429878f"
- integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==
- dependencies:
- cssnano "^5.0.6"
- jest-worker "^27.0.2"
- postcss "^8.3.5"
- schema-utils "^4.0.0"
- serialize-javascript "^6.0.0"
- source-map "^0.6.1"
-
-css-prefers-color-scheme@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349"
- integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==
-
-css-select-base-adapter@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz#3b2ff4972cc362ab88561507a95408a1432135d7"
- integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
-
-css-select@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef"
- integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^3.2.1"
- domutils "^1.7.0"
- nth-check "^1.0.2"
-
-css-select@^4.1.3:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
- integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
- dependencies:
- boolbase "^1.0.0"
- css-what "^6.0.1"
- domhandler "^4.3.1"
- domutils "^2.8.0"
- nth-check "^2.0.1"
-
-css-tree@1.0.0-alpha.37:
- version "1.0.0-alpha.37"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.37.tgz#98bebd62c4c1d9f960ec340cf9f7522e30709a22"
- integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
- dependencies:
- mdn-data "2.0.4"
- source-map "^0.6.1"
-
-css-tree@^1.1.2, css-tree@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
- integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
- dependencies:
- mdn-data "2.0.14"
- source-map "^0.6.1"
-
-css-what@^3.2.1:
- version "3.4.2"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.4.2.tgz#ea7026fcb01777edbde52124e21f327e7ae950e4"
- integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
-
-css-what@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4"
- integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
-
css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb"
@@ -4306,121 +3580,45 @@ css@^3.0.0:
source-map "^0.6.1"
source-map-resolve "^0.6.0"
-cssdb@^7.1.0:
- version "7.1.0"
- resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.1.0.tgz#574f97235a83eb753a29f0b1f2cbacac0d628bb8"
- integrity sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==
-
-cssesc@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee"
- integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
-
cssfontparser@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/cssfontparser/-/cssfontparser-1.2.1.tgz#f4022fc8f9700c68029d542084afbaf425a3f3e3"
integrity sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==
-cssnano-preset-default@^5.2.13:
- version "5.2.13"
- resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.2.13.tgz#e7353b0c57975d1bdd97ac96e68e5c1b8c68e990"
- integrity sha512-PX7sQ4Pb+UtOWuz8A1d+Rbi+WimBIxJTRyBdgGp1J75VU0r/HFQeLnMYgHiCAp6AR4rqrc7Y4R+1Rjk3KJz6DQ==
+cssstyle@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-3.0.0.tgz#17ca9c87d26eac764bb8cfd00583cff21ce0277a"
+ integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==
dependencies:
- css-declaration-sorter "^6.3.1"
- cssnano-utils "^3.1.0"
- postcss-calc "^8.2.3"
- postcss-colormin "^5.3.0"
- postcss-convert-values "^5.1.3"
- postcss-discard-comments "^5.1.2"
- postcss-discard-duplicates "^5.1.0"
- postcss-discard-empty "^5.1.1"
- postcss-discard-overridden "^5.1.0"
- postcss-merge-longhand "^5.1.7"
- postcss-merge-rules "^5.1.3"
- postcss-minify-font-values "^5.1.0"
- postcss-minify-gradients "^5.1.1"
- postcss-minify-params "^5.1.4"
- postcss-minify-selectors "^5.2.1"
- postcss-normalize-charset "^5.1.0"
- postcss-normalize-display-values "^5.1.0"
- postcss-normalize-positions "^5.1.1"
- postcss-normalize-repeat-style "^5.1.1"
- postcss-normalize-string "^5.1.0"
- postcss-normalize-timing-functions "^5.1.0"
- postcss-normalize-unicode "^5.1.1"
- postcss-normalize-url "^5.1.0"
- postcss-normalize-whitespace "^5.1.1"
- postcss-ordered-values "^5.1.3"
- postcss-reduce-initial "^5.1.1"
- postcss-reduce-transforms "^5.1.0"
- postcss-svgo "^5.1.0"
- postcss-unique-selectors "^5.1.1"
-
-cssnano-utils@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861"
- integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==
-
-cssnano@^5.0.6:
- version "5.1.14"
- resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-5.1.14.tgz#07b0af6da73641276fe5a6d45757702ebae2eb05"
- integrity sha512-Oou7ihiTocbKqi0J1bB+TRJIQX5RMR3JghA8hcWSw9mjBLQ5Y3RWqEDoYG3sRNlAbCIXpqMoZGbq5KDR3vdzgw==
- dependencies:
- cssnano-preset-default "^5.2.13"
- lilconfig "^2.0.3"
- yaml "^1.10.2"
-
-csso@^4.0.2, csso@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
- integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
- dependencies:
- css-tree "^1.1.2"
-
-cssom@^0.4.4:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10"
- integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
-
-cssom@~0.3.6:
- version "0.3.8"
- resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a"
- integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
-
-cssstyle@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852"
- integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
- dependencies:
- cssom "~0.3.6"
+ rrweb-cssom "^0.6.0"
csstype@^3.0.2:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9"
- integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
+ version "3.1.2"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b"
+ integrity sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==
damerau-levenshtein@^1.0.8:
version "1.0.8"
resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7"
integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==
-data-urls@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b"
- integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+data-urls@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-4.0.0.tgz#333a454eca6f9a5b7b0f1013ff89074c3f522dd4"
+ integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==
dependencies:
- abab "^2.0.3"
- whatwg-mimetype "^2.3.0"
- whatwg-url "^8.0.0"
+ abab "^2.0.6"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.0"
-debug@2.6.9, debug@^2.6.0, debug@^2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+date-time@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/date-time/-/date-time-3.1.0.tgz#0d1e934d170579f481ed8df1e2b8ff70ee845e1e"
+ integrity sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==
dependencies:
- ms "2.0.0"
+ time-zone "^1.0.0"
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4:
+debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.3, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -4441,20 +3639,15 @@ debug@~3.1.0:
dependencies:
ms "2.0.0"
-decimal.js@^10.2.1:
- version "10.4.2"
- resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.2.tgz#0341651d1d997d86065a2ce3a441fbd0d8e8b98e"
- integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA==
+decimal.js@^10.4.3:
+ version "10.4.3"
+ resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23"
+ integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
decode-uri-component@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545"
- integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==
-
-dedent@^0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c"
- integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
+ version "0.2.2"
+ resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
+ integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
deep-eql@^3.0.1:
version "3.0.1"
@@ -4463,123 +3656,73 @@ deep-eql@^3.0.1:
dependencies:
type-detect "^4.0.0"
-deep-equal@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.5.tgz#55cd2fe326d83f9cbf7261ef0e060b3f724c5cb9"
- integrity sha512-nPiRgmbAtm1a3JsnLCf6/SLfXcjyN5v8L1TXzdCmHrXJ4hx+gW/w1YCcn7z8gJtSiDArZCgYtbao3QqLm/N1Sw==
+deep-eql@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
+ integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
dependencies:
- call-bind "^1.0.0"
- es-get-iterator "^1.1.1"
- get-intrinsic "^1.0.1"
- is-arguments "^1.0.4"
- is-date-object "^1.0.2"
- is-regex "^1.1.1"
- isarray "^2.0.5"
- object-is "^1.1.4"
- object-keys "^1.1.1"
- object.assign "^4.1.2"
- regexp.prototype.flags "^1.3.0"
- side-channel "^1.0.3"
- which-boxed-primitive "^1.0.1"
- which-collection "^1.0.1"
- which-typed-array "^1.1.2"
+ type-detect "^4.0.0"
-deep-is@^0.1.3, deep-is@~0.1.3:
+deep-equal@^2.0.5:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.0.tgz#5caeace9c781028b9ff459f33b779346637c43e6"
+ integrity sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==
+ dependencies:
+ call-bind "^1.0.2"
+ es-get-iterator "^1.1.2"
+ get-intrinsic "^1.1.3"
+ is-arguments "^1.1.1"
+ is-array-buffer "^3.0.1"
+ is-date-object "^1.0.5"
+ is-regex "^1.1.4"
+ is-shared-array-buffer "^1.0.2"
+ isarray "^2.0.5"
+ object-is "^1.1.5"
+ object-keys "^1.1.1"
+ object.assign "^4.1.4"
+ regexp.prototype.flags "^1.4.3"
+ side-channel "^1.0.4"
+ which-boxed-primitive "^1.0.2"
+ which-collection "^1.0.1"
+ which-typed-array "^1.1.9"
+
+deep-is@^0.1.3:
version "0.1.4"
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
deepmerge@^4.2.2:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
- integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-
-default-gateway@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
- integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
- dependencies:
- execa "^5.0.0"
-
-define-lazy-prop@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
- integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==
+ version "4.3.1"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a"
+ integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
define-properties@^1.1.3, define-properties@^1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
- integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.0.tgz#52988570670c9eacedd8064f4a990f2405849bd5"
+ integrity sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==
dependencies:
has-property-descriptors "^1.0.0"
object-keys "^1.1.1"
-defined@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf"
- integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==
-
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-depd@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
- integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
-
-depd@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
- integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
-
-destroy@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
- integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
-
-detect-newline@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651"
- integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
-
-detect-node@^2.0.4:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
- integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==
-
-detect-port-alt@^1.1.6:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/detect-port-alt/-/detect-port-alt-1.1.6.tgz#24707deabe932d4a3cf621302027c2b266568275"
- integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
- dependencies:
- address "^1.0.1"
- debug "^2.6.0"
-
-detective@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034"
- integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
- dependencies:
- acorn-node "^1.8.2"
- defined "^1.0.0"
- minimist "^1.2.6"
-
-didyoumean@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
- integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+detect-node-es@^1.1.0:
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
+ integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
diff-sequences@^27.5.1:
version "27.5.1"
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327"
integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
-diff-sequences@^29.2.0:
- version "29.2.0"
- resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.2.0.tgz#4c55b5b40706c7b5d2c5c75999a50c56d214e8f6"
- integrity sha512-413SY5JpYeSBZxmenGEmCVQ8mCgtFJF0w9PROdaS6z987XC2Pd2GOKqOITLtMftmyFZqgtCOb/QA7/Z3ZXfzIw==
+diff-sequences@^29.4.3:
+ version "29.4.3"
+ resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.4.3.tgz#9314bc1fabe09267ffeca9cbafc457d8499a13f2"
+ integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==
dir-glob@^3.0.1:
version "3.0.1"
@@ -4588,23 +3731,6 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
-dlv@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
- integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
-
-dns-equal@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
- integrity sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==
-
-dns-packet@^5.2.2:
- version "5.4.0"
- resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
- integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
- dependencies:
- "@leichtgewicht/ip-codec" "^2.0.1"
-
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d"
@@ -4620,49 +3746,15 @@ doctrine@^3.0.0:
esutils "^2.0.2"
dom-accessibility-api@^0.5.6, dom-accessibility-api@^0.5.9:
- version "0.5.14"
- resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz#56082f71b1dc7aac69d83c4285eef39c15d93f56"
- integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==
-
-dom-converter@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/dom-converter/-/dom-converter-0.2.0.tgz#6721a9daee2e293682955b6afe416771627bb768"
- integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
- dependencies:
- utila "~0.4"
-
-dom-serializer@0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
- integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
- dependencies:
- domelementtype "^2.0.1"
- entities "^2.0.0"
-
-dom-serializer@^1.0.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
- integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
- dependencies:
- domelementtype "^2.0.1"
- domhandler "^4.2.0"
- entities "^2.0.0"
+ version "0.5.16"
+ resolved "https://registry.yarnpkg.com/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz#5a7429e6066eb3664d911e33fb0e45de8eb08453"
+ integrity sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==
dom-storage@2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/dom-storage/-/dom-storage-2.1.0.tgz#00fb868bc9201357ea243c7bcfd3304c1e34ea39"
integrity sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==
-domelementtype@1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
- integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domelementtype@^2.0.1, domelementtype@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
- integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
-
domexception@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90"
@@ -4670,96 +3762,34 @@ domexception@^1.0.1:
dependencies:
webidl-conversions "^4.0.2"
-domexception@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304"
- integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+domexception@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673"
+ integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
dependencies:
- webidl-conversions "^5.0.0"
-
-domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
- version "4.3.1"
- resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
- integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
- dependencies:
- domelementtype "^2.2.0"
-
-domutils@^1.7.0:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
- integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
- dependencies:
- dom-serializer "0"
- domelementtype "1"
-
-domutils@^2.5.2, domutils@^2.8.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
- integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
- dependencies:
- dom-serializer "^1.0.1"
- domelementtype "^2.2.0"
- domhandler "^4.2.0"
-
-dot-case@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
- integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
- dependencies:
- no-case "^3.0.4"
- tslib "^2.0.3"
-
-dotenv-expand@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0"
- integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+ webidl-conversions "^7.0.0"
dotenv@16.0.1:
version "16.0.1"
resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.1.tgz#8f8f9d94876c35dac989876a5d3a82a267fdce1d"
integrity sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ==
-dotenv@^10.0.0:
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81"
- integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
-
-duplexer@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6"
- integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
-
eastasianwidth@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-
-ejs@^3.1.6:
- version "3.1.8"
- resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b"
- integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ==
+ejs@^3.1.6, ejs@^3.1.8:
+ version "3.1.9"
+ resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361"
+ integrity sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==
dependencies:
jake "^10.8.5"
-electron-to-chromium@^1.4.251:
- version "1.4.284"
- resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz#61046d1e4cab3a25238f6bf7413795270f125592"
- integrity sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==
-
-emittery@^0.10.2:
- version "0.10.2"
- resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933"
- integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
-
-emittery@^0.8.1:
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860"
- integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+electron-to-chromium@^1.4.284:
+ version "1.4.359"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.359.tgz#5c4d13cb08032469fcd6bd36457915caa211356b"
+ integrity sha512-OoVcngKCIuNXtZnsYoqlCvr0Cf3NIPzDIgwUfI9bdTFjXCrr79lI0kwQstLPZ7WhCezLlGksZk/BFAzoXC7GDw==
emoji-regex@^8.0.0:
version "8.0.0"
@@ -4771,16 +3801,6 @@ emoji-regex@^9.2.2:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-emojis-list@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
- integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-
engine.io-client@~3.4.0:
version "3.4.4"
resolved "https://registry.yarnpkg.com/engine.io-client/-/engine.io-client-3.4.4.tgz#77d8003f502b0782dd792b073a4d2cf7ca5ab967"
@@ -4809,14 +3829,6 @@ engine.io-parser@~2.2.0:
blob "0.0.5"
has-binary2 "~1.0.2"
-enhanced-resolve@^5.10.0:
- version "5.10.0"
- resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
- integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
- dependencies:
- graceful-fs "^4.2.4"
- tapable "^2.2.0"
-
enquirer@^2.3.5:
version "2.3.6"
resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
@@ -4824,10 +3836,10 @@ enquirer@^2.3.5:
dependencies:
ansi-colors "^4.1.1"
-entities@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
- integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
+entities@^4.4.0:
+ version "4.5.0"
+ resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
+ integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
error-ex@^1.3.1:
version "1.3.2"
@@ -4836,66 +3848,69 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-error-stack-parser@^2.0.6:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
- integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
- dependencies:
- stackframe "^1.3.4"
-
-es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5, es-abstract@^1.20.0, es-abstract@^1.20.1, es-abstract@^1.20.4:
- version "1.20.4"
- resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.4.tgz#1d103f9f8d78d4cf0713edcd6d0ed1a46eed5861"
- integrity sha512-0UtvRN79eMe2L+UNEF1BwRe364sj/DXhQ/k5FmivgoSdpM90b8Jc0mDzKMGo7QS0BVbOP/bTwBKNnDc9rNzaPA==
+es-abstract@^1.19.0, es-abstract@^1.20.4:
+ version "1.21.2"
+ resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff"
+ integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==
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-bind "^1.1.1"
function.prototype.name "^1.1.5"
- get-intrinsic "^1.1.3"
+ 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.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.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.trimend "^1.0.5"
- string.prototype.trimstart "^1.0.5"
+ 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"
-es-array-method-boxes-properly@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz#873f3e84418de4ee19c5be752990b2e44718d09e"
- integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
-
-es-get-iterator@^1.1.1:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7"
- integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==
+es-get-iterator@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6"
+ integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==
dependencies:
call-bind "^1.0.2"
- get-intrinsic "^1.1.0"
- has-symbols "^1.0.1"
- is-arguments "^1.1.0"
+ get-intrinsic "^1.1.3"
+ has-symbols "^1.0.3"
+ is-arguments "^1.1.1"
is-map "^2.0.2"
is-set "^2.0.2"
- is-string "^1.0.5"
+ is-string "^1.0.7"
isarray "^2.0.5"
+ stop-iteration-iterator "^1.0.0"
-es-module-lexer@^0.9.0:
- version "0.9.3"
- resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
- integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-set-tostringtag@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8"
+ integrity sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==
+ dependencies:
+ get-intrinsic "^1.1.3"
+ has "^1.0.3"
+ has-tostringtag "^1.0.0"
es-shim-unscopables@^1.0.0:
version "1.0.0"
@@ -4913,16 +3928,67 @@ es-to-primitive@^1.2.1:
is-date-object "^1.0.1"
is-symbol "^1.0.2"
+esbuild@^0.17.5:
+ version "0.17.19"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.17.19.tgz#087a727e98299f0462a3d0bcdd9cd7ff100bd955"
+ integrity sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.17.19"
+ "@esbuild/android-arm64" "0.17.19"
+ "@esbuild/android-x64" "0.17.19"
+ "@esbuild/darwin-arm64" "0.17.19"
+ "@esbuild/darwin-x64" "0.17.19"
+ "@esbuild/freebsd-arm64" "0.17.19"
+ "@esbuild/freebsd-x64" "0.17.19"
+ "@esbuild/linux-arm" "0.17.19"
+ "@esbuild/linux-arm64" "0.17.19"
+ "@esbuild/linux-ia32" "0.17.19"
+ "@esbuild/linux-loong64" "0.17.19"
+ "@esbuild/linux-mips64el" "0.17.19"
+ "@esbuild/linux-ppc64" "0.17.19"
+ "@esbuild/linux-riscv64" "0.17.19"
+ "@esbuild/linux-s390x" "0.17.19"
+ "@esbuild/linux-x64" "0.17.19"
+ "@esbuild/netbsd-x64" "0.17.19"
+ "@esbuild/openbsd-x64" "0.17.19"
+ "@esbuild/sunos-x64" "0.17.19"
+ "@esbuild/win32-arm64" "0.17.19"
+ "@esbuild/win32-ia32" "0.17.19"
+ "@esbuild/win32-x64" "0.17.19"
+
+esbuild@^0.18.10:
+ version "0.18.11"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.11.tgz#cbf94dc3359d57f600a0dbf281df9b1d1b4a156e"
+ integrity sha512-i8u6mQF0JKJUlGR3OdFLKldJQMMs8OqM9Cc3UCi9XXziJ9WERM5bfkHaEAy0YAvPRMgqSW55W7xYn84XtEFTtA==
+ optionalDependencies:
+ "@esbuild/android-arm" "0.18.11"
+ "@esbuild/android-arm64" "0.18.11"
+ "@esbuild/android-x64" "0.18.11"
+ "@esbuild/darwin-arm64" "0.18.11"
+ "@esbuild/darwin-x64" "0.18.11"
+ "@esbuild/freebsd-arm64" "0.18.11"
+ "@esbuild/freebsd-x64" "0.18.11"
+ "@esbuild/linux-arm" "0.18.11"
+ "@esbuild/linux-arm64" "0.18.11"
+ "@esbuild/linux-ia32" "0.18.11"
+ "@esbuild/linux-loong64" "0.18.11"
+ "@esbuild/linux-mips64el" "0.18.11"
+ "@esbuild/linux-ppc64" "0.18.11"
+ "@esbuild/linux-riscv64" "0.18.11"
+ "@esbuild/linux-s390x" "0.18.11"
+ "@esbuild/linux-x64" "0.18.11"
+ "@esbuild/netbsd-x64" "0.18.11"
+ "@esbuild/openbsd-x64" "0.18.11"
+ "@esbuild/sunos-x64" "0.18.11"
+ "@esbuild/win32-arm64" "0.18.11"
+ "@esbuild/win32-ia32" "0.18.11"
+ "@esbuild/win32-x64" "0.18.11"
+
escalade@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
-
escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
@@ -4938,24 +4004,12 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd"
- integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==
- dependencies:
- esprima "^4.0.1"
- estraverse "^5.2.0"
- esutils "^2.0.2"
- optionator "^0.8.1"
- optionalDependencies:
- source-map "~0.6.1"
-
eslint-config-prettier@8.5.0:
version "8.5.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1"
integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==
-eslint-config-react-app@^7.0.1:
+eslint-config-react-app@7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz#73ba3929978001c5c86274c017ea57eb5fa644b4"
integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==
@@ -4975,15 +4029,16 @@ eslint-config-react-app@^7.0.1:
eslint-plugin-react-hooks "^4.3.0"
eslint-plugin-testing-library "^5.0.1"
-eslint-import-resolver-node@^0.3.6:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd"
- integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==
+eslint-import-resolver-node@^0.3.7:
+ version "0.3.7"
+ resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz#83b375187d412324a1963d84fa664377a23eb4d7"
+ integrity sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==
dependencies:
debug "^3.2.7"
- resolve "^1.20.0"
+ is-core-module "^2.11.0"
+ resolve "^1.22.1"
-eslint-module-utils@^2.7.3:
+eslint-module-utils@^2.7.4:
version "2.7.4"
resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz#4f3e41116aaf13a20792261e61d3a2e7e0583974"
integrity sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==
@@ -4999,22 +4054,24 @@ eslint-plugin-flowtype@^8.0.3:
string-natural-compare "^3.0.1"
eslint-plugin-import@^2.25.3:
- version "2.26.0"
- resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b"
- integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==
+ version "2.27.5"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz#876a6d03f52608a3e5bb439c2550588e51dd6c65"
+ integrity sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==
dependencies:
- array-includes "^3.1.4"
- array.prototype.flat "^1.2.5"
- debug "^2.6.9"
+ array-includes "^3.1.6"
+ array.prototype.flat "^1.3.1"
+ array.prototype.flatmap "^1.3.1"
+ debug "^3.2.7"
doctrine "^2.1.0"
- eslint-import-resolver-node "^0.3.6"
- eslint-module-utils "^2.7.3"
+ eslint-import-resolver-node "^0.3.7"
+ eslint-module-utils "^2.7.4"
has "^1.0.3"
- is-core-module "^2.8.1"
+ is-core-module "^2.11.0"
is-glob "^4.0.3"
minimatch "^3.1.2"
- object.values "^1.1.5"
- resolve "^1.22.0"
+ object.values "^1.1.6"
+ resolve "^1.22.1"
+ semver "^6.3.0"
tsconfig-paths "^3.14.1"
eslint-plugin-jest@^25.3.0:
@@ -5025,22 +4082,25 @@ eslint-plugin-jest@^25.3.0:
"@typescript-eslint/experimental-utils" "^5.0.0"
eslint-plugin-jsx-a11y@^6.5.1:
- version "6.6.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.6.1.tgz#93736fc91b83fdc38cc8d115deedfc3091aef1ff"
- integrity sha512-sXgFVNHiWffBq23uiS/JaP6eVR622DqwB4yTzKvGZGcPq6/yZ3WmOZfuBks/vHWo9GaFOqC2ZK4i6+C35knx7Q==
+ version "6.7.1"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz#fca5e02d115f48c9a597a6894d5bcec2f7a76976"
+ integrity sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==
dependencies:
- "@babel/runtime" "^7.18.9"
- aria-query "^4.2.2"
- array-includes "^3.1.5"
+ "@babel/runtime" "^7.20.7"
+ aria-query "^5.1.3"
+ array-includes "^3.1.6"
+ array.prototype.flatmap "^1.3.1"
ast-types-flow "^0.0.7"
- axe-core "^4.4.3"
- axobject-query "^2.2.0"
+ axe-core "^4.6.2"
+ axobject-query "^3.1.1"
damerau-levenshtein "^1.0.8"
emoji-regex "^9.2.2"
has "^1.0.3"
- jsx-ast-utils "^3.3.2"
- language-tags "^1.0.5"
+ jsx-ast-utils "^3.3.3"
+ language-tags "=1.0.5"
minimatch "^3.1.2"
+ object.entries "^1.1.6"
+ object.fromentries "^2.0.6"
semver "^6.3.0"
eslint-plugin-prettier@3.3.1:
@@ -5055,10 +4115,10 @@ eslint-plugin-react-hooks@^4.3.0:
resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3"
integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==
-eslint-plugin-react@^7.27.1:
- version "7.31.11"
- resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.31.11.tgz#011521d2b16dcf95795df688a4770b4eaab364c8"
- integrity sha512-TTvq5JsT5v56wPa9OYHzsrOlHzKZKjV+aLgS+55NJP/cuzdiQPC7PfYoUjMoxlffKtvijpk7vA/jmuqRb9nohw==
+eslint-plugin-react@7.32.2, eslint-plugin-react@^7.27.1:
+ version "7.32.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz#e71f21c7c265ebce01bcbc9d0955170c55571f10"
+ integrity sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==
dependencies:
array-includes "^3.1.6"
array.prototype.flatmap "^1.3.1"
@@ -5072,16 +4132,16 @@ eslint-plugin-react@^7.27.1:
object.hasown "^1.1.2"
object.values "^1.1.6"
prop-types "^15.8.1"
- resolve "^2.0.0-next.3"
+ resolve "^2.0.0-next.4"
semver "^6.3.0"
string.prototype.matchall "^4.0.8"
eslint-plugin-testing-library@^5.0.1:
- version "5.9.1"
- resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.9.1.tgz#12e4bd34c48683ee98af4df2e3318ec9f51dcf8a"
- integrity sha512-6BQp3tmb79jLLasPHJmy8DnxREe+2Pgf7L+7o09TSWPfdqqtQfRZmZNetr5mOs3yqZk/MRNxpN3RUpJe0wB4LQ==
+ version "5.10.2"
+ resolved "https://registry.yarnpkg.com/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.10.2.tgz#12f231ad9b52b6aef45c801fd00aa129a932e0c2"
+ integrity sha512-f1DmDWcz5SDM+IpCkEX0lbFqrrTs8HRsEElzDEqN/EBI0hpRj8Cns5+IVANXswE8/LeybIJqPAOQIFu2j5Y5sw==
dependencies:
- "@typescript-eslint/utils" "^5.13.0"
+ "@typescript-eslint/utils" "^5.43.0"
eslint-scope@5.1.1, eslint-scope@^5.1.1:
version "5.1.1"
@@ -5091,14 +4151,6 @@ eslint-scope@5.1.1, eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
-eslint-scope@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
- integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^5.2.0"
-
eslint-utils@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
@@ -5106,13 +4158,6 @@ eslint-utils@^2.1.0:
dependencies:
eslint-visitor-keys "^1.1.0"
-eslint-utils@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
- integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
- dependencies:
- eslint-visitor-keys "^2.0.0"
-
eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
@@ -5124,20 +4169,9 @@ eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
eslint-visitor-keys@^3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
- integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
-
-eslint-webpack-plugin@^3.1.1:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz#1978cdb9edc461e4b0195a20da950cf57988347c"
- integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==
- dependencies:
- "@types/eslint" "^7.29.0 || ^8.4.1"
- jest-worker "^28.0.2"
- micromatch "^4.0.5"
- normalize-path "^3.0.0"
- schema-utils "^4.0.0"
+ version "3.4.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz#c7f0f956124ce677047ddbc192a68f999454dedc"
+ integrity sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==
eslint@^7.32.0:
version "7.32.0"
@@ -5185,51 +4219,6 @@ eslint@^7.32.0:
text-table "^0.2.0"
v8-compile-cache "^2.0.3"
-eslint@^8.3.0:
- version "8.28.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.28.0.tgz#81a680732634677cc890134bcdd9fdfea8e63d6e"
- integrity sha512-S27Di+EVyMxcHiwDrFzk8dJYAaD+/5SoWKxL1ri/71CRHsnJnRDPNt2Kzj24+MT9FDupf4aqqyqPrvI8MvQ4VQ==
- dependencies:
- "@eslint/eslintrc" "^1.3.3"
- "@humanwhocodes/config-array" "^0.11.6"
- "@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.1.1"
- eslint-utils "^3.0.0"
- eslint-visitor-keys "^3.3.0"
- espree "^9.4.0"
- esquery "^1.4.0"
- 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.15.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"
- regexpp "^3.2.0"
- strip-ansi "^6.0.1"
- strip-json-comments "^3.1.0"
- text-table "^0.2.0"
-
espree@^7.3.0, espree@^7.3.1:
version "7.3.1"
resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
@@ -5239,24 +4228,15 @@ espree@^7.3.0, espree@^7.3.1:
acorn-jsx "^5.3.1"
eslint-visitor-keys "^1.3.0"
-espree@^9.4.0:
- version "9.4.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
- integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
- dependencies:
- acorn "^8.8.0"
- acorn-jsx "^5.3.2"
- eslint-visitor-keys "^3.3.0"
-
-esprima@^4.0.0, esprima@^4.0.1:
+esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esquery@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5"
- integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b"
+ integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
dependencies:
estraverse "^5.1.0"
@@ -5282,27 +4262,22 @@ estree-walker@^1.0.1:
resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
-esutils@^2.0.2:
+estree-walker@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
+ integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
+
+esutils@^2.0.2, esutils@^2.0.3:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
-
eventemitter3@^4.0.0:
version "4.0.7"
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
-events@^3.2.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
- integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
-
-execa@^5.0.0, execa@^5.1.1:
+execa@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
@@ -5317,68 +4292,16 @@ execa@^5.0.0, execa@^5.1.1:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-exit@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c"
- integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
-
-expect@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74"
- integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==
- dependencies:
- "@jest/types" "^27.5.1"
- jest-get-type "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
-
expect@^29.0.0:
- version "29.2.2"
- resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.2.tgz#ba2dd0d7e818727710324a6e7f13dd0e6d086106"
- integrity sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw==
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/expect/-/expect-29.5.0.tgz#68c0509156cb2a0adb8865d413b137eeaae682f7"
+ integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==
dependencies:
- "@jest/expect-utils" "^29.2.2"
- jest-get-type "^29.2.0"
- jest-matcher-utils "^29.2.2"
- jest-message-util "^29.2.1"
- jest-util "^29.2.1"
-
-express@^4.17.3:
- version "4.18.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
- integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
- 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"
+ "@jest/expect-utils" "^29.5.0"
+ jest-get-type "^29.4.3"
+ jest-matcher-utils "^29.5.0"
+ jest-message-util "^29.5.0"
+ jest-util "^29.5.0"
fake-indexeddb@3.1.7:
version "3.1.7"
@@ -5397,6 +4320,11 @@ fast-diff@^1.1.2:
resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
+fast-diff@^1.2.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0"
+ integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==
+
fast-glob@^3.2.12, fast-glob@^3.2.9:
version "3.2.12"
resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.12.tgz#7f39ec99c2e6ab030337142da9e0c18f37afae80"
@@ -5408,20 +4336,31 @@ fast-glob@^3.2.12, fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
+fast-glob@^3.2.7:
+ version "3.3.1"
+ resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.1.tgz#784b4e897340f3dbbef17413b3f11acf03c874c4"
+ integrity sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==
+ 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"
+
fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
+fast-levenshtein@^2.0.6:
version "2.0.6"
resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
fastq@^1.6.0:
- version "1.13.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c"
- integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
+ integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
dependencies:
reusify "^1.0.4"
@@ -5432,19 +4371,10 @@ faye-websocket@0.11.3:
dependencies:
websocket-driver ">=0.5.1"
-faye-websocket@^0.11.3:
- version "0.11.4"
- resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
- integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
- dependencies:
- websocket-driver ">=0.5.1"
-
-fb-watchman@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c"
- integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
- dependencies:
- bser "2.1.1"
+fflate@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50"
+ integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw==
file-entry-cache@^6.0.1:
version "6.0.1"
@@ -5453,14 +4383,6 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
-file-loader@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-6.2.0.tgz#baef7cf8e1840df325e4390b4484879480eebe4d"
- integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
- dependencies:
- loader-utils "^2.0.0"
- schema-utils "^3.0.0"
-
filelist@^1.0.1:
version "1.0.4"
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
@@ -5468,11 +4390,6 @@ filelist@^1.0.1:
dependencies:
minimatch "^5.0.1"
-filesize@^8.0.6:
- version "8.0.7"
- resolved "https://registry.yarnpkg.com/filesize/-/filesize-8.0.7.tgz#695e70d80f4e47012c132d57a059e80c6b580bd8"
- integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==
-
fill-range@^7.0.1:
version "7.0.1"
resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
@@ -5480,51 +4397,6 @@ fill-range@^7.0.1:
dependencies:
to-regex-range "^5.0.1"
-finalhandler@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
- integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
- 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"
-
-find-cache-dir@^3.3.1:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b"
- integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
- dependencies:
- commondir "^1.0.1"
- make-dir "^3.0.2"
- pkg-dir "^4.1.0"
-
-find-up@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73"
- integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
- dependencies:
- locate-path "^3.0.0"
-
-find-up@^4.0.0, find-up@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
- integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
- dependencies:
- locate-path "^5.0.0"
- path-exists "^4.0.0"
-
-find-up@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
- integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
- dependencies:
- locate-path "^6.0.0"
- path-exists "^4.0.0"
-
firebase@8.3.3:
version "8.3.3"
resolved "https://registry.yarnpkg.com/firebase/-/firebase-8.3.3.tgz#21d8fb8eec2c43b0d8f98ab6bda5535b7454fa54"
@@ -5553,7 +4425,7 @@ flat-cache@^3.0.4:
flatted "^3.1.0"
rimraf "^3.0.2"
-flatted@^3.1.0:
+flatted@^3.1.0, flatted@^3.2.7:
version "3.2.7"
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787"
integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
@@ -5570,59 +4442,25 @@ for-each@^0.3.3:
dependencies:
is-callable "^1.1.3"
-fork-ts-checker-webpack-plugin@^6.5.0:
- version "6.5.2"
- resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.2.tgz#4f67183f2f9eb8ba7df7177ce3cf3e75cdafb340"
- integrity sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==
- dependencies:
- "@babel/code-frame" "^7.8.3"
- "@types/json-schema" "^7.0.5"
- chalk "^4.1.0"
- chokidar "^3.4.2"
- cosmiconfig "^6.0.0"
- deepmerge "^4.2.2"
- fs-extra "^9.0.0"
- glob "^7.1.6"
- memfs "^3.1.2"
- minimatch "^3.0.4"
- schema-utils "2.7.0"
- semver "^7.3.2"
- tapable "^1.0.0"
-
-form-data@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f"
- integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+form-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
+ integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.8"
mime-types "^2.1.12"
-forwarded@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
- integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
-
-fraction.js@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950"
- integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
-
-fs-extra@^10.0.0:
- version "10.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
- integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
+fs-extra@^11.1.0:
+ version "11.1.1"
+ resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-11.1.1.tgz#da69f7c39f3b002378b0954bb6ae7efdc0876e2d"
+ integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-extra@^9.0.0, fs-extra@^9.0.1:
+fs-extra@^9.0.1:
version "9.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
@@ -5632,17 +4470,12 @@ fs-extra@^9.0.0, fs-extra@^9.0.1:
jsonfile "^6.0.1"
universalify "^2.0.0"
-fs-monkey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
- integrity sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==
-
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@^2.3.2, fsevents@~2.3.2:
+fsevents@~2.3.2:
version "2.3.2"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
@@ -5687,25 +4520,25 @@ get-func-name@^2.0.0:
resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41"
integrity sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==
-get-intrinsic@^1.0.1, get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.3.tgz#063c84329ad93e83893c7f4f243ef63ffa351385"
- integrity sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==
+get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.0.tgz#7ad1dc0535f3a2904bba075772763e5051f6d05f"
+ integrity sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.3"
+get-nonce@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
+ integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
+
get-own-enumerable-property-symbols@^3.0.0:
version "3.0.2"
resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664"
integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
-get-package-type@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
- integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
-
get-stream@^6.0.0:
version "6.0.1"
resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@@ -5726,19 +4559,7 @@ glob-parent@^5.1.2, glob-parent@~5.1.2:
dependencies:
is-glob "^4.0.1"
-glob-parent@^6.0.2:
- version "6.0.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
- integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
- dependencies:
- is-glob "^4.0.3"
-
-glob-to-regexp@^0.4.1:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
- integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-
-glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
+glob@^7.1.3, glob@^7.1.6:
version "7.2.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -5750,42 +4571,26 @@ glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
once "^1.3.0"
path-is-absolute "^1.0.0"
-global-modules@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780"
- integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
- dependencies:
- global-prefix "^3.0.0"
-
-global-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97"
- integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
- dependencies:
- ini "^1.3.5"
- kind-of "^6.0.2"
- which "^1.3.1"
-
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.15.0:
- version "13.18.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.18.0.tgz#fb224daeeb2bb7d254cd2c640f003528b8d0c1dc"
- integrity sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==
- dependencies:
- type-fest "^0.20.2"
-
globals@^13.6.0, globals@^13.9.0:
- version "13.17.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4"
- integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==
+ version "13.20.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
+ integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
dependencies:
type-fest "^0.20.2"
-globby@^11.0.4, globby@^11.1.0:
+globalthis@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf"
+ integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==
+ dependencies:
+ define-properties "^1.1.3"
+
+globby@^11.1.0:
version "11.1.0"
resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -5802,33 +4607,23 @@ glur@^1.1.2:
resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689"
integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA==
-graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
- version "4.2.10"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
- integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
+gopd@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+ integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+ dependencies:
+ get-intrinsic "^1.1.3"
+
+graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.9:
+ version "4.2.11"
+ resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
+ integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
grapheme-splitter@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
-gzip-size@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
- integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
- dependencies:
- duplexer "^0.1.2"
-
-handle-thing@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
- integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
-
-harmony-reflect@^1.4.6:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710"
- integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==
-
has-bigints@^1.0.1, has-bigints@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa"
@@ -5863,7 +4658,12 @@ has-property-descriptors@^1.0.0:
dependencies:
get-intrinsic "^1.1.1"
-has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
+has-proto@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
+ integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
+
+has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
@@ -5887,123 +4687,27 @@ he@^1.2.0:
resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-hoopy@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
- integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
-
-hpack.js@^2.1.6:
- version "2.1.6"
- resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
- integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
+html-encoding-sniffer@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9"
+ integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
dependencies:
- inherits "^2.0.1"
- obuf "^1.0.0"
- readable-stream "^2.0.1"
- wbuf "^1.1.0"
-
-html-encoding-sniffer@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3"
- integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
- dependencies:
- whatwg-encoding "^1.0.5"
-
-html-entities@^2.1.0, html-entities@^2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46"
- integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==
-
-html-escaper@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453"
- integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
-
-html-minifier-terser@^6.0.2:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz#bfc818934cc07918f6b3669f5774ecdfd48f32ab"
- integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==
- dependencies:
- camel-case "^4.1.2"
- clean-css "^5.2.2"
- commander "^8.3.0"
- he "^1.2.0"
- param-case "^3.0.4"
- relateurl "^0.2.7"
- terser "^5.10.0"
-
-html-webpack-plugin@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/html-webpack-plugin/-/html-webpack-plugin-5.5.0.tgz#c3911936f57681c1f9f4d8b68c158cd9dfe52f50"
- integrity sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==
- dependencies:
- "@types/html-minifier-terser" "^6.0.0"
- html-minifier-terser "^6.0.2"
- lodash "^4.17.21"
- pretty-error "^4.0.0"
- tapable "^2.0.0"
-
-htmlparser2@^6.1.0:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7"
- integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
- dependencies:
- domelementtype "^2.0.1"
- domhandler "^4.0.0"
- domutils "^2.5.2"
- entities "^2.0.0"
-
-http-deceiver@^1.2.7:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
- integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
-
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
- dependencies:
- depd "2.0.0"
- inherits "2.0.4"
- setprototypeof "1.2.0"
- statuses "2.0.1"
- toidentifier "1.0.1"
-
-http-errors@~1.6.2:
- version "1.6.3"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
- integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
- dependencies:
- depd "~1.1.2"
- inherits "2.0.3"
- setprototypeof "1.1.0"
- statuses ">= 1.4.0 < 2"
+ whatwg-encoding "^2.0.0"
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
-http-proxy-agent@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a"
- integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+http-proxy-agent@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43"
+ integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
dependencies:
- "@tootallnate/once" "1"
+ "@tootallnate/once" "2"
agent-base "6"
debug "4"
-http-proxy-middleware@^2.0.3:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
- integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
- dependencies:
- "@types/http-proxy" "^1.17.8"
- http-proxy "^1.18.1"
- is-glob "^4.0.1"
- is-plain-obj "^3.0.0"
- micromatch "^4.0.2"
-
http-proxy@^1.18.1:
version "1.18.1"
resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
@@ -6013,7 +4717,26 @@ http-proxy@^1.18.1:
follow-redirects "^1.0.0"
requires-port "^1.0.0"
-https-proxy-agent@^5.0.0:
+http-server@14.1.1:
+ version "14.1.1"
+ resolved "https://registry.yarnpkg.com/http-server/-/http-server-14.1.1.tgz#d60fbb37d7c2fdff0f0fbff0d0ee6670bd285e2e"
+ integrity sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==
+ 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"
+
+https-proxy-agent@^5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6"
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
@@ -6038,25 +4761,13 @@ i18next-browser-languagedetector@6.1.4:
dependencies:
"@babel/runtime" "^7.14.6"
-iconv-lite@0.4.24:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-iconv-lite@^0.6.3:
+iconv-lite@0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
-icss-utils@^5.0.0, icss-utils@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae"
- integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
-
idb-keyval@6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.0.3.tgz#e47246a15e55d0fff9fa204fd9ca06f90ff30c52"
@@ -6074,22 +4785,15 @@ idb@^7.0.1:
resolved "https://registry.yarnpkg.com/idb/-/idb-7.1.1.tgz#d910ded866d32c7ced9befc5bfdf36f572ced72b"
integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==
-identity-obj-proxy@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz#94d2bda96084453ef36fbc5aaec37e0f79f1fc14"
- integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==
- dependencies:
- harmony-reflect "^1.4.6"
-
ignore@^4.0.6:
version "4.0.6"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
ignore@^5.2.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a"
- integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
+ version "5.2.4"
+ resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
+ integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
image-blob-reduce@3.0.1:
version "3.0.1"
@@ -6103,17 +4807,12 @@ immediate@~3.0.5:
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
-immer@^9.0.7:
- version "9.0.16"
- resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198"
- integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ==
-
immutable@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.1.0.tgz#f795787f0db780183307b9eb2091fcac1f6fafef"
- integrity sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.0.tgz#eb1738f14ffb39fd068b1dbe1296117484dd34be"
+ integrity sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==
-import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
+import-fresh@^3.0.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -6121,14 +4820,6 @@ import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1:
parent-module "^1.0.0"
resolve-from "^4.0.0"
-import-local@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
- integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
- dependencies:
- pkg-dir "^4.2.0"
- resolve-cwd "^3.0.0"
-
imurmurhash@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea"
@@ -6152,41 +4843,28 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@2, inherits@^2.0.3, inherits@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
-ini@^1.3.5:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
- integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-internal-slot@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c"
- integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==
+internal-slot@^1.0.3, internal-slot@^1.0.4, internal-slot@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
+ integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
dependencies:
- get-intrinsic "^1.1.0"
+ get-intrinsic "^1.2.0"
has "^1.0.3"
side-channel "^1.0.4"
-ipaddr.js@1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
+invariant@^2.2.4:
+ version "2.2.4"
+ resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
+ integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
+ dependencies:
+ loose-envify "^1.0.0"
-ipaddr.js@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
- integrity sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==
-
-is-arguments@^1.0.4, is-arguments@^1.1.0:
+is-arguments@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.1.tgz#15b3f88fda01f2a97fec84ca761a560f123efa9b"
integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==
@@ -6194,6 +4872,15 @@ is-arguments@^1.0.4, is-arguments@^1.1.0:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
+ version "3.0.2"
+ resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
+ integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
+ dependencies:
+ call-bind "^1.0.2"
+ get-intrinsic "^1.2.0"
+ is-typed-array "^1.1.10"
+
is-arrayish@^0.2.1:
version "0.2.1"
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
@@ -6226,25 +4913,27 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7:
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-is-core-module@^2.8.1, is-core-module@^2.9.0:
- version "2.11.0"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.11.0.tgz#ad4cb3e3863e814523c96f3f58d26cc570ff0144"
- integrity sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==
+is-core-module@^2.11.0:
+ version "2.12.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.1.tgz#0c0b6885b6f80011c71541ce15c8d66cf5a4f9fd"
+ integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==
dependencies:
has "^1.0.3"
-is-date-object@^1.0.1, is-date-object@^1.0.2:
+is-core-module@^2.9.0:
+ version "2.12.0"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.12.0.tgz#36ad62f6f73c8253fd6472517a12483cf03e7ec4"
+ integrity sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==
+ dependencies:
+ has "^1.0.3"
+
+is-date-object@^1.0.1, is-date-object@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f"
integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==
dependencies:
has-tostringtag "^1.0.0"
-is-docker@^2.0.0, is-docker@^2.1.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
- integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==
-
is-extglob@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
@@ -6260,11 +4949,6 @@ is-fullwidth-code-point@^4.0.0:
resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88"
integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==
-is-generator-fn@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118"
- integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
-
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
version "4.0.3"
resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
@@ -6304,22 +4988,12 @@ is-obj@^1.0.1:
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==
-is-path-inside@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
- integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-
-is-plain-obj@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
- integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
-
is-potential-custom-element-name@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5"
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
-is-regex@^1.1.1, is-regex@^1.1.4:
+is-regex@^1.1.4:
version "1.1.4"
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==
@@ -6332,11 +5006,6 @@ is-regexp@^1.0.0:
resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069"
integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==
-is-root@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-root/-/is-root-2.1.0.tgz#809e18129cf1129644302a4f8544035d51984a9c"
- integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
-
is-set@^2.0.1, is-set@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec"
@@ -6368,22 +5037,17 @@ is-symbol@^1.0.2, is-symbol@^1.0.3:
dependencies:
has-symbols "^1.0.2"
-is-typed-array@^1.1.9:
- version "1.1.9"
- resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.9.tgz#246d77d2871e7d9f5aeb1d54b9f52c71329ece67"
- integrity sha512-kfrlnTTn8pZkfpJMUgYD7YZ3qzeJgWUn8XfVYBARc4wnmNOmLbmuuaAs3q5fvB0UJOn6yHAKaGTPM7d6ezoD/A==
+is-typed-array@^1.1.10, is-typed-array@^1.1.9:
+ version "1.1.10"
+ resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.10.tgz#36a5b5cb4189b575d1a3e4b08536bfb485801e3f"
+ integrity sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==
dependencies:
available-typed-arrays "^1.0.5"
call-bind "^1.0.2"
- es-abstract "^1.20.0"
for-each "^0.3.3"
+ gopd "^1.0.1"
has-tostringtag "^1.0.0"
-is-typedarray@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
-
is-weakmap@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2"
@@ -6404,13 +5068,6 @@ is-weakset@^2.0.1:
call-bind "^1.0.2"
get-intrinsic "^1.1.1"
-is-wsl@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
- integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==
- dependencies:
- is-docker "^2.0.0"
-
isarray@2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.1.tgz#a37d94ed9cda2d59865c9f76fe596ee1f338741e"
@@ -6421,58 +5078,11 @@ isarray@^2.0.5:
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
isexe@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3"
- integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
-
-istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d"
- integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
- 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"
-
-istanbul-lib-report@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6"
- integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
- dependencies:
- istanbul-lib-coverage "^3.0.0"
- make-dir "^3.0.0"
- supports-color "^7.1.0"
-
-istanbul-lib-source-maps@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551"
- integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
- dependencies:
- debug "^4.1.1"
- istanbul-lib-coverage "^3.0.0"
- source-map "^0.6.1"
-
-istanbul-reports@^3.1.3:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae"
- integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
- dependencies:
- html-escaper "^2.0.0"
- istanbul-lib-report "^3.0.0"
-
jake@^10.8.5:
version "10.8.5"
resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46"
@@ -6483,7 +5093,7 @@ jake@^10.8.5:
filelist "^1.0.1"
minimatch "^3.0.4"
-jest-canvas-mock@2.4.0:
+jest-canvas-mock@~2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/jest-canvas-mock/-/jest-canvas-mock-2.4.0.tgz#947b71442d7719f8e055decaecdb334809465341"
integrity sha512-mmMpZzpmLzn5vepIaHk5HoH3Ka4WykbSoLuG/EKoJd0x0ID/t+INo1l8ByfcUJuDM+RIsL4QDg/gDnBbrj2/IQ==
@@ -6491,89 +5101,7 @@ jest-canvas-mock@2.4.0:
cssfontparser "^1.2.1"
moo-color "^1.0.2"
-jest-changed-files@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5"
- integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==
- dependencies:
- "@jest/types" "^27.5.1"
- execa "^5.0.0"
- throat "^6.0.1"
-
-jest-circus@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc"
- integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- chalk "^4.0.0"
- co "^4.6.0"
- dedent "^0.7.0"
- expect "^27.5.1"
- is-generator-fn "^2.0.0"
- jest-each "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
- slash "^3.0.0"
- stack-utils "^2.0.3"
- throat "^6.0.1"
-
-jest-cli@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145"
- integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==
- dependencies:
- "@jest/core" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
- chalk "^4.0.0"
- exit "^0.1.2"
- graceful-fs "^4.2.9"
- import-local "^3.0.2"
- jest-config "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
- prompts "^2.0.1"
- yargs "^16.2.0"
-
-jest-config@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41"
- integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==
- dependencies:
- "@babel/core" "^7.8.0"
- "@jest/test-sequencer" "^27.5.1"
- "@jest/types" "^27.5.1"
- babel-jest "^27.5.1"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- deepmerge "^4.2.2"
- glob "^7.1.1"
- graceful-fs "^4.2.9"
- jest-circus "^27.5.1"
- jest-environment-jsdom "^27.5.1"
- jest-environment-node "^27.5.1"
- jest-get-type "^27.5.1"
- jest-jasmine2 "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-runner "^27.5.1"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
- micromatch "^4.0.4"
- parse-json "^5.2.0"
- pretty-format "^27.5.1"
- slash "^3.0.0"
- strip-json-comments "^3.1.1"
-
-jest-diff@^27.0.0, jest-diff@^27.5.1:
+jest-diff@^27.0.0:
version "27.5.1"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def"
integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
@@ -6583,412 +5111,63 @@ jest-diff@^27.0.0, jest-diff@^27.5.1:
jest-get-type "^27.5.1"
pretty-format "^27.5.1"
-jest-diff@^29.2.1:
- version "29.2.1"
- resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.2.1.tgz#027e42f5a18b693fb2e88f81b0ccab533c08faee"
- integrity sha512-gfh/SMNlQmP3MOUgdzxPOd4XETDJifADpT937fN1iUGz+9DgOu2eUPHH25JDkLVcLwwqxv3GzVyK4VBUr9fjfA==
+jest-diff@^29.5.0:
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.5.0.tgz#e0d83a58eb5451dcc1fa61b1c3ee4e8f5a290d63"
+ integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==
dependencies:
chalk "^4.0.0"
- diff-sequences "^29.2.0"
- jest-get-type "^29.2.0"
- pretty-format "^29.2.1"
-
-jest-docblock@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0"
- integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==
- dependencies:
- detect-newline "^3.0.0"
-
-jest-each@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e"
- integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==
- dependencies:
- "@jest/types" "^27.5.1"
- chalk "^4.0.0"
- jest-get-type "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
-
-jest-environment-jsdom@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546"
- integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
- jsdom "^16.6.0"
-
-jest-environment-node@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e"
- integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- jest-mock "^27.5.1"
- jest-util "^27.5.1"
+ diff-sequences "^29.4.3"
+ jest-get-type "^29.4.3"
+ pretty-format "^29.5.0"
jest-get-type@^27.5.1:
version "27.5.1"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1"
integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
-jest-get-type@^29.2.0:
- version "29.2.0"
- resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.2.0.tgz#726646f927ef61d583a3b3adb1ab13f3a5036408"
- integrity sha512-uXNJlg8hKFEnDgFsrCjznB+sTxdkuqiCL6zMgA75qEbAJjJYTs9XPrvDctrEig2GDow22T/LvHgO57iJhXB/UA==
+jest-get-type@^29.4.3:
+ version "29.4.3"
+ resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.4.3.tgz#1ab7a5207c995161100b5187159ca82dd48b3dd5"
+ integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==
-jest-haste-map@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f"
- integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==
- dependencies:
- "@jest/types" "^27.5.1"
- "@types/graceful-fs" "^4.1.2"
- "@types/node" "*"
- anymatch "^3.0.3"
- fb-watchman "^2.0.0"
- graceful-fs "^4.2.9"
- jest-regex-util "^27.5.1"
- jest-serializer "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
- micromatch "^4.0.4"
- walker "^1.0.7"
- optionalDependencies:
- fsevents "^2.3.2"
-
-jest-jasmine2@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4"
- integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/source-map" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- chalk "^4.0.0"
- co "^4.6.0"
- expect "^27.5.1"
- is-generator-fn "^2.0.0"
- jest-each "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-runtime "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- pretty-format "^27.5.1"
- throat "^6.0.1"
-
-jest-leak-detector@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8"
- integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==
- dependencies:
- jest-get-type "^27.5.1"
- pretty-format "^27.5.1"
-
-jest-matcher-utils@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab"
- integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
+jest-matcher-utils@^29.5.0:
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz#d957af7f8c0692c5453666705621ad4abc2c59c5"
+ integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==
dependencies:
chalk "^4.0.0"
- jest-diff "^27.5.1"
- jest-get-type "^27.5.1"
- pretty-format "^27.5.1"
+ jest-diff "^29.5.0"
+ jest-get-type "^29.4.3"
+ pretty-format "^29.5.0"
-jest-matcher-utils@^29.2.2:
- version "29.2.2"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c"
- integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw==
- dependencies:
- chalk "^4.0.0"
- jest-diff "^29.2.1"
- jest-get-type "^29.2.0"
- pretty-format "^29.2.1"
-
-jest-message-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf"
- integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==
+jest-message-util@^29.5.0:
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.5.0.tgz#1f776cac3aca332ab8dd2e3b41625435085c900e"
+ integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==
dependencies:
"@babel/code-frame" "^7.12.13"
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.5.0"
"@types/stack-utils" "^2.0.0"
chalk "^4.0.0"
graceful-fs "^4.2.9"
micromatch "^4.0.4"
- pretty-format "^27.5.1"
+ pretty-format "^29.5.0"
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-message-util@^28.1.3:
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d"
- integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==
+jest-util@^29.5.0:
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.5.0.tgz#24a4d3d92fc39ce90425311b23c27a6e0ef16b8f"
+ integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==
dependencies:
- "@babel/code-frame" "^7.12.13"
- "@jest/types" "^28.1.3"
- "@types/stack-utils" "^2.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- micromatch "^4.0.4"
- pretty-format "^28.1.3"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
-jest-message-util@^29.2.1:
- version "29.2.1"
- resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-29.2.1.tgz#3a51357fbbe0cc34236f17a90d772746cf8d9193"
- integrity sha512-Dx5nEjw9V8C1/Yj10S/8ivA8F439VS8vTq1L7hEgwHFn9ovSKNpYW/kwNh7UglaEgXO42XxzKJB+2x0nSglFVw==
- dependencies:
- "@babel/code-frame" "^7.12.13"
- "@jest/types" "^29.2.1"
- "@types/stack-utils" "^2.0.0"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- micromatch "^4.0.4"
- pretty-format "^29.2.1"
- slash "^3.0.0"
- stack-utils "^2.0.3"
-
-jest-mock@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6"
- integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==
- dependencies:
- "@jest/types" "^27.5.1"
- "@types/node" "*"
-
-jest-pnp-resolver@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c"
- integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
-
-jest-regex-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95"
- integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==
-
-jest-regex-util@^28.0.0:
- version "28.0.2"
- resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead"
- integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
-
-jest-resolve-dependencies@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8"
- integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==
- dependencies:
- "@jest/types" "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-snapshot "^27.5.1"
-
-jest-resolve@^27.4.2, jest-resolve@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384"
- integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
- dependencies:
- "@jest/types" "^27.5.1"
- chalk "^4.0.0"
- graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-pnp-resolver "^1.2.2"
- jest-util "^27.5.1"
- jest-validate "^27.5.1"
- resolve "^1.20.0"
- resolve.exports "^1.1.0"
- slash "^3.0.0"
-
-jest-runner@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5"
- integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==
- dependencies:
- "@jest/console" "^27.5.1"
- "@jest/environment" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- chalk "^4.0.0"
- emittery "^0.8.1"
- graceful-fs "^4.2.9"
- jest-docblock "^27.5.1"
- jest-environment-jsdom "^27.5.1"
- jest-environment-node "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-leak-detector "^27.5.1"
- jest-message-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-runtime "^27.5.1"
- jest-util "^27.5.1"
- jest-worker "^27.5.1"
- source-map-support "^0.5.6"
- throat "^6.0.1"
-
-jest-runtime@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af"
- integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==
- dependencies:
- "@jest/environment" "^27.5.1"
- "@jest/fake-timers" "^27.5.1"
- "@jest/globals" "^27.5.1"
- "@jest/source-map" "^27.5.1"
- "@jest/test-result" "^27.5.1"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- chalk "^4.0.0"
- cjs-module-lexer "^1.0.0"
- collect-v8-coverage "^1.0.0"
- execa "^5.0.0"
- glob "^7.1.3"
- graceful-fs "^4.2.9"
- jest-haste-map "^27.5.1"
- jest-message-util "^27.5.1"
- jest-mock "^27.5.1"
- jest-regex-util "^27.5.1"
- jest-resolve "^27.5.1"
- jest-snapshot "^27.5.1"
- jest-util "^27.5.1"
- slash "^3.0.0"
- strip-bom "^4.0.0"
-
-jest-serializer@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64"
- integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==
- dependencies:
- "@types/node" "*"
- graceful-fs "^4.2.9"
-
-jest-snapshot@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1"
- integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==
- dependencies:
- "@babel/core" "^7.7.2"
- "@babel/generator" "^7.7.2"
- "@babel/plugin-syntax-typescript" "^7.7.2"
- "@babel/traverse" "^7.7.2"
- "@babel/types" "^7.0.0"
- "@jest/transform" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/babel__traverse" "^7.0.4"
- "@types/prettier" "^2.1.5"
- babel-preset-current-node-syntax "^1.0.0"
- chalk "^4.0.0"
- expect "^27.5.1"
- graceful-fs "^4.2.9"
- jest-diff "^27.5.1"
- jest-get-type "^27.5.1"
- jest-haste-map "^27.5.1"
- jest-matcher-utils "^27.5.1"
- jest-message-util "^27.5.1"
- jest-util "^27.5.1"
- natural-compare "^1.4.0"
- pretty-format "^27.5.1"
- semver "^7.3.2"
-
-jest-util@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9"
- integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==
- dependencies:
- "@jest/types" "^27.5.1"
+ "@jest/types" "^29.5.0"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
graceful-fs "^4.2.9"
picomatch "^2.2.3"
-jest-util@^28.1.3:
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0"
- integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==
- dependencies:
- "@jest/types" "^28.1.3"
- "@types/node" "*"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- graceful-fs "^4.2.9"
- picomatch "^2.2.3"
-
-jest-util@^29.2.1:
- version "29.2.1"
- resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.2.1.tgz#f26872ba0dc8cbefaba32c34f98935f6cf5fc747"
- integrity sha512-P5VWDj25r7kj7kl4pN2rG/RN2c1TLfYYYZYULnS/35nFDjBai+hBeo3MDrYZS7p6IoY3YHZnt2vq4L6mKnLk0g==
- dependencies:
- "@jest/types" "^29.2.1"
- "@types/node" "*"
- chalk "^4.0.0"
- ci-info "^3.2.0"
- graceful-fs "^4.2.9"
- picomatch "^2.2.3"
-
-jest-validate@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067"
- integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==
- dependencies:
- "@jest/types" "^27.5.1"
- camelcase "^6.2.0"
- chalk "^4.0.0"
- jest-get-type "^27.5.1"
- leven "^3.1.0"
- pretty-format "^27.5.1"
-
-jest-watch-typeahead@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz#b4a6826dfb9c9420da2f7bc900de59dad11266a9"
- integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==
- dependencies:
- ansi-escapes "^4.3.1"
- chalk "^4.0.0"
- jest-regex-util "^28.0.0"
- jest-watcher "^28.0.0"
- slash "^4.0.0"
- string-length "^5.0.1"
- strip-ansi "^7.0.1"
-
-jest-watcher@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2"
- integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==
- dependencies:
- "@jest/test-result" "^27.5.1"
- "@jest/types" "^27.5.1"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- jest-util "^27.5.1"
- string-length "^4.0.1"
-
-jest-watcher@^28.0.0:
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4"
- integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==
- dependencies:
- "@jest/test-result" "^28.1.3"
- "@jest/types" "^28.1.3"
- "@types/node" "*"
- ansi-escapes "^4.2.1"
- chalk "^4.0.0"
- emittery "^0.10.2"
- jest-util "^28.1.3"
- string-length "^4.0.1"
-
jest-worker@^26.2.1:
version "26.6.2"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed"
@@ -6998,42 +5177,15 @@ jest-worker@^26.2.1:
merge-stream "^2.0.0"
supports-color "^7.0.0"
-jest-worker@^27.0.2, jest-worker@^27.4.5, jest-worker@^27.5.1:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
- integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
- dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
+jotai@1.13.1:
+ version "1.13.1"
+ resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.13.1.tgz#20cc46454cbb39096b12fddfa635b873b3668236"
+ integrity sha512-RUmH1S4vLsG3V6fbGlKzGJnLrDcC/HNb5gH2AeA9DzuJknoVxSGvvg8OBB7lke+gDc4oXmdVsaKn/xDUhWZ0vw==
-jest-worker@^28.0.2:
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98"
- integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==
- dependencies:
- "@types/node" "*"
- merge-stream "^2.0.0"
- supports-color "^8.0.0"
-
-jest@^27.4.3:
- version "27.5.1"
- resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc"
- integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
- dependencies:
- "@jest/core" "^27.5.1"
- import-local "^3.0.2"
- jest-cli "^27.5.1"
-
-jotai@1.6.4:
- version "1.6.4"
- resolved "https://registry.yarnpkg.com/jotai/-/jotai-1.6.4.tgz#4d9904362c53c4293d32e21fb358d3de34b82912"
- integrity sha512-XC0ExLhdE6FEBdIjKTe6kMlHaAUV/QiwN7vZond76gNr/WdcdonJOEW79+5t8u38sR41bJXi26B1dRi7cCRz9A==
-
-js-sdsl@^4.1.4:
- version "4.1.5"
- resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.5.tgz#1ff1645e6b4d1b028cd3f862db88c9d887f26e2a"
- integrity sha512-08bOAKweV2NUC1wqTtf3qZlnpOX/R2DU9ikpjOHs0H+ibQv3zpncVQg6um4uYtRtrwIX8M4Nh3ytK4HGlYAq7Q==
+js-string-escape@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/js-string-escape/-/js-string-escape-1.0.1.tgz#e2625badbc0d67c7533e9edc1068c587ae4137ef"
+ integrity sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
@@ -7048,45 +5200,34 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+jsdom@22.1.0:
+ version "22.1.0"
+ resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-22.1.0.tgz#0fca6d1a37fbeb7f4aac93d1090d782c56b611c8"
+ integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==
dependencies:
- argparse "^2.0.1"
-
-jsdom@^16.6.0:
- version "16.7.0"
- resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710"
- integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==
- dependencies:
- abab "^2.0.5"
- acorn "^8.2.4"
- acorn-globals "^6.0.0"
- cssom "^0.4.4"
- cssstyle "^2.3.0"
- data-urls "^2.0.0"
- decimal.js "^10.2.1"
- domexception "^2.0.1"
- escodegen "^2.0.0"
- form-data "^3.0.0"
- html-encoding-sniffer "^2.0.1"
- http-proxy-agent "^4.0.1"
- https-proxy-agent "^5.0.0"
+ abab "^2.0.6"
+ cssstyle "^3.0.0"
+ data-urls "^4.0.0"
+ decimal.js "^10.4.3"
+ domexception "^4.0.0"
+ form-data "^4.0.0"
+ html-encoding-sniffer "^3.0.0"
+ http-proxy-agent "^5.0.0"
+ https-proxy-agent "^5.0.1"
is-potential-custom-element-name "^1.0.1"
- nwsapi "^2.2.0"
- parse5 "6.0.1"
- saxes "^5.0.1"
+ nwsapi "^2.2.4"
+ parse5 "^7.1.2"
+ rrweb-cssom "^0.6.0"
+ saxes "^6.0.0"
symbol-tree "^3.2.4"
- tough-cookie "^4.0.0"
- w3c-hr-time "^1.0.2"
- w3c-xmlserializer "^2.0.0"
- webidl-conversions "^6.1.0"
- whatwg-encoding "^1.0.5"
- whatwg-mimetype "^2.3.0"
- whatwg-url "^8.5.0"
- ws "^7.4.6"
- xml-name-validator "^3.0.0"
+ tough-cookie "^4.1.2"
+ w3c-xmlserializer "^4.0.0"
+ webidl-conversions "^7.0.0"
+ whatwg-encoding "^2.0.0"
+ whatwg-mimetype "^3.0.0"
+ whatwg-url "^12.0.1"
+ ws "^8.13.0"
+ xml-name-validator "^4.0.0"
jsesc@^2.5.1:
version "2.5.2"
@@ -7098,7 +5239,7 @@ jsesc@~0.5.0:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
integrity sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==
-json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
+json-parse-even-better-errors@^2.3.0:
version "2.3.1"
resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -7123,17 +5264,22 @@ json-stable-stringify-without-jsonify@^1.0.1:
resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
-json5@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe"
- integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==
+json5@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
+ integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
dependencies:
minimist "^1.2.0"
-json5@^2.1.2, json5@^2.2.0, json5@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
- integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
+json5@^2.2.0, json5@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283"
+ integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
+
+jsonc-parser@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.2.0.tgz#31ff3f4c2b9793f89c67212627c51c6394f88e76"
+ integrity sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==
jsonfile@^6.0.1:
version "6.1.0"
@@ -7149,7 +5295,7 @@ jsonpointer@^5.0.0:
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-5.0.1.tgz#2110e0af0900fd37467b5907ecd13a7884a1b559"
integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
-"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.2:
+"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.3:
version "3.3.3"
resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz#76b3e6e6cece5c69d49a5792c3d01bd1a0cdc7ea"
integrity sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==
@@ -7157,27 +5303,12 @@ jsonpointer@^5.0.0:
array-includes "^3.1.5"
object.assign "^4.1.3"
-kind-of@^6.0.2:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-kleur@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e"
- integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
-
-klona@^2.0.4, klona@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc"
- integrity sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==
-
language-subtag-registry@~0.3.2:
version "0.3.22"
resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz#2e1500861b2e457eba7e7ae86877cbd08fa1fd1d"
integrity sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==
-language-tags@^1.0.5:
+language-tags@=1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/language-tags/-/language-tags-1.0.5.tgz#d321dbc4da30ba8bf3024e040fa5c14661f9193a"
integrity sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==
@@ -7197,14 +5328,6 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
-levn@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee"
- integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
- dependencies:
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
-
lie@3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/lie/-/lie-3.1.1.tgz#9a436b2cc7746ca59de7a41fa469b3efb76bd87e"
@@ -7217,11 +5340,6 @@ lilconfig@2.0.4:
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.4.tgz#f4507d043d7058b380b6a8f5cb7bcd4b34cee082"
integrity sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==
-lilconfig@^2.0.3, lilconfig@^2.0.5, lilconfig@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.6.tgz#32a384558bd58af3d4c6e077dd1ad1d397bc69d4"
- integrity sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==
-
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
@@ -7261,33 +5379,10 @@ listr2@^4.0.1:
through "^2.3.8"
wrap-ansi "^7.0.0"
-loader-runner@^4.2.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
- integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
-
-loader-utils@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1"
- integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^3.0.0"
- json5 "^2.1.2"
-
-loader-utils@^2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c"
- integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
- dependencies:
- big.js "^5.2.2"
- emojis-list "^3.0.0"
- json5 "^2.1.2"
-
-loader-utils@^3.2.0:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576"
- integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==
+local-pkg@^0.4.3:
+ version "0.4.3"
+ resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.3.tgz#0ff361ab3ae7f1c19113d9bb97b98b905dbc4963"
+ integrity sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==
localforage@^1.8.1:
version "1.10.0"
@@ -7296,28 +5391,6 @@ localforage@^1.8.1:
dependencies:
lie "3.1.1"
-locate-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e"
- integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
- dependencies:
- p-locate "^3.0.0"
- path-exists "^3.0.0"
-
-locate-path@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
- integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
- dependencies:
- p-locate "^4.1.0"
-
-locate-path@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
- integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
- dependencies:
- p-locate "^5.0.0"
-
lodash.camelcase@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6"
@@ -7328,16 +5401,16 @@ lodash.debounce@^4.0.8:
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
-lodash.memoize@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
- integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
-
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
+lodash.pick@^4.4.0:
+ version "4.4.0"
+ resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
+ integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==
+
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@@ -7353,12 +5426,7 @@ lodash.truncate@^4.4.2:
resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-lodash.uniq@^4.5.0:
- version "4.5.0"
- resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
- integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
-
-lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
+lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -7379,30 +5447,30 @@ long@^4.0.0:
integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==
long@^5.0.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/long/-/long-5.2.0.tgz#2696dadf4b4da2ce3f6f6b89186085d94d52fd61"
- integrity sha512-9RTUNjK60eJbx3uz+TEGF7fUr29ZDxR5QzXcyDpeSfeH28S9ycINflOgOlppit5U+4kNTe83KQnMEerw7GmE8w==
+ version "5.2.1"
+ resolved "https://registry.yarnpkg.com/long/-/long-5.2.1.tgz#e27595d0083d103d2fa2c20c7699f8e0c92b897f"
+ integrity sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==
-loose-envify@^1.1.0, loose-envify@^1.4.0:
+loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
dependencies:
js-tokens "^3.0.0 || ^4.0.0"
-loupe@^2.3.1:
- version "2.3.4"
- resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3"
- integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==
+loupe@^2.3.1, loupe@^2.3.6:
+ version "2.3.6"
+ resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.6.tgz#76e4af498103c532d1ecc9be102036a21f787b53"
+ integrity sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==
dependencies:
get-func-name "^2.0.0"
-lower-case@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
- integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+lru-cache@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920"
+ integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
dependencies:
- tslib "^2.0.3"
+ yallist "^3.0.2"
lru-cache@^6.0.0:
version "6.0.0"
@@ -7412,9 +5480,9 @@ lru-cache@^6.0.0:
yallist "^4.0.0"
lz-string@^1.4.4:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.4.4.tgz#c0d8eaf36059f705796e1e344811cf4c498d3a26"
- integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==
+ version "1.5.0"
+ resolved "https://registry.yarnpkg.com/lz-string/-/lz-string-1.5.0.tgz#c1ab50f77887b712621201ba9fd4e3a6ed099941"
+ integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
magic-string@^0.25.0, magic-string@^0.25.7:
version "0.25.9"
@@ -7423,46 +5491,26 @@ magic-string@^0.25.0, magic-string@^0.25.7:
dependencies:
sourcemap-codec "^1.4.8"
-make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f"
- integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
+magic-string@^0.27.0:
+ version "0.27.0"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3"
+ integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==
dependencies:
- semver "^6.0.0"
+ "@jridgewell/sourcemap-codec" "^1.4.13"
-makeerror@1.0.12:
- version "1.0.12"
- resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a"
- integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
+magic-string@^0.30.0:
+ version "0.30.0"
+ resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.0.tgz#fd58a4748c5c4547338a424e90fa5dd17f4de529"
+ integrity sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==
dependencies:
- tmpl "1.0.5"
+ "@jridgewell/sourcemap-codec" "^1.4.13"
-mdn-data@2.0.14:
- version "2.0.14"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
- integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
-
-mdn-data@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
- integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
-
-memfs@^3.1.2, memfs@^3.4.3:
- version "3.4.11"
- resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.4.11.tgz#3a34837ade675825d805a2c135e88cefe5e53aaf"
- integrity sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==
+md5-hex@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/md5-hex/-/md5-hex-3.0.1.tgz#be3741b510591434b2784d79e556eefc2c9a8e5c"
+ integrity sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==
dependencies:
- fs-monkey "^1.0.3"
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+ blueimp-md5 "^2.10.0"
merge-stream@^2.0.0:
version "2.0.0"
@@ -7474,12 +5522,7 @@ merge2@^1.3.0, merge2@^1.4.1:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-
-micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
+micromatch@^4.0.4:
version "4.0.5"
resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
@@ -7487,19 +5530,19 @@ micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
braces "^3.0.2"
picomatch "^2.3.1"
-mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
+mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12:
version "2.1.35"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
-mime@1.6.0:
+mime@^1.6.0:
version "1.6.0"
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
@@ -7514,19 +5557,7 @@ min-indent@^1.0.0:
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
-mini-css-extract-plugin@^2.4.5:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.0.tgz#d7d9ba0c5b596d155e36e2b174082fc7f010dd64"
- integrity sha512-auqtVo8KhTScMsba7MbijqZTfibbXiBNlPAQbsVt7enQfcDYLdgG57eGxMqwVU3mfeWANY4F1wUg+rMF+ycZgw==
- dependencies:
- schema-utils "^4.0.0"
-
-minimalistic-assert@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
-minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -7534,24 +5565,34 @@ minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
brace-expansion "^1.1.7"
minimatch@^5.0.1:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7"
- integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==
+ version "5.1.6"
+ resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96"
+ integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
dependencies:
brace-expansion "^2.0.1"
minimist@^1.2.0, minimist@^1.2.6:
- version "1.2.7"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18"
- integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==
+ version "1.2.8"
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
+ integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-mkdirp@~0.5.1:
+mkdirp@^0.5.6:
version "0.5.6"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
dependencies:
minimist "^1.2.6"
+mlly@^1.2.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.4.0.tgz#830c10d63f1f97bd8785377b24dc2a15d972832b"
+ integrity sha512-ua8PAThnTwpprIaU47EPeZ/bPUVp2QYBbWMphUQpVdBI3Lgqzm5KZQ45Agm3YJedHXaIHl6pBGabaLSUPPSptg==
+ dependencies:
+ acorn "^8.9.0"
+ pathe "^1.1.1"
+ pkg-types "^1.0.3"
+ ufo "^1.1.2"
+
moo-color@^1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/moo-color/-/moo-color-1.0.3.tgz#d56435f8359c8284d83ac58016df7427febece74"
@@ -7559,6 +5600,11 @@ moo-color@^1.0.2:
dependencies:
color-name "^1.1.4"
+mrmime@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27"
+ integrity sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
@@ -7569,19 +5615,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-ms@2.1.3, ms@^2.1.1:
+ms@^2.1.1:
version "2.1.3"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-multicast-dns@^7.2.5:
- version "7.2.5"
- resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
- integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
- dependencies:
- dns-packet "^5.2.2"
- thunky "^1.0.2"
-
multimath@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/multimath/-/multimath-2.0.0.tgz#0d37acf67c328f30e3d8c6b0d3209e6082710302"
@@ -7595,10 +5633,10 @@ nanoid@3.3.3:
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25"
integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==
-nanoid@^3.3.4:
- version "3.3.4"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
- integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
+nanoid@^3.3.6:
+ version "3.3.6"
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
+ integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
natural-compare-lite@^1.4.0:
version "1.4.0"
@@ -7610,59 +5648,21 @@ natural-compare@^1.4.0:
resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7"
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
-negotiator@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
- integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
-
-neo-async@^2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
- integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
-
-no-case@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
- integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
- dependencies:
- lower-case "^2.0.2"
- tslib "^2.0.3"
-
node-fetch@2.6.1:
version "2.6.1"
resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052"
integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==
-node-forge@^1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
- integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
-
-node-int64@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b"
- integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
-
-node-releases@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
- integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
+node-releases@^2.0.8:
+ version "2.0.10"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
+ integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-normalize-range@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
- integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
-
-normalize-url@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a"
- integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
-
npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
@@ -7670,41 +5670,22 @@ npm-run-path@^4.0.1:
dependencies:
path-key "^3.0.0"
-nth-check@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c"
- integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
- dependencies:
- boolbase "~1.0.0"
-
-nth-check@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
- integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
- dependencies:
- boolbase "^1.0.0"
-
-nwsapi@^2.2.0:
- version "2.2.2"
- resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.2.tgz#e5418863e7905df67d51ec95938d67bf801f0bb0"
- integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==
+nwsapi@^2.2.4:
+ version "2.2.5"
+ resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.5.tgz#a52744c61b3889dd44b0a158687add39b8d935e2"
+ integrity sha512-6xpotnECFy/og7tKSBVmUNft7J3jyXAka4XvG6AUhFWRz+Q/Ljus7znJAA3bxColfQLdS+XsjoodtJfCgeTEFQ==
object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-object-hash@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/object-hash/-/object-hash-3.0.0.tgz#73f97f753e7baffc0e2cc9d6e079079744ac82e9"
- integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+object-inspect@^1.12.0, object-inspect@^1.12.3, object-inspect@^1.9.0:
+ version "1.12.3"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
+ integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
-object-inspect@^1.12.0, object-inspect@^1.12.2, object-inspect@^1.9.0:
- version "1.12.2"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
- integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
-
-object-is@^1.1.4:
+object-is@^1.1.5:
version "1.1.5"
resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac"
integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==
@@ -7717,7 +5698,7 @@ object-keys@^1.1.1:
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-object.assign@^4.1.2, object.assign@^4.1.3, object.assign@^4.1.4:
+object.assign@^4.1.3, object.assign@^4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
@@ -7745,16 +5726,6 @@ object.fromentries@^2.0.6:
define-properties "^1.1.4"
es-abstract "^1.20.4"
-object.getownpropertydescriptors@^2.1.0:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.4.tgz#7965e6437a57278b587383831a9b829455a4bc37"
- integrity sha512-sccv3L/pMModT6dJAYF3fzGMVcb38ysQ0tEE6ixv2yXJDtEIPph268OlAdJj5/qZMZDq2g/jqvwppt36uS/uQQ==
- dependencies:
- array.prototype.reduce "^1.0.4"
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- es-abstract "^1.20.1"
-
object.hasown@^1.1.2:
version "1.1.2"
resolved "https://registry.yarnpkg.com/object.hasown/-/object.hasown-1.1.2.tgz#f919e21fad4eb38a57bc6345b3afd496515c3f92"
@@ -7763,15 +5734,6 @@ object.hasown@^1.1.2:
define-properties "^1.1.4"
es-abstract "^1.20.4"
-object.values@^1.1.0, object.values@^1.1.5:
- version "1.1.5"
- resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac"
- integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.3"
- es-abstract "^1.19.1"
-
object.values@^1.1.6:
version "1.1.6"
resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.6.tgz#4abbaa71eba47d63589d402856f908243eea9b1d"
@@ -7781,23 +5743,6 @@ object.values@^1.1.6:
define-properties "^1.1.4"
es-abstract "^1.20.4"
-obuf@^1.0.0, obuf@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
-on-finished@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
- integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
- dependencies:
- ee-first "1.1.1"
-
-on-headers@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
- integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==
-
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
@@ -7817,26 +5762,10 @@ open-color@1.9.1:
resolved "https://registry.yarnpkg.com/open-color/-/open-color-1.9.1.tgz#a6e6328f60eff7aa60e3e8fcfa50f53ff3eece35"
integrity sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw==
-open@^8.0.9, open@^8.4.0:
- version "8.4.0"
- resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
- integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==
- dependencies:
- define-lazy-prop "^2.0.0"
- is-docker "^2.1.1"
- is-wsl "^2.2.0"
-
-optionator@^0.8.1:
- version "0.8.3"
- resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495"
- integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
- dependencies:
- deep-is "~0.1.3"
- fast-levenshtein "~2.0.6"
- levn "~0.3.0"
- prelude-ls "~1.1.2"
- type-check "~0.3.2"
- word-wrap "~1.2.3"
+opener@^1.5.1:
+ version "1.5.2"
+ resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598"
+ integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==
optionator@^0.9.1:
version "0.9.1"
@@ -7850,40 +5779,12 @@ optionator@^0.9.1:
type-check "^0.4.0"
word-wrap "^1.2.3"
-p-limit@^2.0.0, p-limit@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
- integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+p-limit@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644"
+ integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==
dependencies:
- p-try "^2.0.0"
-
-p-limit@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b"
- integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
- dependencies:
- yocto-queue "^0.1.0"
-
-p-locate@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4"
- integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
- dependencies:
- p-limit "^2.0.0"
-
-p-locate@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
- integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
- dependencies:
- p-limit "^2.2.0"
-
-p-locate@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
- integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
- dependencies:
- p-limit "^3.0.2"
+ yocto-queue "^1.0.0"
p-map@^4.0.0:
version "4.0.0"
@@ -7892,32 +5793,11 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
-p-retry@^4.5.0:
- version "4.6.2"
- resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
- integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
- dependencies:
- "@types/retry" "0.12.0"
- retry "^0.13.1"
-
-p-try@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
- integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
-
pako@1.0.11:
version "1.0.11"
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-param-case@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
- integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
- dependencies:
- dot-case "^3.0.4"
- tslib "^2.0.3"
-
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2"
@@ -7925,7 +5805,7 @@ parent-module@^1.0.0:
dependencies:
callsites "^3.0.0"
-parse-json@^5.0.0, parse-json@^5.2.0:
+parse-json@^5.0.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd"
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
@@ -7935,10 +5815,12 @@ parse-json@^5.0.0, parse-json@^5.2.0:
json-parse-even-better-errors "^2.3.0"
lines-and-columns "^1.1.6"
-parse5@6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b"
- integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+parse5@^7.1.2:
+ version "7.1.2"
+ resolved "https://registry.yarnpkg.com/parse5/-/parse5-7.1.2.tgz#0736bebbfd77793823240a23b7fc5e010b7f8e32"
+ integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
+ dependencies:
+ entities "^4.4.0"
parseqs@0.0.6:
version "0.0.6"
@@ -7950,34 +5832,11 @@ parseuri@0.0.6:
resolved "https://registry.yarnpkg.com/parseuri/-/parseuri-0.0.6.tgz#e1496e829e3ac2ff47f39a4dd044b32823c4a25a"
integrity sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==
-parseurl@~1.3.2, parseurl@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
-pascal-case@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
- integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
- dependencies:
- no-case "^3.0.4"
- tslib "^2.0.3"
-
path-data-parser@0.1.0, path-data-parser@^0.1.0:
version "0.1.0"
resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c"
integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==
-path-exists@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515"
- integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
-
-path-exists@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
- integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
-
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
@@ -7993,16 +5852,16 @@ path-parse@^1.0.7:
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
-
path-type@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+pathe@^1.1.0, pathe@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.1.tgz#1dd31d382b974ba69809adc9a7a347e65d84829a"
+ integrity sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==
+
pathval@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
@@ -8018,11 +5877,6 @@ perfect-freehand@1.2.0:
resolved "https://registry.yarnpkg.com/perfect-freehand/-/perfect-freehand-1.2.0.tgz#706a0f854544f6175772440c51d3b0563eb3988a"
integrity sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw==
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
-
pica@7.1.1, pica@^7.1.0:
version "7.1.1"
resolved "https://registry.yarnpkg.com/pica/-/pica-7.1.1.tgz#c68b42f5cfa6cc26eaec5cfa10cc0a5299ef3b7a"
@@ -8034,11 +5888,6 @@ pica@7.1.1, pica@^7.1.0:
object-assign "^4.1.1"
webworkify "^1.5.0"
-picocolors@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-0.2.1.tgz#570670f793646851d1ba135996962abad587859f"
- integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
-
picocolors@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
@@ -8054,29 +5903,14 @@ pidtree@^0.5.0:
resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1"
integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA==
-pify@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
-
-pirates@^4.0.4:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b"
- integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
-
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
- integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+pkg-types@^1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
+ integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
dependencies:
- find-up "^4.0.0"
-
-pkg-up@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5"
- integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
- dependencies:
- find-up "^3.0.0"
+ jsonc-parser "^3.2.0"
+ mlly "^1.2.0"
+ pathe "^1.1.0"
png-chunk-text@1.0.0:
version "1.0.0"
@@ -8111,555 +5945,30 @@ points-on-path@^0.2.1:
path-data-parser "0.1.0"
points-on-curve "0.2.0"
-postcss-attribute-case-insensitive@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741"
- integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==
+portfinder@^1.0.28:
+ version "1.0.32"
+ resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.32.tgz#2fe1b9e58389712429dc2bea5beb2146146c7f81"
+ integrity sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==
dependencies:
- postcss-selector-parser "^6.0.10"
+ async "^2.6.4"
+ debug "^3.2.7"
+ mkdirp "^0.5.6"
-postcss-browser-comments@^4:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz#bcfc86134df5807f5d3c0eefa191d42136b5e72a"
- integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==
-
-postcss-calc@^8.2.3:
- version "8.2.4"
- resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5"
- integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
+postcss@^8.4.23:
+ version "8.4.24"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.24.tgz#f714dba9b2284be3cc07dbd2fc57ee4dc972d2df"
+ integrity sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==
dependencies:
- postcss-selector-parser "^6.0.9"
- postcss-value-parser "^4.2.0"
+ nanoid "^3.3.6"
+ picocolors "^1.0.0"
+ source-map-js "^1.0.2"
-postcss-clamp@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363"
- integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==
+postcss@^8.4.24:
+ version "8.4.25"
+ resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.25.tgz#4a133f5e379eda7f61e906c3b1aaa9b81292726f"
+ integrity sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==
dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-color-functional-notation@^4.2.4:
- version "4.2.4"
- resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec"
- integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-color-hex-alpha@^8.0.4:
- version "8.0.4"
- resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5"
- integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-color-rebeccapurple@^7.1.1:
- version "7.1.1"
- resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0"
- integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-colormin@^5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-5.3.0.tgz#3cee9e5ca62b2c27e84fce63affc0cfb5901956a"
- integrity sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==
- dependencies:
- browserslist "^4.16.6"
- caniuse-api "^3.0.0"
- colord "^2.9.1"
- postcss-value-parser "^4.2.0"
-
-postcss-convert-values@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393"
- integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==
- dependencies:
- browserslist "^4.21.4"
- postcss-value-parser "^4.2.0"
-
-postcss-custom-media@^8.0.2:
- version "8.0.2"
- resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea"
- integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-custom-properties@^12.1.10:
- version "12.1.10"
- resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz#624517179fd4cf50078a7a60f628d5782e7d4903"
- integrity sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-custom-selectors@^6.0.3:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9"
- integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==
- dependencies:
- postcss-selector-parser "^6.0.4"
-
-postcss-dir-pseudo-class@^6.0.5:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c"
- integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==
- dependencies:
- postcss-selector-parser "^6.0.10"
-
-postcss-discard-comments@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696"
- integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==
-
-postcss-discard-duplicates@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848"
- integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==
-
-postcss-discard-empty@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c"
- integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==
-
-postcss-discard-overridden@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e"
- integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
-
-postcss-double-position-gradients@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91"
- integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==
- dependencies:
- "@csstools/postcss-progressive-custom-properties" "^1.1.0"
- postcss-value-parser "^4.2.0"
-
-postcss-env-function@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a"
- integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-flexbugs-fixes@^5.0.2:
- version "5.0.2"
- resolved "https://registry.yarnpkg.com/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz#2028e145313074fc9abe276cb7ca14e5401eb49d"
- integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==
-
-postcss-focus-visible@^6.0.4:
- version "6.0.4"
- resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e"
- integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==
- dependencies:
- postcss-selector-parser "^6.0.9"
-
-postcss-focus-within@^5.0.4:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20"
- integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==
- dependencies:
- postcss-selector-parser "^6.0.9"
-
-postcss-font-variant@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66"
- integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==
-
-postcss-gap-properties@^3.0.5:
- version "3.0.5"
- resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff"
- integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==
-
-postcss-image-set-function@^4.0.7:
- version "4.0.7"
- resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f"
- integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-import@^14.1.0:
- version "14.1.0"
- resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-14.1.0.tgz#a7333ffe32f0b8795303ee9e40215dac922781f0"
- integrity sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==
- dependencies:
- postcss-value-parser "^4.0.0"
- read-cache "^1.0.0"
- resolve "^1.1.7"
-
-postcss-initial@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42"
- integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==
-
-postcss-js@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-js/-/postcss-js-4.0.0.tgz#31db79889531b80dc7bc9b0ad283e418dce0ac00"
- integrity sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==
- dependencies:
- camelcase-css "^2.0.1"
-
-postcss-lab-function@^4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98"
- integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==
- dependencies:
- "@csstools/postcss-progressive-custom-properties" "^1.1.0"
- postcss-value-parser "^4.2.0"
-
-postcss-load-config@^3.1.4:
- version "3.1.4"
- resolved "https://registry.yarnpkg.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855"
- integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==
- dependencies:
- lilconfig "^2.0.5"
- yaml "^1.10.2"
-
-postcss-loader@^6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-6.2.1.tgz#0895f7346b1702103d30fdc66e4d494a93c008ef"
- integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==
- dependencies:
- cosmiconfig "^7.0.0"
- klona "^2.0.5"
- semver "^7.3.5"
-
-postcss-logical@^5.0.4:
- version "5.0.4"
- resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73"
- integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==
-
-postcss-media-minmax@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5"
- integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==
-
-postcss-merge-longhand@^5.1.7:
- version "5.1.7"
- resolved "https://registry.yarnpkg.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16"
- integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==
- dependencies:
- postcss-value-parser "^4.2.0"
- stylehacks "^5.1.1"
-
-postcss-merge-rules@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/postcss-merge-rules/-/postcss-merge-rules-5.1.3.tgz#8f97679e67cc8d08677a6519afca41edf2220894"
- integrity sha512-LbLd7uFC00vpOuMvyZop8+vvhnfRGpp2S+IMQKeuOZZapPRY4SMq5ErjQeHbHsjCUgJkRNrlU+LmxsKIqPKQlA==
- dependencies:
- browserslist "^4.21.4"
- caniuse-api "^3.0.0"
- cssnano-utils "^3.1.0"
- postcss-selector-parser "^6.0.5"
-
-postcss-minify-font-values@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b"
- integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-minify-gradients@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c"
- integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==
- dependencies:
- colord "^2.9.1"
- cssnano-utils "^3.1.0"
- postcss-value-parser "^4.2.0"
-
-postcss-minify-params@^5.1.4:
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352"
- integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==
- dependencies:
- browserslist "^4.21.4"
- cssnano-utils "^3.1.0"
- postcss-value-parser "^4.2.0"
-
-postcss-minify-selectors@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6"
- integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==
- dependencies:
- postcss-selector-parser "^6.0.5"
-
-postcss-modules-extract-imports@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d"
- integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==
-
-postcss-modules-local-by-default@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz#ebbb54fae1598eecfdf691a02b3ff3b390a5a51c"
- integrity sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==
- dependencies:
- icss-utils "^5.0.0"
- postcss-selector-parser "^6.0.2"
- postcss-value-parser "^4.1.0"
-
-postcss-modules-scope@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06"
- integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==
- dependencies:
- postcss-selector-parser "^6.0.4"
-
-postcss-modules-values@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c"
- integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
- dependencies:
- icss-utils "^5.0.0"
-
-postcss-nested@6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/postcss-nested/-/postcss-nested-6.0.0.tgz#1572f1984736578f360cffc7eb7dca69e30d1735"
- integrity sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==
- dependencies:
- postcss-selector-parser "^6.0.10"
-
-postcss-nesting@^10.2.0:
- version "10.2.0"
- resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be"
- integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==
- dependencies:
- "@csstools/selector-specificity" "^2.0.0"
- postcss-selector-parser "^6.0.10"
-
-postcss-normalize-charset@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed"
- integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==
-
-postcss-normalize-display-values@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8"
- integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-positions@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92"
- integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-repeat-style@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2"
- integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-string@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228"
- integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-timing-functions@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb"
- integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-unicode@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030"
- integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==
- dependencies:
- browserslist "^4.21.4"
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-url@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc"
- integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==
- dependencies:
- normalize-url "^6.0.1"
- postcss-value-parser "^4.2.0"
-
-postcss-normalize-whitespace@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa"
- integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-normalize@^10.0.1:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/postcss-normalize/-/postcss-normalize-10.0.1.tgz#464692676b52792a06b06880a176279216540dd7"
- integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==
- dependencies:
- "@csstools/normalize.css" "*"
- postcss-browser-comments "^4"
- sanitize.css "*"
-
-postcss-opacity-percentage@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz#bd698bb3670a0a27f6d657cc16744b3ebf3b1145"
- integrity sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==
-
-postcss-ordered-values@^5.1.3:
- version "5.1.3"
- resolved "https://registry.yarnpkg.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38"
- integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==
- dependencies:
- cssnano-utils "^3.1.0"
- postcss-value-parser "^4.2.0"
-
-postcss-overflow-shorthand@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e"
- integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-page-break@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f"
- integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==
-
-postcss-place@^7.0.5:
- version "7.0.5"
- resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4"
- integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-preset-env@^7.0.1:
- version "7.8.3"
- resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz#2a50f5e612c3149cc7af75634e202a5b2ad4f1e2"
- integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==
- dependencies:
- "@csstools/postcss-cascade-layers" "^1.1.1"
- "@csstools/postcss-color-function" "^1.1.1"
- "@csstools/postcss-font-format-keywords" "^1.0.1"
- "@csstools/postcss-hwb-function" "^1.0.2"
- "@csstools/postcss-ic-unit" "^1.0.1"
- "@csstools/postcss-is-pseudo-class" "^2.0.7"
- "@csstools/postcss-nested-calc" "^1.0.0"
- "@csstools/postcss-normalize-display-values" "^1.0.1"
- "@csstools/postcss-oklab-function" "^1.1.1"
- "@csstools/postcss-progressive-custom-properties" "^1.3.0"
- "@csstools/postcss-stepped-value-functions" "^1.0.1"
- "@csstools/postcss-text-decoration-shorthand" "^1.0.0"
- "@csstools/postcss-trigonometric-functions" "^1.0.2"
- "@csstools/postcss-unset-value" "^1.0.2"
- autoprefixer "^10.4.13"
- browserslist "^4.21.4"
- css-blank-pseudo "^3.0.3"
- css-has-pseudo "^3.0.4"
- css-prefers-color-scheme "^6.0.3"
- cssdb "^7.1.0"
- postcss-attribute-case-insensitive "^5.0.2"
- postcss-clamp "^4.1.0"
- postcss-color-functional-notation "^4.2.4"
- postcss-color-hex-alpha "^8.0.4"
- postcss-color-rebeccapurple "^7.1.1"
- postcss-custom-media "^8.0.2"
- postcss-custom-properties "^12.1.10"
- postcss-custom-selectors "^6.0.3"
- postcss-dir-pseudo-class "^6.0.5"
- postcss-double-position-gradients "^3.1.2"
- postcss-env-function "^4.0.6"
- postcss-focus-visible "^6.0.4"
- postcss-focus-within "^5.0.4"
- postcss-font-variant "^5.0.0"
- postcss-gap-properties "^3.0.5"
- postcss-image-set-function "^4.0.7"
- postcss-initial "^4.0.1"
- postcss-lab-function "^4.2.1"
- postcss-logical "^5.0.4"
- postcss-media-minmax "^5.0.0"
- postcss-nesting "^10.2.0"
- postcss-opacity-percentage "^1.1.2"
- postcss-overflow-shorthand "^3.0.4"
- postcss-page-break "^3.0.4"
- postcss-place "^7.0.5"
- postcss-pseudo-class-any-link "^7.1.6"
- postcss-replace-overflow-wrap "^4.0.0"
- postcss-selector-not "^6.0.1"
- postcss-value-parser "^4.2.0"
-
-postcss-pseudo-class-any-link@^7.1.6:
- version "7.1.6"
- resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab"
- integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==
- dependencies:
- postcss-selector-parser "^6.0.10"
-
-postcss-reduce-initial@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.1.tgz#c18b7dfb88aee24b1f8e4936541c29adbd35224e"
- integrity sha512-//jeDqWcHPuXGZLoolFrUXBDyuEGbr9S2rMo19bkTIjBQ4PqkaO+oI8wua5BOUxpfi97i3PCoInsiFIEBfkm9w==
- dependencies:
- browserslist "^4.21.4"
- caniuse-api "^3.0.0"
-
-postcss-reduce-transforms@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9"
- integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==
- dependencies:
- postcss-value-parser "^4.2.0"
-
-postcss-replace-overflow-wrap@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319"
- integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==
-
-postcss-selector-not@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d"
- integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==
- dependencies:
- postcss-selector-parser "^6.0.10"
-
-postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9:
- version "6.0.10"
- resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d"
- integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==
- dependencies:
- cssesc "^3.0.0"
- util-deprecate "^1.0.2"
-
-postcss-svgo@^5.1.0:
- version "5.1.0"
- resolved "https://registry.yarnpkg.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d"
- integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==
- dependencies:
- postcss-value-parser "^4.2.0"
- svgo "^2.7.0"
-
-postcss-unique-selectors@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6"
- integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==
- dependencies:
- postcss-selector-parser "^6.0.5"
-
-postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
- integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
-
-postcss@^7.0.35:
- version "7.0.39"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.39.tgz#9624375d965630e2e1f2c02a935c82a59cb48309"
- integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
- dependencies:
- picocolors "^0.2.1"
- source-map "^0.6.1"
-
-postcss@^8.3.5, postcss@^8.4.18, postcss@^8.4.4:
- version "8.4.19"
- resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.19.tgz#61178e2add236b17351897c8bcc0b4c8ecab56fc"
- integrity sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==
- dependencies:
- nanoid "^3.3.4"
+ nanoid "^3.3.6"
picocolors "^1.0.0"
source-map-js "^1.0.2"
@@ -8668,11 +5977,6 @@ prelude-ls@^1.2.1:
resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
-prelude-ls@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
- integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
-
prettier-linter-helpers@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b"
@@ -8685,18 +5989,15 @@ prettier@2.6.2:
resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032"
integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew==
-pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
+pretty-bytes@^5.3.0:
version "5.6.0"
resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
-pretty-error@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6"
- integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==
- dependencies:
- lodash "^4.17.20"
- renderkid "^3.0.0"
+pretty-bytes@^6.0.0:
+ version "6.1.0"
+ resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-6.1.0.tgz#1d1cc9aae1939012c74180b679da6684616bf804"
+ integrity sha512-Rk753HI8f4uivXi4ZCIYdhmG1V+WKzvRMg/X+M42a6t7D07RcmopXJMDNk6N++7Bl75URRGsb40ruvg7Hcp2wQ==
pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
@@ -8707,30 +6008,15 @@ pretty-format@^27.0.0, pretty-format@^27.0.2, pretty-format@^27.5.1:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^28.1.3:
- version "28.1.3"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5"
- integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
+pretty-format@^29.0.0, pretty-format@^29.5.0:
+ version "29.5.0"
+ resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.5.0.tgz#283134e74f70e2e3e7229336de0e4fce94ccde5a"
+ integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==
dependencies:
- "@jest/schemas" "^28.1.3"
- ansi-regex "^5.0.1"
+ "@jest/schemas" "^29.4.3"
ansi-styles "^5.0.0"
react-is "^18.0.0"
-pretty-format@^29.0.0, pretty-format@^29.2.1:
- version "29.2.1"
- resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-29.2.1.tgz#86e7748fe8bbc96a6a4e04fa99172630907a9611"
- integrity sha512-Y41Sa4aLCtKAXvwuIpTvcFBkyeYp2gdFWzXGA+ZNES3VwURIB165XO/z7CjETwzCCS53MjW/rLMyyqEnTtaOfA==
- dependencies:
- "@jest/schemas" "^29.0.0"
- ansi-styles "^5.0.0"
- react-is "^18.0.0"
-
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
progress@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
@@ -8741,21 +6027,6 @@ promise-polyfill@8.1.3:
resolved "https://registry.yarnpkg.com/promise-polyfill/-/promise-polyfill-8.1.3.tgz#8c99b3cf53f3a91c68226ffde7bde81d7f904116"
integrity sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g==
-promise@^8.1.0:
- version "8.3.0"
- resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a"
- integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==
- dependencies:
- asap "~2.0.6"
-
-prompts@^2.0.1, prompts@^2.4.2:
- version "2.4.2"
- resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069"
- integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
- dependencies:
- kleur "^3.0.3"
- sisteransi "^1.0.5"
-
prop-types@^15.8.1:
version "15.8.1"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5"
@@ -8785,9 +6056,9 @@ protobufjs@^6.8.6:
long "^4.0.0"
protobufjs@^7.0.0:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.1.2.tgz#a0cf6aeaf82f5625bffcf5a38b7cd2a7de05890c"
- integrity sha512-4ZPTPkXCdel3+L81yw3dG6+Kq3umdWKh7Dc7GW/CpNk4SX3hK58iPCWeCyhVTDrbkNeKrYNZ7EojM5WDaEWTLQ==
+ version "7.2.3"
+ resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.2.3.tgz#01af019e40d9c6133c49acbb3ff9e30f4f0f70b2"
+ integrity sha512-TtpvOqwB5Gdz/PQmOjgsrGH1nHjAQVCN7JG4A6r1sXRWESL5rNMAiRcBQlCAdKxZcAbstExQePYG8xof/JVRgg==
dependencies:
"@protobufjs/aspromise" "^1.1.2"
"@protobufjs/base64" "^1.1.2"
@@ -8802,38 +6073,25 @@ protobufjs@^7.0.0:
"@types/node" ">=13.7.0"
long "^5.0.0"
-proxy-addr@~2.0.7:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
- integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
- dependencies:
- forwarded "0.2.0"
- ipaddr.js "1.9.1"
-
psl@^1.1.33:
version "1.9.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
-punycode@^2.1.0, punycode@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
- integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
+punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f"
+ integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
pwacompat@2.0.17:
version "2.0.17"
resolved "https://registry.yarnpkg.com/pwacompat/-/pwacompat-2.0.17.tgz#707959ff97f239bf1fe7b260b63aeea416a15eab"
integrity sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w==
-q@^1.1.2:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
- integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
-
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+qs@^6.4.0:
+ version "6.11.1"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.1.tgz#6c29dff97f0c0060765911ba65cbc9764186109f"
+ integrity sha512-0wsrzgTz/kAVIeuxSjnpGC56rzYtr6JT/2BwEvMaPhFIoYa1aGO8LbzuU1R0uUYQkLpWBTOj0l/CLAJB64J6nQ==
dependencies:
side-channel "^1.0.4"
@@ -8847,18 +6105,6 @@ queue-microtask@^1.2.2:
resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-quick-lru@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932"
- integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==
-
-raf@^3.4.1:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39"
- integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
- dependencies:
- performance-now "^2.1.0"
-
randombytes@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
@@ -8866,63 +6112,6 @@ randombytes@^2.1.0:
dependencies:
safe-buffer "^5.1.0"
-range-parser@^1.2.1, range-parser@~1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.5.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
- integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
- dependencies:
- bytes "3.1.2"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
-react-app-polyfill@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz#95221e0a9bd259e5ca6b177c7bb1cb6768f68fd7"
- integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==
- dependencies:
- core-js "^3.19.2"
- object-assign "^4.1.1"
- promise "^8.1.0"
- raf "^3.4.1"
- regenerator-runtime "^0.13.9"
- whatwg-fetch "^3.6.2"
-
-react-dev-utils@^12.0.1:
- version "12.0.1"
- resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.1.tgz#ba92edb4a1f379bd46ccd6bcd4e7bc398df33e73"
- integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==
- dependencies:
- "@babel/code-frame" "^7.16.0"
- address "^1.1.2"
- browserslist "^4.18.1"
- chalk "^4.1.2"
- cross-spawn "^7.0.3"
- detect-port-alt "^1.1.6"
- escape-string-regexp "^4.0.0"
- filesize "^8.0.6"
- find-up "^5.0.0"
- fork-ts-checker-webpack-plugin "^6.5.0"
- global-modules "^2.0.0"
- globby "^11.0.4"
- gzip-size "^6.0.0"
- immer "^9.0.7"
- is-root "^2.1.0"
- loader-utils "^3.2.0"
- open "^8.4.0"
- pkg-up "^3.1.0"
- prompts "^2.4.2"
- react-error-overlay "^6.0.11"
- recursive-readdir "^2.2.2"
- shell-quote "^1.7.3"
- strip-ansi "^6.0.1"
- text-table "^0.2.0"
-
react-dom@18.2.0:
version "18.2.0"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d"
@@ -8931,11 +6120,6 @@ react-dom@18.2.0:
loose-envify "^1.1.0"
scheduler "^0.23.0"
-react-error-overlay@^6.0.11:
- version "6.0.11"
- resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-6.0.11.tgz#92835de5841c5cf08ba00ddd2d677b6d17ff9adb"
- integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==
-
react-is@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -8951,65 +6135,38 @@ react-is@^18.0.0:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
-react-refresh@^0.11.0:
- version "0.11.0"
- resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046"
- integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
+react-refresh@^0.14.0:
+ version "0.14.0"
+ resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.14.0.tgz#4e02825378a5f227079554d4284889354e5f553e"
+ integrity sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==
-react-scripts@5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/react-scripts/-/react-scripts-5.0.1.tgz#6285dbd65a8ba6e49ca8d651ce30645a6d980003"
- integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==
+react-remove-scroll-bar@^2.3.3:
+ version "2.3.4"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz#53e272d7a5cb8242990c7f144c44d8bd8ab5afd9"
+ integrity sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==
dependencies:
- "@babel/core" "^7.16.0"
- "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3"
- "@svgr/webpack" "^5.5.0"
- babel-jest "^27.4.2"
- babel-loader "^8.2.3"
- babel-plugin-named-asset-import "^0.3.8"
- babel-preset-react-app "^10.0.1"
- bfj "^7.0.2"
- browserslist "^4.18.1"
- camelcase "^6.2.1"
- case-sensitive-paths-webpack-plugin "^2.4.0"
- css-loader "^6.5.1"
- css-minimizer-webpack-plugin "^3.2.0"
- dotenv "^10.0.0"
- dotenv-expand "^5.1.0"
- eslint "^8.3.0"
- eslint-config-react-app "^7.0.1"
- eslint-webpack-plugin "^3.1.1"
- file-loader "^6.2.0"
- fs-extra "^10.0.0"
- html-webpack-plugin "^5.5.0"
- identity-obj-proxy "^3.0.0"
- jest "^27.4.3"
- jest-resolve "^27.4.2"
- jest-watch-typeahead "^1.0.0"
- mini-css-extract-plugin "^2.4.5"
- postcss "^8.4.4"
- postcss-flexbugs-fixes "^5.0.2"
- postcss-loader "^6.2.1"
- postcss-normalize "^10.0.1"
- postcss-preset-env "^7.0.1"
- prompts "^2.4.2"
- react-app-polyfill "^3.0.0"
- react-dev-utils "^12.0.1"
- react-refresh "^0.11.0"
- resolve "^1.20.0"
- resolve-url-loader "^4.0.0"
- sass-loader "^12.3.0"
- semver "^7.3.5"
- source-map-loader "^3.0.0"
- style-loader "^3.3.1"
- tailwindcss "^3.0.2"
- terser-webpack-plugin "^5.2.5"
- webpack "^5.64.4"
- webpack-dev-server "^4.6.0"
- webpack-manifest-plugin "^4.0.2"
- workbox-webpack-plugin "^6.4.1"
- optionalDependencies:
- fsevents "^2.3.2"
+ react-style-singleton "^2.2.1"
+ tslib "^2.0.0"
+
+react-remove-scroll@2.5.5:
+ version "2.5.5"
+ resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz#1e31a1260df08887a8a0e46d09271b52b3a37e77"
+ integrity sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==
+ dependencies:
+ react-remove-scroll-bar "^2.3.3"
+ react-style-singleton "^2.2.1"
+ tslib "^2.1.0"
+ use-callback-ref "^1.3.0"
+ use-sidecar "^1.1.2"
+
+react-style-singleton@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.1.tgz#f99e420492b2d8f34d38308ff660b60d0b1205b4"
+ integrity sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==
+ dependencies:
+ get-nonce "^1.0.0"
+ invariant "^2.2.4"
+ tslib "^2.0.0"
react@18.2.0:
version "18.2.0"
@@ -9018,35 +6175,6 @@ react@18.2.0:
dependencies:
loose-envify "^1.1.0"
-read-cache@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
- integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
- dependencies:
- pify "^2.3.0"
-
-readable-stream@^2.0.1:
- version "2.3.7"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
- integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==
- 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"
-
-readable-stream@^3.0.6:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
- integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
@@ -9064,13 +6192,6 @@ realistic-structured-clone@^2.0.1:
typeson "^6.1.0"
typeson-registry "^1.0.0-alpha.20"
-recursive-readdir@^2.2.2:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372"
- integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==
- dependencies:
- minimatch "^3.0.5"
-
redent@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f"
@@ -9091,29 +6212,19 @@ regenerate@^1.4.2:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
-regenerator-runtime@^0.13.10:
- version "0.13.10"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee"
- integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw==
-
-regenerator-runtime@^0.13.9:
+regenerator-runtime@^0.13.11:
version "0.13.11"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
-regenerator-transform@^0.15.0:
- version "0.15.0"
- resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537"
- integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==
+regenerator-transform@^0.15.1:
+ version "0.15.1"
+ resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.1.tgz#f6c4e99fc1b4591f780db2586328e4d9a9d8dc56"
+ integrity sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==
dependencies:
"@babel/runtime" "^7.8.4"
-regex-parser@^2.2.11:
- version "2.2.11"
- resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.2.11.tgz#3b37ec9049e19479806e878cabe7c1ca83ccfe58"
- integrity sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==
-
-regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.3:
+regexp.prototype.flags@^1.4.3:
version "1.4.3"
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac"
integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==
@@ -9122,27 +6233,22 @@ regexp.prototype.flags@^1.3.0, regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
-regexpp@^3.1.0, regexpp@^3.2.0:
+regexpp@^3.1.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
-regexpu-core@^5.1.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.2.1.tgz#a69c26f324c1e962e9ffd0b88b055caba8089139"
- integrity sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==
+regexpu-core@^5.3.1:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.3.2.tgz#11a2b06884f3527aec3e93dbbf4a3b958a95546b"
+ integrity sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==
dependencies:
+ "@babel/regjsgen" "^0.8.0"
regenerate "^1.4.2"
regenerate-unicode-properties "^10.1.0"
- regjsgen "^0.7.1"
regjsparser "^0.9.1"
unicode-match-property-ecmascript "^2.0.0"
- unicode-match-property-value-ecmascript "^2.0.0"
-
-regjsgen@^0.7.1:
- version "0.7.1"
- resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.7.1.tgz#ee5ef30e18d3f09b7c369b76e7c2373ed25546f6"
- integrity sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==
+ unicode-match-property-value-ecmascript "^2.1.0"
regjsparser@^0.9.1:
version "0.9.1"
@@ -9151,22 +6257,6 @@ regjsparser@^0.9.1:
dependencies:
jsesc "~0.5.0"
-relateurl@^0.2.7:
- version "0.2.7"
- resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9"
- integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
-
-renderkid@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/renderkid/-/renderkid-3.0.0.tgz#5fd823e4d6951d37358ecc9a58b1f06836b6268a"
- integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==
- dependencies:
- css-select "^4.1.3"
- dom-converter "^0.2.0"
- htmlparser2 "^6.1.0"
- lodash "^4.17.21"
- strip-ansi "^6.0.1"
-
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
@@ -9182,49 +6272,21 @@ requires-port@^1.0.0:
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
-resolve-cwd@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
- integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
- dependencies:
- resolve-from "^5.0.0"
-
resolve-from@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
-resolve-from@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
- integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
-
-resolve-url-loader@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz#d50d4ddc746bb10468443167acf800dcd6c3ad57"
- integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==
+resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1:
+ version "1.22.2"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.2.tgz#0ed0943d4e301867955766c9f3e1ae6d01c6845f"
+ integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==
dependencies:
- adjust-sourcemap-loader "^4.0.0"
- convert-source-map "^1.7.0"
- loader-utils "^2.0.0"
- postcss "^7.0.35"
- source-map "0.6.1"
-
-resolve.exports@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
- integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
-
-resolve@^1.1.7, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0, resolve@^1.22.1:
- version "1.22.1"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
- integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
- dependencies:
- is-core-module "^2.9.0"
+ is-core-module "^2.11.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
-resolve@^2.0.0-next.3:
+resolve@^2.0.0-next.4:
version "2.0.0-next.4"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-2.0.0-next.4.tgz#3d37a113d6429f496ec4752d2a2e58efb1fd4660"
integrity sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==
@@ -9241,11 +6303,6 @@ restore-cursor@^3.1.0:
onetime "^5.1.0"
signal-exit "^3.0.2"
-retry@^0.13.1:
- version "0.13.1"
- resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
- integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
-
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
@@ -9263,7 +6320,7 @@ rfdc@^1.3.0:
resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
-rimraf@^3.0.0, rimraf@^3.0.2:
+rimraf@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
@@ -9287,6 +6344,20 @@ rollup@^2.43.1:
optionalDependencies:
fsevents "~2.3.2"
+rollup@^3.21.0:
+ version "3.26.0"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.26.0.tgz#9f2e0316a4ca641911cefd8515c562a9124e6130"
+ integrity sha512-YzJH0eunH2hr3knvF3i6IkLO/jTjAEwU4HoMUbQl4//Tnl3ou0e7P5SjxdDr8HQJdeUJShlbEHXrrnEHy1l7Yg==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+rollup@^3.25.2:
+ version "3.26.2"
+ resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.26.2.tgz#2e76a37606cb523fc9fef43e6f59c93f86d95e7c"
+ integrity sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
roughjs@4.5.2:
version "4.5.2"
resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.5.2.tgz#aab644dcb41e9a75826c8bd5a5b0a859095f2f10"
@@ -9296,6 +6367,11 @@ roughjs@4.5.2:
points-on-curve "^0.2.0"
points-on-path "^0.2.1"
+rrweb-cssom@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1"
+ integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==
+
run-parallel@^1.1.9:
version "1.2.0"
resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
@@ -9304,9 +6380,9 @@ run-parallel@^1.1.9:
queue-microtask "^1.2.2"
rxjs@^7.5.5:
- version "7.5.7"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39"
- integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==
+ version "7.8.0"
+ resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.0.tgz#90a938862a82888ff4c7359811a595e14e1e09a4"
+ integrity sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==
dependencies:
tslib "^2.1.0"
@@ -9315,12 +6391,12 @@ safari-14-idb-fix@^3.0.0:
resolved "https://registry.yarnpkg.com/safari-14-idb-fix/-/safari-14-idb-fix-3.0.0.tgz#450fc049b996ec7f3fd9ca2f89d32e0761583440"
integrity sha512-eBNFLob4PMq8JA1dGyFn6G97q3/WzNtFK4RnzT1fnLq+9RyrGknzYiM/9B12MnKAxuj1IXr7UKYtTNtjyKMBog==
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@5.1.2:
version "5.1.2"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+safe-buffer@>=5.1.0, safe-buffer@^5.1.0:
version "5.2.1"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -9334,24 +6410,11 @@ safe-regex-test@^1.0.0:
get-intrinsic "^1.1.3"
is-regex "^1.1.4"
-"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0":
+"safer-buffer@>= 2.1.2 < 3.0.0":
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-sanitize.css@*:
- version "13.0.0"
- resolved "https://registry.yarnpkg.com/sanitize.css/-/sanitize.css-13.0.0.tgz#2675553974b27964c75562ade3bd85d79879f173"
- integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==
-
-sass-loader@^12.3.0:
- version "12.6.0"
- resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.6.0.tgz#5148362c8e2cdd4b950f3c63ac5d16dbfed37bcb"
- integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==
- dependencies:
- klona "^2.0.4"
- neo-async "^2.6.2"
-
sass@1.51.0:
version "1.51.0"
resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845"
@@ -9361,15 +6424,10 @@ sass@1.51.0:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
-sax@~1.2.4:
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
- integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
-
-saxes@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d"
- integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+saxes@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/saxes/-/saxes-6.0.0.tgz#fe5b4a4768df4f14a201b1ba6a65c1f3d9988cc5"
+ integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
dependencies:
xmlchars "^2.2.0"
@@ -9380,85 +6438,29 @@ scheduler@^0.23.0:
dependencies:
loose-envify "^1.1.0"
-schema-utils@2.7.0:
- version "2.7.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.0.tgz#17151f76d8eae67fbbf77960c33c676ad9f4efc7"
- integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
- dependencies:
- "@types/json-schema" "^7.0.4"
- ajv "^6.12.2"
- ajv-keywords "^3.4.1"
+secure-compare@3.0.1:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/secure-compare/-/secure-compare-3.0.1.tgz#f1a0329b308b221fae37b9974f3d578d0ca999e3"
+ integrity sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==
-schema-utils@^2.6.5:
- version "2.7.1"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7"
- integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
- dependencies:
- "@types/json-schema" "^7.0.5"
- ajv "^6.12.4"
- ajv-keywords "^3.5.2"
-
-schema-utils@^3.0.0, schema-utils@^3.1.0, schema-utils@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
- integrity sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==
- dependencies:
- "@types/json-schema" "^7.0.8"
- ajv "^6.12.5"
- ajv-keywords "^3.5.2"
-
-schema-utils@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
- integrity sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==
- dependencies:
- "@types/json-schema" "^7.0.9"
- ajv "^8.8.0"
- ajv-formats "^2.1.1"
- ajv-keywords "^5.0.0"
-
-select-hose@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
- integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
-
-selfsigned@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61"
- integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==
- dependencies:
- node-forge "^1"
-
-semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
+semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
version "6.3.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8:
- version "7.3.8"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798"
- integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
+semver@^7.2.1, semver@^7.3.2, semver@^7.3.7:
+ version "7.4.0"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.4.0.tgz#8481c92feffc531ab1e012a8ffc15bdd3a0f4318"
+ integrity sha512-RgOxM8Mw+7Zus0+zcLEUn8+JfoLpj/huFTItQy2hsM4khuC1HYRDp0cU482Ewn/Fcy6bCjufD8vAj7voC66KQw==
dependencies:
lru-cache "^6.0.0"
-send@0.18.0:
- version "0.18.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
- integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+semver@^7.3.4, semver@^7.5.0:
+ version "7.5.4"
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
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"
+ lru-cache "^6.0.0"
serialize-javascript@^4.0.0:
version "4.0.0"
@@ -9467,46 +6469,6 @@ serialize-javascript@^4.0.0:
dependencies:
randombytes "^2.1.0"
-serialize-javascript@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
- integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==
- dependencies:
- randombytes "^2.1.0"
-
-serve-index@^1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
- integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
- dependencies:
- accepts "~1.3.4"
- batch "0.6.1"
- debug "2.6.9"
- escape-html "~1.0.3"
- http-errors "~1.6.2"
- mime-types "~2.1.17"
- parseurl "~1.3.2"
-
-serve-static@1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
- integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.3"
- send "0.18.0"
-
-setprototypeof@1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
- integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
-
-setprototypeof@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
- integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
-
shebang-command@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
@@ -9519,12 +6481,7 @@ shebang-regex@^3.0.0:
resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-shell-quote@^1.7.3:
- version "1.7.4"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.4.tgz#33fe15dee71ab2a81fcbd3a52106c5cfb9fb75d8"
- integrity sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==
-
-side-channel@^1.0.3, side-channel@^1.0.4:
+side-channel@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
@@ -9533,26 +6490,30 @@ side-channel@^1.0.3, side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+siginfo@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
+ integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
+
signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-sisteransi@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed"
- integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
+sirv@^2.0.3:
+ version "2.0.3"
+ resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.3.tgz#ca5868b87205a74bef62a469ed0296abceccd446"
+ integrity sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==
+ dependencies:
+ "@polka/url" "^1.0.0-next.20"
+ mrmime "^1.0.0"
+ totalist "^3.0.0"
slash@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-slash@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
- integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
-
slice-ansi@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
@@ -9610,34 +6571,11 @@ socket.io-parser@~3.3.0:
debug "~3.1.0"
isarray "2.0.1"
-sockjs@^0.3.24:
- version "0.3.24"
- resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
- integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
- dependencies:
- faye-websocket "^0.11.3"
- uuid "^8.3.2"
- websocket-driver "^0.7.4"
-
-source-list-map@^2.0.0, source-list-map@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34"
- integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
-
-"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.1, source-map-js@^1.0.2:
+"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c"
integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==
-source-map-loader@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-3.0.2.tgz#af23192f9b344daa729f6772933194cc5fa54fee"
- integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==
- dependencies:
- abab "^2.0.5"
- iconv-lite "^0.6.3"
- source-map-js "^1.0.1"
-
source-map-resolve@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.6.0.tgz#3d9df87e236b53f16d01e58150fc7711138e5ed2"
@@ -9646,7 +6584,7 @@ source-map-resolve@^0.6.0:
atob "^2.1.2"
decode-uri-component "^0.2.0"
-source-map-support@^0.5.6, source-map-support@~0.5.20:
+source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -9654,16 +6592,11 @@ source-map-support@^0.5.6, source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-source-map@^0.7.3:
- version "0.7.4"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656"
- integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
-
source-map@^0.8.0-beta.0:
version "0.8.0-beta.0"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.8.0-beta.0.tgz#d4c1bb42c3f7ee925f005927ba10709e0d1d1f11"
@@ -9676,82 +6609,40 @@ sourcemap-codec@^1.4.8:
resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-spdy-transport@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
- integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
- dependencies:
- debug "^4.1.0"
- detect-node "^2.0.4"
- hpack.js "^2.1.6"
- obuf "^1.1.2"
- readable-stream "^3.0.6"
- wbuf "^1.7.3"
-
-spdy@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
- integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
- dependencies:
- debug "^4.1.0"
- handle-thing "^2.0.0"
- http-deceiver "^1.2.7"
- select-hose "^2.0.0"
- spdy-transport "^3.0.0"
-
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
-stable@^0.1.8:
- version "0.1.8"
- resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
- integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
stack-utils@^2.0.3:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5"
- integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==
+ version "2.0.6"
+ resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
+ integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
dependencies:
escape-string-regexp "^2.0.0"
-stackframe@^1.3.4:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
- integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+stackback@0.0.2:
+ version "0.0.2"
+ resolved "https://registry.yarnpkg.com/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
+ integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
+std-env@^3.3.2:
+ version "3.3.3"
+ resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.3.3.tgz#a54f06eb245fdcfef53d56f3c0251f1d5c3d01fe"
+ integrity sha512-Rz6yejtVyWnVjC1RFvNmYL10kgjC49EOghxWn0RFqlCHGFpQx+Xe7yW3I4ceK1SGrWIGMjD5Kbue8W/udkbMJg==
-"statuses@>= 1.4.0 < 2":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
- integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+stop-iteration-iterator@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz#6a60be0b4ee757d1ed5254858ec66b10c49285e4"
+ integrity sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==
+ dependencies:
+ internal-slot "^1.0.4"
string-argv@^0.3.1:
version "0.3.1"
resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da"
integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==
-string-length@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a"
- integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
- dependencies:
- char-regex "^1.0.2"
- strip-ansi "^6.0.0"
-
-string-length@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/string-length/-/string-length-5.0.1.tgz#3d647f497b6e8e8d41e422f7e0b23bc536c8381e"
- integrity sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==
- dependencies:
- char-regex "^2.0.0"
- strip-ansi "^7.0.1"
-
string-natural-compare@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/string-natural-compare/-/string-natural-compare-3.0.1.tgz#7a42d58474454963759e8e8b7ae63d71c1e7fdf4"
@@ -9789,37 +6680,32 @@ string.prototype.matchall@^4.0.6, string.prototype.matchall@^4.0.8:
regexp.prototype.flags "^1.4.3"
side-channel "^1.0.4"
-string.prototype.trimend@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0"
- integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog==
+string.prototype.trim@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
+ integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.4"
- es-abstract "^1.19.5"
+ es-abstract "^1.20.4"
-string.prototype.trimstart@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef"
- integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg==
+string.prototype.trimend@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
+ integrity sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==
dependencies:
call-bind "^1.0.2"
define-properties "^1.1.4"
- es-abstract "^1.19.5"
+ es-abstract "^1.20.4"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+string.prototype.trimstart@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz#e90ab66aa8e4007d92ef591bbf3cd422c56bdcf4"
+ integrity sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==
dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
+ call-bind "^1.0.2"
+ define-properties "^1.1.4"
+ es-abstract "^1.20.4"
stringify-object@^3.3.0:
version "3.3.0"
@@ -9849,11 +6735,6 @@ strip-bom@^3.0.0:
resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3"
integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==
-strip-bom@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878"
- integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
-
strip-comments@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/strip-comments/-/strip-comments-2.0.1.tgz#4ad11c3fbcac177a67a40ac224ca339ca1c1ba9b"
@@ -9876,18 +6757,12 @@ strip-json-comments@^3.1.0, strip-json-comments@^3.1.1:
resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
-style-loader@^3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.1.tgz#057dfa6b3d4d7c7064462830f9113ed417d38575"
- integrity sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==
-
-stylehacks@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9"
- integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==
+strip-literal@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/strip-literal/-/strip-literal-1.0.1.tgz#0115a332710c849b4e46497891fb8d585e404bd2"
+ integrity sha512-QZTsipNpa2Ppr6v1AmJHESqJ3Uz247MUS0OjrnnZjFAvEoWqxuyFuXn2xLgMtRnijJShAa1HL0gtJyUs7u7n3Q==
dependencies:
- browserslist "^4.21.4"
- postcss-selector-parser "^6.0.4"
+ acorn "^8.8.2"
supports-color@^5.3.0:
version "5.5.0"
@@ -9903,77 +6778,30 @@ supports-color@^7.0.0, supports-color@^7.1.0:
dependencies:
has-flag "^4.0.0"
-supports-color@^8.0.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
- dependencies:
- has-flag "^4.0.0"
-
supports-color@^9.2.1:
- version "9.2.3"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.2.3.tgz#a6e2c97fc20c80abecd69e50aebe4783ff77d45a"
- integrity sha512-aszYUX/DVK/ed5rFLb/dDinVJrQjG/vmU433wtqVSD800rYsJNWxh2R3USV90aLSU+UsyQkbNeffVLzc6B6foA==
-
-supports-hyperlinks@^2.0.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624"
- integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
- dependencies:
- has-flag "^4.0.0"
- supports-color "^7.0.0"
+ version "9.3.1"
+ resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-9.3.1.tgz#34e4ad3c71c9a39dae3254ecc46c9b74e89e15a6"
+ integrity sha512-knBY82pjmnIzK3NifMo3RxEIRD9E0kIzV4BKcyTZ9+9kWgLMxd4PrsTSMoFQUabgRBbF8KOLRDCyKgNV+iK44Q==
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-svg-parser@^2.0.2:
+svg-parser@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/svg-parser/-/svg-parser-2.0.4.tgz#fdc2e29e13951736140b76cb122c8ee6630eb6b5"
integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
-svgo@^1.2.2:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-1.3.2.tgz#b6dc511c063346c9e415b81e43401145b96d4167"
- integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
- dependencies:
- chalk "^2.4.1"
- coa "^2.0.2"
- css-select "^2.0.0"
- css-select-base-adapter "^0.1.1"
- css-tree "1.0.0-alpha.37"
- csso "^4.0.2"
- js-yaml "^3.13.1"
- mkdirp "~0.5.1"
- object.values "^1.1.0"
- sax "~1.2.4"
- stable "^0.1.8"
- unquote "~1.1.1"
- util.promisify "~1.0.0"
-
-svgo@^2.7.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
- integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
- dependencies:
- "@trysound/sax" "0.2.0"
- commander "^7.2.0"
- css-select "^4.1.3"
- css-tree "^1.1.3"
- csso "^4.2.0"
- picocolors "^1.0.0"
- stable "^0.1.8"
-
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
table@^6.0.9:
- version "6.8.0"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca"
- integrity sha512-s/fitrbVeEyHKFa7mFdkuQMWlH1Wgw/yEXMt5xACT4ZpzWFluehAxRtUUQKPuWhaLAWhFcVx6w3oC8VKaUfPGA==
+ version "6.8.1"
+ resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
+ integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
dependencies:
ajv "^8.0.1"
lodash.truncate "^4.4.2"
@@ -9981,45 +6809,6 @@ table@^6.0.9:
string-width "^4.2.3"
strip-ansi "^6.0.1"
-tailwindcss@^3.0.2:
- version "3.2.4"
- resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.2.4.tgz#afe3477e7a19f3ceafb48e4b083e292ce0dc0250"
- integrity sha512-AhwtHCKMtR71JgeYDaswmZXhPcW9iuI9Sp2LvZPo9upDZ7231ZJ7eA9RaURbhpXGVlrjX4cFNlB4ieTetEb7hQ==
- dependencies:
- arg "^5.0.2"
- chokidar "^3.5.3"
- color-name "^1.1.4"
- detective "^5.2.1"
- didyoumean "^1.2.2"
- dlv "^1.1.3"
- fast-glob "^3.2.12"
- glob-parent "^6.0.2"
- is-glob "^4.0.3"
- lilconfig "^2.0.6"
- micromatch "^4.0.5"
- normalize-path "^3.0.0"
- object-hash "^3.0.0"
- picocolors "^1.0.0"
- postcss "^8.4.18"
- postcss-import "^14.1.0"
- postcss-js "^4.0.0"
- postcss-load-config "^3.1.4"
- postcss-nested "6.0.0"
- postcss-selector-parser "^6.0.10"
- postcss-value-parser "^4.2.0"
- quick-lru "^5.1.1"
- resolve "^1.22.1"
-
-tapable@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
- integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
-
-tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
- integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
-
temp-dir@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-2.0.0.tgz#bde92b05bdfeb1516e804c9c00ad45177f31321e"
@@ -10035,68 +6824,50 @@ tempy@^0.6.0:
type-fest "^0.16.0"
unique-string "^2.0.0"
-terminal-link@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994"
- integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
- dependencies:
- ansi-escapes "^4.2.1"
- supports-hyperlinks "^2.0.0"
-
-terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5:
- version "5.3.6"
- resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz#5590aec31aa3c6f771ce1b1acca60639eab3195c"
- integrity sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==
- dependencies:
- "@jridgewell/trace-mapping" "^0.3.14"
- jest-worker "^27.4.5"
- schema-utils "^3.1.1"
- serialize-javascript "^6.0.0"
- terser "^5.14.1"
-
-terser@^5.0.0, terser@^5.10.0, terser@^5.14.1:
- version "5.15.1"
- resolved "https://registry.yarnpkg.com/terser/-/terser-5.15.1.tgz#8561af6e0fd6d839669c73b92bdd5777d870ed6c"
- integrity sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==
+terser@^5.0.0:
+ version "5.16.9"
+ resolved "https://registry.yarnpkg.com/terser/-/terser-5.16.9.tgz#7a28cb178e330c484369886f2afd623d9847495f"
+ integrity sha512-HPa/FdTB9XGI2H1/keLFZHxl6WNvAI4YalHGtDQTlMnJcoqSab1UwL4l1hGEhs6/GmLHBZIg/YgB++jcbzoOEg==
dependencies:
"@jridgewell/source-map" "^0.3.2"
acorn "^8.5.0"
commander "^2.20.0"
source-map-support "~0.5.20"
-test-exclude@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"
- integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
- dependencies:
- "@istanbuljs/schema" "^0.1.2"
- glob "^7.1.4"
- minimatch "^3.0.4"
-
text-table@^0.2.0:
version "0.2.0"
resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
-throat@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375"
- integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==
-
through@^2.3.8:
version "2.3.8"
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-thunky@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
- integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+time-zone@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/time-zone/-/time-zone-1.0.0.tgz#99c5bf55958966af6d06d83bdf3800dc82faec5d"
+ integrity sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==
-tmpl@1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc"
- integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
+tiny-invariant@^1.1.0:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.1.tgz#8560808c916ef02ecfd55e66090df23a4b7aa642"
+ integrity sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==
+
+tinybench@^2.5.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tinybench/-/tinybench-2.5.0.tgz#4711c99bbf6f3e986f67eb722fed9cddb3a68ba5"
+ integrity sha512-kRwSG8Zx4tjF9ZiyH4bhaebu+EDz1BOx9hOigYHlUW4xxI/wKIUQUqo018UlU4ar6ATPBsaMrdbKZ+tmPdohFA==
+
+tinypool@^0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.5.0.tgz#3861c3069bf71e4f1f5aa2d2e6b3aaacc278961e"
+ integrity sha512-paHQtnrlS1QZYKF/GnLoOM/DN9fqaGOFbCbxzAhwniySnzl9Ebk8w73/dd34DAhe/obUbPAOldTyYXQZxnPBPQ==
+
+tinyspy@^2.1.0:
+ version "2.1.1"
+ resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.1.1.tgz#9e6371b00c259e5c5b301917ca18c01d40ae558c"
+ integrity sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==
to-array@0.1.4:
version "0.1.4"
@@ -10115,15 +6886,15 @@ to-regex-range@^5.0.1:
dependencies:
is-number "^7.0.0"
-toidentifier@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
- integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
+totalist@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8"
+ integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
-tough-cookie@^4.0.0:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.2.tgz#e53e84b85f24e0b65dd526f46628db6c85f6b874"
- integrity sha512-G9fqXWoYFZgTc2z8Q5zaHy/vJMjm+WV0AkAeHxVCQiEB1b+dGvWzFW6QV07cY5jQ5gRkeid2qIkzkxUnmoQZUQ==
+tough-cookie@^4.1.2:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
+ integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
dependencies:
psl "^1.1.33"
punycode "^2.1.1"
@@ -10144,18 +6915,20 @@ tr46@^2.1.0:
dependencies:
punycode "^2.1.1"
-tryer@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8"
- integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+tr46@^4.1.1:
+ version "4.1.1"
+ resolved "https://registry.yarnpkg.com/tr46/-/tr46-4.1.1.tgz#281a758dcc82aeb4fe38c7dfe4d11a395aac8469"
+ integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
+ dependencies:
+ punycode "^2.3.0"
tsconfig-paths@^3.14.1:
- version "3.14.1"
- resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"
- integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==
+ version "3.14.2"
+ resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz#6e32f1f79412decd261f92d633a9dc1cfa99f088"
+ integrity sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==
dependencies:
"@types/json5" "^0.0.29"
- json5 "^1.0.1"
+ json5 "^1.0.2"
minimist "^1.2.6"
strip-bom "^3.0.0"
@@ -10164,10 +6937,10 @@ tslib@^1.8.1, tslib@^1.9.3:
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.3, tslib@^2.1.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
- integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
+tslib@^2.0.0, tslib@^2.1.0:
+ version "2.5.0"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
+ integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
tsutils@^3.21.0:
version "3.21.0"
@@ -10176,6 +6949,13 @@ tsutils@^3.21.0:
dependencies:
tslib "^1.8.1"
+tunnel-rat@0.1.2:
+ version "0.1.2"
+ resolved "https://registry.yarnpkg.com/tunnel-rat/-/tunnel-rat-0.1.2.tgz#1717efbc474ea2d8aa05a91622457a6e201c0aeb"
+ integrity sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==
+ dependencies:
+ zustand "^4.3.2"
+
type-check@^0.4.0, type-check@~0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1"
@@ -10183,14 +6963,7 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-check@~0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72"
- integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
- dependencies:
- prelude-ls "~1.1.2"
-
-type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.5:
+type-detect@^4.0.0, type-detect@^4.0.5:
version "4.0.8"
resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
@@ -10210,25 +6983,19 @@ type-fest@^0.21.3:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-type-is@~1.6.18:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
+typed-array-length@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb"
+ integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==
dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
+ call-bind "^1.0.2"
+ for-each "^0.3.3"
+ is-typed-array "^1.1.9"
-typedarray-to-buffer@^3.1.5:
- version "3.1.5"
- resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
- integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==
- dependencies:
- is-typedarray "^1.0.0"
-
-typescript@4.5.5:
- version "4.5.5"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3"
- integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==
+typescript@4.9.4:
+ version "4.9.4"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.4.tgz#a2a3d2756c079abda241d75f149df9d561091e78"
+ integrity sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==
typeson-registry@^1.0.0-alpha.20:
version "1.0.0-alpha.39"
@@ -10244,6 +7011,11 @@ typeson@^6.0.0, typeson@^6.1.0:
resolved "https://registry.yarnpkg.com/typeson/-/typeson-6.1.0.tgz#5b2a53705a5f58ff4d6f82f965917cabd0d7448b"
integrity sha512-6FTtyGr8ldU0pfbvW/eOZrEtEkczHRUtduBnA90Jh9kMPCiFNnXIon3vF41N0S4tV1HHQt4Hk1j4srpESziCaA==
+ufo@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.1.2.tgz#d0d9e0fa09dece0c31ffd57bd363f030a35cfe76"
+ integrity sha512-TrY6DsjTQQgyS3E3dBaOXf0TpPD8u9FVrVYmKVegJuFw51n/YB9XPt+U6ydzFG5ZIN7+DIjPbNmXoBj9esYhgQ==
+
unbox-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e"
@@ -10267,16 +7039,23 @@ unicode-match-property-ecmascript@^2.0.0:
unicode-canonical-property-names-ecmascript "^2.0.0"
unicode-property-aliases-ecmascript "^2.0.0"
-unicode-match-property-value-ecmascript@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714"
- integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==
+unicode-match-property-value-ecmascript@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz#cb5fffdcd16a05124f5a4b0bf7c3770208acbbe0"
+ integrity sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==
unicode-property-aliases-ecmascript@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd"
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+union@~0.5.0:
+ version "0.5.0"
+ resolved "https://registry.yarnpkg.com/union/-/union-0.5.0.tgz#b2c11be84f60538537b846edb9ba266ba0090075"
+ integrity sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==
+ dependencies:
+ qs "^6.4.0"
+
unique-string@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d"
@@ -10294,22 +7073,12 @@ universalify@^2.0.0:
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
-
-unquote@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/unquote/-/unquote-1.1.1.tgz#8fded7324ec6e88a0ff8b905e7c098cdc086d544"
- integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
-
upath@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-update-browserslist-db@^1.0.9:
+update-browserslist-db@^1.0.10:
version "1.0.10"
resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz#0f54b876545726f17d00cd9a2561e6dade943ff3"
integrity sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==
@@ -10324,6 +7093,11 @@ uri-js@^4.2.2:
dependencies:
punycode "^2.1.0"
+url-join@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
+ integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
+
url-parse@^1.5.3:
version "1.5.10"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
@@ -10332,212 +7106,224 @@ url-parse@^1.5.3:
querystringify "^2.1.1"
requires-port "^1.0.0"
-util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-util.promisify@~1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee"
- integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+use-callback-ref@^1.3.0:
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.0.tgz#772199899b9c9a50526fedc4993fc7fa1f7e32d5"
+ integrity sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==
dependencies:
- define-properties "^1.1.3"
- es-abstract "^1.17.2"
- has-symbols "^1.0.1"
- object.getownpropertydescriptors "^2.1.0"
+ tslib "^2.0.0"
-utila@~0.4:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/utila/-/utila-0.4.0.tgz#8a16a05d445657a3aea5eecc5b12a4fa5379772c"
- integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
+use-isomorphic-layout-effect@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb"
+ integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
+use-sidecar@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.2.tgz#2f43126ba2d7d7e117aa5855e5d8f0276dfe73c2"
+ integrity sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==
+ dependencies:
+ detect-node-es "^1.1.0"
+ tslib "^2.0.0"
-uuid@^8.3.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
+use-sync-external-store@1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a"
+ integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==
v8-compile-cache@^2.0.3:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==
-v8-to-istanbul@^8.1.0:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz#77b752fd3975e31bbcef938f85e9bd1c7a8d60ed"
- integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==
+vite-node@0.32.2:
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/vite-node/-/vite-node-0.32.2.tgz#bfccdfeb708b2309ea9e5fe424951c75bb9c0096"
+ integrity sha512-dTQ1DCLwl2aEseov7cfQ+kDMNJpM1ebpyMMMwWzBvLbis8Nla/6c9WQcqpPssTwS6Rp/+U6KwlIj8Eapw4bLdA==
dependencies:
- "@types/istanbul-lib-coverage" "^2.0.1"
- convert-source-map "^1.6.0"
- source-map "^0.7.3"
+ cac "^6.7.14"
+ debug "^4.3.4"
+ mlly "^1.2.0"
+ pathe "^1.1.0"
+ picocolors "^1.0.0"
+ vite "^3.0.0 || ^4.0.0"
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
-
-w3c-hr-time@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd"
- integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+vite-plugin-checker@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.yarnpkg.com/vite-plugin-checker/-/vite-plugin-checker-0.6.1.tgz#51a0e654e033b5b9ad6301ae4d0ed0f5886d437c"
+ integrity sha512-4fAiu3W/IwRJuJkkUZlWbLunSzsvijDf0eDN6g/MGh6BUK4SMclOTGbLJCPvdAcMOQvVmm8JyJeYLYd4//8CkA==
dependencies:
- browser-process-hrtime "^1.0.0"
+ "@babel/code-frame" "^7.12.13"
+ ansi-escapes "^4.3.0"
+ chalk "^4.1.1"
+ chokidar "^3.5.1"
+ commander "^8.0.0"
+ fast-glob "^3.2.7"
+ fs-extra "^11.1.0"
+ lodash.debounce "^4.0.8"
+ lodash.pick "^4.4.0"
+ npm-run-path "^4.0.1"
+ semver "^7.5.0"
+ strip-ansi "^6.0.0"
+ tiny-invariant "^1.1.0"
+ vscode-languageclient "^7.0.0"
+ vscode-languageserver "^7.0.0"
+ vscode-languageserver-textdocument "^1.0.1"
+ vscode-uri "^3.0.2"
-w3c-xmlserializer@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a"
- integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+vite-plugin-ejs@1.6.4:
+ version "1.6.4"
+ resolved "https://registry.yarnpkg.com/vite-plugin-ejs/-/vite-plugin-ejs-1.6.4.tgz#aa30820d8235774e717d902754a552480cf7758b"
+ integrity sha512-23p1RS4PiA0veXY5/gHZ60pl3pPvd8NEqdBsDgxNK8nM1rjFFDcVb0paNmuipzCgNP/Y0f/Id22M7Il4kvZ2jA==
dependencies:
- xml-name-validator "^3.0.0"
+ ejs "^3.1.8"
-walker@^1.0.7:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"
- integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
+vite-plugin-pwa@0.16.4:
+ version "0.16.4"
+ resolved "https://registry.yarnpkg.com/vite-plugin-pwa/-/vite-plugin-pwa-0.16.4.tgz#cd2618c8b4f83eac1493f2ed7b05f72552a2b735"
+ integrity sha512-lmwHFIs9zI2H9bXJld/zVTbCqCQHZ9WrpyDMqosICDV0FVnCJwniX1NMDB79HGTIZzOQkY4gSZaVTJTw6maz/Q==
dependencies:
- makeerror "1.0.12"
+ debug "^4.3.4"
+ fast-glob "^3.2.12"
+ pretty-bytes "^6.0.0"
+ workbox-build "^7.0.0"
+ workbox-window "^7.0.0"
-watchpack@^2.4.0:
+vite-plugin-svgr@2.4.0:
version "2.4.0"
- resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
- integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
+ resolved "https://registry.yarnpkg.com/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz#9b14953955e79893ea7718089b9777a494e38fc6"
+ integrity sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==
dependencies:
- glob-to-regexp "^0.4.1"
- graceful-fs "^4.1.2"
+ "@rollup/pluginutils" "^5.0.2"
+ "@svgr/core" "^6.5.1"
-wbuf@^1.1.0, wbuf@^1.7.3:
- version "1.7.3"
- resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
- integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+vite@4.4.2:
+ version "4.4.2"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.2.tgz#acd47de771c498aec80e4900f30133d9529b278a"
+ integrity sha512-zUcsJN+UvdSyHhYa277UHhiJ3iq4hUBwHavOpsNUGsTgjBeoBlK8eDt+iT09pBq0h9/knhG/SPrZiM7cGmg7NA==
dependencies:
- minimalistic-assert "^1.0.0"
+ esbuild "^0.18.10"
+ postcss "^8.4.24"
+ rollup "^3.25.2"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+"vite@^3.0.0 || ^4.0.0":
+ version "4.3.9"
+ resolved "https://registry.yarnpkg.com/vite/-/vite-4.3.9.tgz#db896200c0b1aa13b37cdc35c9e99ee2fdd5f96d"
+ integrity sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==
+ dependencies:
+ esbuild "^0.17.5"
+ postcss "^8.4.23"
+ rollup "^3.21.0"
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+vitest-canvas-mock@0.3.2:
+ version "0.3.2"
+ resolved "https://registry.yarnpkg.com/vitest-canvas-mock/-/vitest-canvas-mock-0.3.2.tgz#d52031c423519e0c7bf2687ca6d7ad2e926ea182"
+ integrity sha512-lds7MKxvFFPDCGLXsQI2ym1fxvC93DaS0Bb6sdjvylFyL6NYrAAcPb6xZGF2sMOt5fSLHddqAQaujqpbc3p0Zg==
+ dependencies:
+ jest-canvas-mock "~2.4.0"
+
+vitest@0.32.2:
+ version "0.32.2"
+ resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.32.2.tgz#758ce2220f609e240ac054eca7ad11a5140679ab"
+ integrity sha512-hU8GNNuQfwuQmqTLfiKcqEhZY72Zxb7nnN07koCUNmntNxbKQnVbeIS6sqUgR3eXSlbOpit8+/gr1KpqoMgWCQ==
+ dependencies:
+ "@types/chai" "^4.3.5"
+ "@types/chai-subset" "^1.3.3"
+ "@types/node" "*"
+ "@vitest/expect" "0.32.2"
+ "@vitest/runner" "0.32.2"
+ "@vitest/snapshot" "0.32.2"
+ "@vitest/spy" "0.32.2"
+ "@vitest/utils" "0.32.2"
+ acorn "^8.8.2"
+ acorn-walk "^8.2.0"
+ cac "^6.7.14"
+ chai "^4.3.7"
+ concordance "^5.0.4"
+ debug "^4.3.4"
+ local-pkg "^0.4.3"
+ magic-string "^0.30.0"
+ pathe "^1.1.0"
+ picocolors "^1.0.0"
+ std-env "^3.3.2"
+ strip-literal "^1.0.1"
+ tinybench "^2.5.0"
+ tinypool "^0.5.0"
+ vite "^3.0.0 || ^4.0.0"
+ vite-node "0.32.2"
+ why-is-node-running "^2.2.2"
+
+vscode-jsonrpc@6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-6.0.0.tgz#108bdb09b4400705176b957ceca9e0880e9b6d4e"
+ integrity sha512-wnJA4BnEjOSyFMvjZdpiOwhSq9uDoK8e/kpRJDTaMYzwlkrhG1fwDIZI94CLsLzlCK5cIbMMtFlJlfR57Lavmg==
+
+vscode-languageclient@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageclient/-/vscode-languageclient-7.0.0.tgz#b505c22c21ffcf96e167799757fca07a6bad0fb2"
+ integrity sha512-P9AXdAPlsCgslpP9pRxYPqkNYV7Xq8300/aZDpO35j1fJm/ncize8iGswzYlcvFw5DQUx4eVk+KvfXdL0rehNg==
+ dependencies:
+ minimatch "^3.0.4"
+ semver "^7.3.4"
+ vscode-languageserver-protocol "3.16.0"
+
+vscode-languageserver-protocol@3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.16.0.tgz#34135b61a9091db972188a07d337406a3cdbe821"
+ integrity sha512-sdeUoAawceQdgIfTI+sdcwkiK2KU+2cbEYA0agzM2uqaUy2UpnnGHtWTHVEtS0ES4zHU0eMFRGN+oQgDxlD66A==
+ dependencies:
+ vscode-jsonrpc "6.0.0"
+ vscode-languageserver-types "3.16.0"
+
+vscode-languageserver-textdocument@^1.0.1:
+ version "1.0.8"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.8.tgz#9eae94509cbd945ea44bca8dcfe4bb0c15bb3ac0"
+ integrity sha512-1bonkGqQs5/fxGT5UchTgjGVnfysL0O8v1AYMBjqTbWQTFn721zaPGDYFkOKtfDgFiSgXM3KwaG3FMGfW4Ed9Q==
+
+vscode-languageserver-types@3.16.0:
+ version "3.16.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver-types/-/vscode-languageserver-types-3.16.0.tgz#ecf393fc121ec6974b2da3efb3155644c514e247"
+ integrity sha512-k8luDIWJWyenLc5ToFQQMaSrqCHiLwyKPHKPQZ5zz21vM+vIVUSvsRpcbiECH4WR88K2XZqc4ScRcZ7nk/jbeA==
+
+vscode-languageserver@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/vscode-languageserver/-/vscode-languageserver-7.0.0.tgz#49b068c87cfcca93a356969d20f5d9bdd501c6b0"
+ integrity sha512-60HTx5ID+fLRcgdHfmz0LDZAXYEV68fzwG0JWwEPBode9NuMYTIxuYXPg4ngO8i8+Ou0lM7y6GzaYWbiDL0drw==
+ dependencies:
+ vscode-languageserver-protocol "3.16.0"
+
+vscode-uri@^3.0.2:
+ version "3.0.7"
+ resolved "https://registry.yarnpkg.com/vscode-uri/-/vscode-uri-3.0.7.tgz#6d19fef387ee6b46c479e5fb00870e15e58c1eb8"
+ integrity sha512-eOpPHogvorZRobNqJGhapa0JdwaxpjVvyBp0QIUMRMSf8ZAlqOdEquKuRmw9Qwu0qXtJIWqFtMkmvJjUZmMjVA==
+
+w3c-xmlserializer@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz#aebdc84920d806222936e3cdce408e32488a3073"
+ integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
+ dependencies:
+ xml-name-validator "^4.0.0"
webidl-conversions@^4.0.2:
version "4.0.2"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad"
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
-webidl-conversions@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff"
- integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
-
webidl-conversions@^6.1.0:
version "6.1.0"
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514"
integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
-webpack-dev-middleware@^5.3.1:
- version "5.3.3"
- resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f"
- integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==
- dependencies:
- colorette "^2.0.10"
- memfs "^3.4.3"
- mime-types "^2.1.31"
- range-parser "^1.2.1"
- schema-utils "^4.0.0"
+webidl-conversions@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
+ integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
-webpack-dev-server@^4.6.0:
- version "4.11.1"
- resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz#ae07f0d71ca0438cf88446f09029b92ce81380b5"
- integrity sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==
- dependencies:
- "@types/bonjour" "^3.5.9"
- "@types/connect-history-api-fallback" "^1.3.5"
- "@types/express" "^4.17.13"
- "@types/serve-index" "^1.9.1"
- "@types/serve-static" "^1.13.10"
- "@types/sockjs" "^0.3.33"
- "@types/ws" "^8.5.1"
- ansi-html-community "^0.0.8"
- bonjour-service "^1.0.11"
- chokidar "^3.5.3"
- colorette "^2.0.10"
- compression "^1.7.4"
- connect-history-api-fallback "^2.0.0"
- default-gateway "^6.0.3"
- express "^4.17.3"
- graceful-fs "^4.2.6"
- html-entities "^2.3.2"
- http-proxy-middleware "^2.0.3"
- ipaddr.js "^2.0.1"
- open "^8.0.9"
- p-retry "^4.5.0"
- rimraf "^3.0.2"
- schema-utils "^4.0.0"
- selfsigned "^2.1.1"
- serve-index "^1.9.1"
- sockjs "^0.3.24"
- spdy "^4.0.2"
- webpack-dev-middleware "^5.3.1"
- ws "^8.4.2"
-
-webpack-manifest-plugin@^4.0.2:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz#10f8dbf4714ff93a215d5a45bcc416d80506f94f"
- integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==
- dependencies:
- tapable "^2.0.0"
- webpack-sources "^2.2.0"
-
-webpack-sources@^1.4.3:
- version "1.4.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.4.3.tgz#eedd8ec0b928fbf1cbfe994e22d2d890f330a933"
- integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
- dependencies:
- source-list-map "^2.0.0"
- source-map "~0.6.1"
-
-webpack-sources@^2.2.0:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.3.1.tgz#570de0af163949fe272233c2cefe1b56f74511fd"
- integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==
- dependencies:
- source-list-map "^2.0.1"
- source-map "^0.6.1"
-
-webpack-sources@^3.2.3:
- version "3.2.3"
- resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
- integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-
-webpack@^5.64.4:
- version "5.75.0"
- resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.75.0.tgz#1e440468647b2505860e94c9ff3e44d5b582c152"
- integrity sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==
- dependencies:
- "@types/eslint-scope" "^3.7.3"
- "@types/estree" "^0.0.51"
- "@webassemblyjs/ast" "1.11.1"
- "@webassemblyjs/wasm-edit" "1.11.1"
- "@webassemblyjs/wasm-parser" "1.11.1"
- acorn "^8.7.1"
- acorn-import-assertions "^1.7.6"
- browserslist "^4.14.5"
- chrome-trace-event "^1.0.2"
- enhanced-resolve "^5.10.0"
- es-module-lexer "^0.9.0"
- 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.0"
- tapable "^2.1.1"
- terser-webpack-plugin "^5.1.3"
- watchpack "^2.4.0"
- webpack-sources "^3.2.3"
-
-websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
+websocket-driver@>=0.5.1:
version "0.7.4"
resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
@@ -10556,27 +7342,35 @@ webworkify@^1.5.0:
resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c"
integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g==
-whatwg-encoding@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0"
- integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+well-known-symbols@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/well-known-symbols/-/well-known-symbols-2.0.0.tgz#e9c7c07dbd132b7b84212c8174391ec1f9871ba5"
+ integrity sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==
+
+whatwg-encoding@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53"
+ integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
dependencies:
- iconv-lite "0.4.24"
+ iconv-lite "0.6.3"
whatwg-fetch@2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f"
integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==
-whatwg-fetch@^3.6.2:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c"
- integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA==
+whatwg-mimetype@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
+ integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
-whatwg-mimetype@^2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf"
- integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+whatwg-url@^12.0.0, whatwg-url@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-12.0.1.tgz#fd7bcc71192e7c3a2a97b9a8d6b094853ed8773c"
+ integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==
+ dependencies:
+ tr46 "^4.1.1"
+ webidl-conversions "^7.0.0"
whatwg-url@^7.0.0:
version "7.1.0"
@@ -10587,7 +7381,7 @@ whatwg-url@^7.0.0:
tr46 "^1.0.1"
webidl-conversions "^4.0.2"
-whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0:
+whatwg-url@^8.4.0:
version "8.7.0"
resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77"
integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==
@@ -10596,7 +7390,7 @@ whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0:
tr46 "^2.1.0"
webidl-conversions "^6.1.0"
-which-boxed-primitive@^1.0.1, which-boxed-primitive@^1.0.2:
+which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6"
integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==
@@ -10617,24 +7411,17 @@ which-collection@^1.0.1:
is-weakmap "^2.0.1"
is-weakset "^2.0.1"
-which-typed-array@^1.1.2:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.8.tgz#0cfd53401a6f334d90ed1125754a42ed663eb01f"
- integrity sha512-Jn4e5PItbcAHyLoRDwvPj1ypu27DJbtdYXUa5zsinrUx77Uvfb0cXwwnGMTn7cjUfhhqgVQnVJCwF+7cgU7tpw==
+which-typed-array@^1.1.9:
+ version "1.1.9"
+ resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.9.tgz#307cf898025848cf995e795e8423c7f337efbde6"
+ integrity sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==
dependencies:
available-typed-arrays "^1.0.5"
call-bind "^1.0.2"
- es-abstract "^1.20.0"
for-each "^0.3.3"
+ gopd "^1.0.1"
has-tostringtag "^1.0.0"
- is-typed-array "^1.1.9"
-
-which@^1.3.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
+ is-typed-array "^1.1.10"
which@^2.0.1:
version "2.0.2"
@@ -10643,30 +7430,38 @@ which@^2.0.1:
dependencies:
isexe "^2.0.0"
-word-wrap@^1.2.3, word-wrap@~1.2.3:
+why-is-node-running@^2.2.2:
+ version "2.2.2"
+ resolved "https://registry.yarnpkg.com/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e"
+ integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
+ dependencies:
+ siginfo "^2.0.0"
+ stackback "0.0.2"
+
+word-wrap@^1.2.3:
version "1.2.3"
resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c"
integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==
-workbox-background-sync@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.4.tgz#3141afba3cc8aa2ae14c24d0f6811374ba8ff6a9"
- integrity sha512-0r4INQZMyPky/lj4Ou98qxcThrETucOde+7mRGJl13MPJugQNKeZQOdIJe/1AchOP23cTqHcN/YVpD6r8E6I8g==
+workbox-background-sync@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-7.0.0.tgz#2b84b96ca35fec976e3bd2794b70e4acec46b3a5"
+ integrity sha512-S+m1+84gjdueM+jIKZ+I0Lx0BDHkk5Nu6a3kTVxP4fdj3gKouRNmhO8H290ybnJTOPfBDtTMXSQA/QLTvr7PeA==
dependencies:
idb "^7.0.1"
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-broadcast-update@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.4.tgz#8441cff5417cd41f384ba7633ca960a7ffe40f66"
- integrity sha512-I/lBERoH1u3zyBosnpPEtcAVe5lwykx9Yg1k6f8/BGEPGaMMgZrwVrqL1uA9QZ1NGGFoyE6t9i7lBjOlDhFEEw==
+workbox-broadcast-update@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-7.0.0.tgz#7f611ca1a94ba8ac0aa40fa171c9713e0f937d22"
+ integrity sha512-oUuh4jzZrLySOo0tC0WoKiSg90bVAcnE98uW7F8GFiSOXnhogfNDGZelPJa+6KpGBO5+Qelv04Hqx2UD+BJqNQ==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-build@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.4.tgz#7d06d31eb28a878817e1c991c05c5b93409f0389"
- integrity sha512-kgRevLXEYvUW9WS4XoziYqZ8Q9j/2ziJYEtTrjdz5/L/cTUa2XfyMP2i7c3p34lgqJ03+mTiz13SdFef2POwbA==
+workbox-build@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-7.0.0.tgz#02ab5ef2991b3369b8b9395703f08912212769b4"
+ integrity sha512-CttE7WCYW9sZC+nUYhQg3WzzGPr4IHmrPnjKiu3AMXsiNQKx+l4hHl63WTrnicLmKEKHScWDH8xsGBdrYgtBzg==
dependencies:
"@apideck/better-ajv-errors" "^0.3.1"
"@babel/core" "^7.11.1"
@@ -10690,132 +7485,121 @@ workbox-build@6.5.4:
strip-comments "^2.0.1"
tempy "^0.6.0"
upath "^1.2.0"
- workbox-background-sync "6.5.4"
- workbox-broadcast-update "6.5.4"
- workbox-cacheable-response "6.5.4"
- workbox-core "6.5.4"
- workbox-expiration "6.5.4"
- workbox-google-analytics "6.5.4"
- workbox-navigation-preload "6.5.4"
- workbox-precaching "6.5.4"
- workbox-range-requests "6.5.4"
- workbox-recipes "6.5.4"
- workbox-routing "6.5.4"
- workbox-strategies "6.5.4"
- workbox-streams "6.5.4"
- workbox-sw "6.5.4"
- workbox-window "6.5.4"
+ workbox-background-sync "7.0.0"
+ workbox-broadcast-update "7.0.0"
+ workbox-cacheable-response "7.0.0"
+ workbox-core "7.0.0"
+ workbox-expiration "7.0.0"
+ workbox-google-analytics "7.0.0"
+ workbox-navigation-preload "7.0.0"
+ workbox-precaching "7.0.0"
+ workbox-range-requests "7.0.0"
+ workbox-recipes "7.0.0"
+ workbox-routing "7.0.0"
+ workbox-strategies "7.0.0"
+ workbox-streams "7.0.0"
+ workbox-sw "7.0.0"
+ workbox-window "7.0.0"
-workbox-cacheable-response@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.4.tgz#a5c6ec0c6e2b6f037379198d4ef07d098f7cf137"
- integrity sha512-DCR9uD0Fqj8oB2TSWQEm1hbFs/85hXXoayVwFKLVuIuxwJaihBsLsp4y7J9bvZbqtPJ1KlCkmYVGQKrBU4KAug==
+workbox-cacheable-response@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-7.0.0.tgz#ee27c036728189eed69d25a135013053277482d2"
+ integrity sha512-0lrtyGHn/LH8kKAJVOQfSu3/80WDc9Ma8ng0p2i/5HuUndGttH+mGMSvOskjOdFImLs2XZIimErp7tSOPmu/6g==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-core@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.4.tgz#df48bf44cd58bb1d1726c49b883fb1dffa24c9ba"
- integrity sha512-OXYb+m9wZm8GrORlV2vBbE5EC1FKu71GGp0H4rjmxmF4/HLbMCoTFws87M3dFwgpmg0v00K++PImpNQ6J5NQ6Q==
+workbox-core@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-7.0.0.tgz#dec114ec923cc2adc967dd9be1b8a0bed50a3545"
+ integrity sha512-81JkAAZtfVP8darBpfRTovHg8DGAVrKFgHpOArZbdFd78VqHr5Iw65f2guwjE2NlCFbPFDoez3D3/6ZvhI/rwQ==
-workbox-expiration@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.4.tgz#501056f81e87e1d296c76570bb483ce5e29b4539"
- integrity sha512-jUP5qPOpH1nXtjGGh1fRBa1wJL2QlIb5mGpct3NzepjGG2uFFBn4iiEBiI9GUmfAFR2ApuRhDydjcRmYXddiEQ==
+workbox-expiration@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-7.0.0.tgz#3d90bcf2a7577241de950f89784f6546b66c2baa"
+ integrity sha512-MLK+fogW+pC3IWU9SFE+FRStvDVutwJMR5if1g7oBJx3qwmO69BNoJQVaMXq41R0gg3MzxVfwOGKx3i9P6sOLQ==
dependencies:
idb "^7.0.1"
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-google-analytics@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.4.tgz#c74327f80dfa4c1954cbba93cd7ea640fe7ece7d"
- integrity sha512-8AU1WuaXsD49249Wq0B2zn4a/vvFfHkpcFfqAFHNHwln3jK9QUYmzdkKXGIZl9wyKNP+RRX30vcgcyWMcZ9VAg==
+workbox-google-analytics@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-7.0.0.tgz#603b2c4244af1e85de0fb26287d4e17d3293452a"
+ integrity sha512-MEYM1JTn/qiC3DbpvP2BVhyIH+dV/5BjHk756u9VbwuAhu0QHyKscTnisQuz21lfRpOwiS9z4XdqeVAKol0bzg==
dependencies:
- workbox-background-sync "6.5.4"
- workbox-core "6.5.4"
- workbox-routing "6.5.4"
- workbox-strategies "6.5.4"
+ workbox-background-sync "7.0.0"
+ workbox-core "7.0.0"
+ workbox-routing "7.0.0"
+ workbox-strategies "7.0.0"
-workbox-navigation-preload@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.4.tgz#ede56dd5f6fc9e860a7e45b2c1a8f87c1c793212"
- integrity sha512-IIwf80eO3cr8h6XSQJF+Hxj26rg2RPFVUmJLUlM0+A2GzB4HFbQyKkrgD5y2d84g2IbJzP4B4j5dPBRzamHrng==
+workbox-navigation-preload@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-7.0.0.tgz#4913878dbbd97057181d57baa18d2bbdde085c6c"
+ integrity sha512-juWCSrxo/fiMz3RsvDspeSLGmbgC0U9tKqcUPZBCf35s64wlaLXyn2KdHHXVQrb2cqF7I0Hc9siQalainmnXJA==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-precaching@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.4.tgz#740e3561df92c6726ab5f7471e6aac89582cab72"
- integrity sha512-hSMezMsW6btKnxHB4bFy2Qfwey/8SYdGWvVIKFaUm8vJ4E53JAY+U2JwLTRD8wbLWoP6OVUdFlXsTdKu9yoLTg==
+workbox-precaching@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-7.0.0.tgz#3979ba8033aadf3144b70e9fe631d870d5fbaa03"
+ integrity sha512-EC0vol623LJqTJo1mkhD9DZmMP604vHqni3EohhQVwhJlTgyKyOkMrZNy5/QHfOby+39xqC01gv4LjOm4HSfnA==
dependencies:
- workbox-core "6.5.4"
- workbox-routing "6.5.4"
- workbox-strategies "6.5.4"
+ workbox-core "7.0.0"
+ workbox-routing "7.0.0"
+ workbox-strategies "7.0.0"
-workbox-range-requests@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.4.tgz#86b3d482e090433dab38d36ae031b2bb0bd74399"
- integrity sha512-Je2qR1NXCFC8xVJ/Lux6saH6IrQGhMpDrPXWZWWS8n/RD+WZfKa6dSZwU+/QksfEadJEr/NfY+aP/CXFFK5JFg==
+workbox-range-requests@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-7.0.0.tgz#97511901e043df27c1aa422adcc999a7751f52ed"
+ integrity sha512-SxAzoVl9j/zRU9OT5+IQs7pbJBOUOlriB8Gn9YMvi38BNZRbM+RvkujHMo8FOe9IWrqqwYgDFBfv6sk76I1yaQ==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-recipes@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.4.tgz#cca809ee63b98b158b2702dcfb741b5cc3e24acb"
- integrity sha512-QZNO8Ez708NNwzLNEXTG4QYSKQ1ochzEtRLGaq+mr2PyoEIC1xFW7MrWxrONUxBFOByksds9Z4//lKAX8tHyUA==
+workbox-recipes@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-7.0.0.tgz#1a6a01c8c2dfe5a41eef0fed3fe517e8a45c6514"
+ integrity sha512-DntcK9wuG3rYQOONWC0PejxYYIDHyWWZB/ueTbOUDQgefaeIj1kJ7pdP3LZV2lfrj8XXXBWt+JDRSw1lLLOnww==
dependencies:
- workbox-cacheable-response "6.5.4"
- workbox-core "6.5.4"
- workbox-expiration "6.5.4"
- workbox-precaching "6.5.4"
- workbox-routing "6.5.4"
- workbox-strategies "6.5.4"
+ workbox-cacheable-response "7.0.0"
+ workbox-core "7.0.0"
+ workbox-expiration "7.0.0"
+ workbox-precaching "7.0.0"
+ workbox-routing "7.0.0"
+ workbox-strategies "7.0.0"
-workbox-routing@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.4.tgz#6a7fbbd23f4ac801038d9a0298bc907ee26fe3da"
- integrity sha512-apQswLsbrrOsBUWtr9Lf80F+P1sHnQdYodRo32SjiByYi36IDyL2r7BH1lJtFX8fwNHDa1QOVY74WKLLS6o5Pg==
+workbox-routing@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-7.0.0.tgz#6668438a06554f60645aedc77244a4fe3a91e302"
+ integrity sha512-8YxLr3xvqidnbVeGyRGkaV4YdlKkn5qZ1LfEePW3dq+ydE73hUUJJuLmGEykW3fMX8x8mNdL0XrWgotcuZjIvA==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-strategies@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.4.tgz#4edda035b3c010fc7f6152918370699334cd204d"
- integrity sha512-DEtsxhx0LIYWkJBTQolRxG4EI0setTJkqR4m7r4YpBdxtWJH1Mbg01Cj8ZjNOO8etqfA3IZaOPHUxCs8cBsKLw==
+workbox-strategies@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-7.0.0.tgz#dcba32b3f3074476019049cc490fe1a60ea73382"
+ integrity sha512-dg3qJU7tR/Gcd/XXOOo7x9QoCI9nk74JopaJaYAQ+ugLi57gPsXycVdBnYbayVj34m6Y8ppPwIuecrzkpBVwbA==
dependencies:
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
-workbox-streams@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.4.tgz#1cb3c168a6101df7b5269d0353c19e36668d7d69"
- integrity sha512-FXKVh87d2RFXkliAIheBojBELIPnWbQdyDvsH3t74Cwhg0fDheL1T8BqSM86hZvC0ZESLsznSYWw+Va+KVbUzg==
+workbox-streams@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-7.0.0.tgz#36722aecd04785f88b6f709e541c094fc658c0f9"
+ integrity sha512-moVsh+5to//l6IERWceYKGiftc+prNnqOp2sgALJJFbnNVpTXzKISlTIsrWY+ogMqt+x1oMazIdHj25kBSq/HQ==
dependencies:
- workbox-core "6.5.4"
- workbox-routing "6.5.4"
+ workbox-core "7.0.0"
+ workbox-routing "7.0.0"
-workbox-sw@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.4.tgz#d93e9c67924dd153a61367a4656ff4d2ae2ed736"
- integrity sha512-vo2RQo7DILVRoH5LjGqw3nphavEjK4Qk+FenXeUsknKn14eCNedHOXWbmnvP4ipKhlE35pvJ4yl4YYf6YsJArA==
+workbox-sw@7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-7.0.0.tgz#7350126411e3de1409f7ec243df8d06bb5b08b86"
+ integrity sha512-SWfEouQfjRiZ7GNABzHUKUyj8pCoe+RwjfOIajcx6J5mtgKkN+t8UToHnpaJL5UVVOf5YhJh+OHhbVNIHe+LVA==
-workbox-webpack-plugin@^6.4.1:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.4.tgz#baf2d3f4b8f435f3469887cf4fba2b7fac3d0fd7"
- integrity sha512-LmWm/zoaahe0EGmMTrSLUi+BjyR3cdGEfU3fS6PN1zKFYbqAKuQ+Oy/27e4VSXsyIwAw8+QDfk1XHNGtZu9nQg==
- dependencies:
- fast-json-stable-stringify "^2.1.0"
- pretty-bytes "^5.4.1"
- upath "^1.2.0"
- webpack-sources "^1.4.3"
- workbox-build "6.5.4"
-
-workbox-window@6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.4.tgz#d991bc0a94dff3c2dbb6b84558cff155ca878e91"
- integrity sha512-HnLZJDwYBE+hpG25AQBO8RUWBJRaCsI9ksQJEp3aCOFCaG5kqaToAYXFRAHxzRluM2cQbGzdQF5rjKPWPA1fug==
+workbox-window@7.0.0, workbox-window@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-7.0.0.tgz#a683ab33c896e4f16786794eac7978fc98a25d08"
+ integrity sha512-j7P/bsAWE/a7sxqTzXo3P2ALb1reTfZdvVp6OJ/uLr/C2kZAMvjeWGm8V4htQhor7DOvYg0sSbFN2+flT5U0qA==
dependencies:
"@types/trusted-types" "^2.0.2"
- workbox-core "6.5.4"
+ workbox-core "7.0.0"
wrap-ansi@^6.2.0:
version "6.2.0"
@@ -10840,25 +7624,10 @@ wrappy@1:
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-write-file-atomic@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8"
- integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==
- dependencies:
- imurmurhash "^0.1.4"
- is-typedarray "^1.0.0"
- signal-exit "^3.0.2"
- typedarray-to-buffer "^3.1.5"
-
-ws@^7.4.6:
- version "7.5.9"
- resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591"
- integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==
-
-ws@^8.4.2:
- version "8.11.0"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143"
- integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==
+ws@^8.13.0:
+ version "8.13.0"
+ resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0"
+ integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==
ws@~6.1.0:
version "6.1.4"
@@ -10867,10 +7636,10 @@ ws@~6.1.0:
dependencies:
async-limiter "~1.0.0"
-xml-name-validator@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a"
- integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+xml-name-validator@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835"
+ integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
xmlchars@^2.2.0:
version "2.2.0"
@@ -10887,22 +7656,22 @@ xmlhttprequest@1.8.0:
resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc"
integrity sha512-58Im/U0mlVBLM38NdZjHyhuMtCqa61469k2YP/AaPbvCoV9aQGUpbJBj1QRm2ytRiVQBD/fsw7L2bJGDVQswBA==
-xtend@^4.0.2:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
y18n@^5.0.5:
version "5.0.8"
resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
+yallist@^3.0.2:
+ version "3.1.1"
+ resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd"
+ integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
+
yallist@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
+yaml@^1.10.0, yaml@^1.10.2:
version "1.10.2"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
@@ -10930,7 +7699,14 @@ yeast@0.1.2:
resolved "https://registry.yarnpkg.com/yeast/-/yeast-0.1.2.tgz#008e06d8094320c372dbc2f8ed76a0ca6c8ac419"
integrity sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==
-yocto-queue@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
- integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
+yocto-queue@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
+ integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
+
+zustand@^4.3.2:
+ version "4.3.7"
+ resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.3.7.tgz#501b1f0393a7f1d103332e45ab574be5747fedce"
+ integrity sha512-dY8ERwB9Nd21ellgkBZFhudER8KVlelZm8388B5nDAXhO/+FZDhYMuRnqDgu5SYyRgz/iaf8RKnbUs/cHfOGlQ==
+ dependencies:
+ use-sync-external-store "1.2.0"