From ecef5d12f4af4f70e240fc54fb626c16d005eee3 Mon Sep 17 00:00:00 2001 From: Marcel Mraz Date: Fri, 28 Feb 2025 16:49:09 +0100 Subject: [PATCH] =?UTF-8?q?chore:=20release=20@excalidraw/excalidraw@18.0.?= =?UTF-8?q?0=20=20=F0=9F=8E=89=20(#9127)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - README.md | 10 +- .../@excalidraw/excalidraw/api/constants.mdx | 10 +- .../excalidraw/api/props/excalidraw-api.mdx | 15 +- .../excalidraw/api/utils/restore.mdx | 9 +- .../@excalidraw/excalidraw/development.mdx | 8 +- dev-docs/docs/@excalidraw/excalidraw/faq.mdx | 2 - .../@excalidraw/excalidraw/installation.mdx | 44 +- .../@excalidraw/excalidraw/integration.mdx | 63 +- dev-docs/docusaurus.config.js | 23 + dev-docs/package.json | 6 +- dev-docs/src/theme/ReactLiveScope/index.js | 7 + dev-docs/yarn.lock | 1380 ++++++++++++++++- examples/excalidraw/package.json | 13 - examples/excalidraw/tsconfig.json | 3 - .../with-script-in-browser/vite.config.mts | 11 - examples/excalidraw/yarn.lock | 313 ---- .../{excalidraw => }/with-nextjs/.gitignore | 0 .../{excalidraw => }/with-nextjs/README.md | 0 .../with-nextjs/next.config.js | 0 .../{excalidraw => }/with-nextjs/package.json | 3 +- .../with-nextjs/public/images/doremon.png | Bin .../with-nextjs/public/images/excalibot.png | Bin .../with-nextjs/public/images/pika.jpeg | Bin .../with-nextjs/public/images/rocket.jpeg | Bin .../with-nextjs/src/app/favicon.ico | Bin .../with-nextjs/src/app/layout.tsx | 0 .../with-nextjs/src/app/page.tsx | 0 .../with-nextjs/src/common.scss | 0 .../with-nextjs/src/excalidrawWrapper.tsx | 2 +- .../src/pages/excalidraw-in-pages.tsx | 0 .../with-nextjs/tsconfig.json | 0 .../{excalidraw => }/with-nextjs/vercel.json | 0 .../{excalidraw => }/with-nextjs/yarn.lock | 0 .../.codesandbox/Dockerfile | 5 + .../.codesandbox/tasks.json | 35 + .../with-script-in-browser/.gitignore | 0 .../components/CustomFooter.tsx | 3 +- .../components/ExampleApp.scss | 0 .../components/ExampleApp.tsx | 6 +- .../components/MobileFooter.tsx | 3 +- .../components/sidebar/ExampleSidebar.scss | 0 .../components/sidebar/ExampleSidebar.tsx | 2 +- .../with-script-in-browser/index.html | 7 +- .../with-script-in-browser/index.tsx | 2 +- .../initialData.tsx | 0 .../with-script-in-browser/package.json | 9 +- .../public/images/doremon.png | Bin .../public/images/excalibot.png | Bin .../public/images/pika.jpeg | Bin .../public/images/rocket.jpeg | Bin examples/with-script-in-browser/tsconfig.json | 9 + .../utils.ts | 3 +- .../with-script-in-browser/vercel.json | 0 .../with-script-in-browser/vite.config.mts | 19 + excalidraw-app/App.tsx | 62 +- excalidraw-app/CustomStats.tsx | 14 +- excalidraw-app/ExcalidrawPlusIframeExport.tsx | 8 +- excalidraw-app/app-language/LanguageList.tsx | 2 +- .../app-language/language-detector.ts | 2 +- excalidraw-app/collab/Collab.tsx | 47 +- excalidraw-app/collab/CollabError.tsx | 4 +- excalidraw-app/collab/Portal.tsx | 16 +- excalidraw-app/components/AI.tsx | 8 +- excalidraw-app/components/AppFooter.tsx | 2 +- excalidraw-app/components/AppMainMenu.tsx | 6 +- .../components/AppWelcomeScreen.tsx | 8 +- excalidraw-app/components/DebugCanvas.tsx | 10 +- excalidraw-app/components/EncryptedIcon.tsx | 6 +- .../components/ExportToExcalidrawPlus.tsx | 24 +- excalidraw-app/components/GitHubCorner.tsx | 4 +- .../components/TopErrorBoundary.tsx | 4 +- excalidraw-app/data/FileManager.ts | 16 +- excalidraw-app/data/LocalData.ts | 18 +- excalidraw-app/data/firebase.ts | 20 +- excalidraw-app/data/index.ts | 28 +- excalidraw-app/data/localStorage.ts | 8 +- excalidraw-app/global.d.ts | 3 + excalidraw-app/share/ShareDialog.tsx | 22 +- excalidraw-app/tests/LanguageList.test.tsx | 6 +- excalidraw-app/tests/MobileMenu.test.tsx | 4 +- excalidraw-app/tests/collab.test.tsx | 24 +- excalidraw-app/useHandleAppTheme.ts | 8 +- excalidraw-app/vite.config.mts | 30 +- package.json | 8 +- packages/excalidraw/CHANGELOG.md | 724 ++++++++- packages/excalidraw/README.md | 36 +- .../excalidraw/actions/actionAddToLibrary.ts | 8 +- packages/excalidraw/actions/actionAlign.tsx | 14 +- .../excalidraw/actions/actionBoundText.tsx | 8 +- packages/excalidraw/actions/actionCanvas.tsx | 26 +- .../excalidraw/actions/actionClipboard.tsx | 28 +- .../excalidraw/actions/actionCropEditor.tsx | 4 +- .../actions/actionDeleteSelected.tsx | 12 +- .../excalidraw/actions/actionDistribute.tsx | 6 +- .../actions/actionDuplicateSelection.tsx | 6 +- .../excalidraw/actions/actionElementLink.ts | 17 +- .../excalidraw/actions/actionElementLock.ts | 6 +- packages/excalidraw/actions/actionExport.tsx | 24 +- .../excalidraw/actions/actionFinalize.tsx | 8 +- .../excalidraw/actions/actionFlip.test.tsx | 2 +- packages/excalidraw/actions/actionFlip.ts | 6 +- packages/excalidraw/actions/actionFrame.ts | 16 +- packages/excalidraw/actions/actionGroup.tsx | 24 +- packages/excalidraw/actions/actionHistory.tsx | 8 +- .../excalidraw/actions/actionLinearEditor.tsx | 4 +- packages/excalidraw/actions/actionLink.tsx | 4 +- packages/excalidraw/actions/actionMenu.tsx | 8 +- .../excalidraw/actions/actionNavigate.tsx | 6 +- .../excalidraw/actions/actionProperties.tsx | 53 +- .../excalidraw/actions/actionSelectAll.ts | 4 +- packages/excalidraw/actions/actionStyles.ts | 8 +- .../actions/actionTextAutoResize.ts | 4 +- .../actions/actionToggleGridMode.tsx | 4 +- .../actions/actionToggleObjectsSnapMode.tsx | 4 +- .../actions/actionToggleSearchMenu.ts | 6 +- .../excalidraw/actions/actionToggleStats.tsx | 4 +- .../actions/actionToggleViewMode.tsx | 4 +- .../actions/actionToggleZenMode.tsx | 4 +- packages/excalidraw/actions/actionZindex.tsx | 10 +- packages/excalidraw/actions/types.ts | 4 +- packages/excalidraw/charts.ts | 4 +- packages/excalidraw/clients.ts | 2 +- packages/excalidraw/components/App.tsx | 74 +- .../components/ImageExportDialog.tsx | 2 +- packages/excalidraw/components/LayerUI.tsx | 9 +- .../excalidraw/components/PublishLibrary.tsx | 2 +- packages/excalidraw/components/SearchMenu.tsx | 4 +- .../components/Sidebar/Sidebar.scss | 2 +- .../excalidraw/components/Sidebar/Sidebar.tsx | 3 + .../excalidraw/components/Stats/Angle.tsx | 4 +- .../excalidraw/components/Stats/Dimension.tsx | 2 +- .../excalidraw/components/Stats/DragInput.tsx | 10 +- .../components/Stats/MultiAngle.tsx | 4 +- .../components/Stats/MultiDimension.tsx | 2 +- .../components/Stats/MultiPosition.tsx | 2 +- .../excalidraw/components/Stats/Position.tsx | 2 +- .../excalidraw/components/Stats/index.tsx | 4 +- .../components/Stats/stats.test.tsx | 4 +- packages/excalidraw/components/Stats/utils.ts | 4 +- .../components/TTDDialog/TTDDialog.tsx | 2 +- .../components/hyperlink/Hyperlink.tsx | 2 +- .../components/hyperlink/helpers.ts | 4 +- packages/excalidraw/constants.ts | 12 +- packages/excalidraw/css/theme.scss | 2 +- packages/excalidraw/css/variables.module.scss | 8 - packages/excalidraw/data/restore.ts | 4 +- packages/excalidraw/data/transform.test.ts | 2 +- packages/excalidraw/data/transform.ts | 2 +- packages/excalidraw/element/binding.ts | 6 +- packages/excalidraw/element/bounds.test.ts | 4 +- packages/excalidraw/element/bounds.ts | 4 +- packages/excalidraw/element/collision.ts | 15 +- packages/excalidraw/element/cropElement.ts | 2 +- packages/excalidraw/element/distance.ts | 6 +- .../excalidraw/element/elbowArrow.test.tsx | 4 +- packages/excalidraw/element/elbowArrow.ts | 2 +- packages/excalidraw/element/embeddable.ts | 4 +- packages/excalidraw/element/flowchart.ts | 2 +- packages/excalidraw/element/heading.ts | 4 +- .../excalidraw/element/linearElementEditor.ts | 4 +- packages/excalidraw/element/mutateElement.ts | 2 +- .../excalidraw/element/newElement.test.ts | 4 +- packages/excalidraw/element/newElement.ts | 2 +- packages/excalidraw/element/resizeElements.ts | 4 +- packages/excalidraw/element/resizeTest.ts | 4 +- .../excalidraw/element/textWysiwyg.test.tsx | 2 +- .../excalidraw/element/transformHandles.ts | 4 +- packages/excalidraw/element/types.ts | 2 +- packages/excalidraw/element/utils.ts | 4 +- .../excalidraw/fonts/ExcalidrawFontFace.ts | 4 +- packages/excalidraw/frame.ts | 7 +- .../excalidraw/hooks/useLibraryItemSvg.ts | 2 +- packages/excalidraw/index.tsx | 7 +- packages/excalidraw/package.json | 53 +- packages/excalidraw/points.ts | 6 +- .../excalidraw/renderer/interactiveScene.ts | 2 +- packages/excalidraw/renderer/renderElement.ts | 2 +- packages/excalidraw/renderer/renderSnaps.ts | 2 +- packages/excalidraw/scene/Shape.ts | 2 +- packages/excalidraw/scene/normalize.ts | 2 +- packages/excalidraw/scene/types.ts | 2 +- packages/excalidraw/shapes.tsx | 4 +- packages/excalidraw/snapping.ts | 4 +- packages/excalidraw/store.ts | 24 +- packages/excalidraw/tests/binding.test.tsx | 2 +- .../excalidraw/tests/cropElement.test.tsx | 2 + .../excalidraw/tests/data/restore.test.ts | 2 +- .../tests/fixtures/elementFixture.ts | 2 +- packages/excalidraw/tests/flip.test.tsx | 4 +- packages/excalidraw/tests/helpers/api.ts | 2 +- packages/excalidraw/tests/helpers/ui.ts | 4 +- packages/excalidraw/tests/history.test.tsx | 160 +- .../tests/linearElementEditor.test.tsx | 4 +- .../excalidraw/tests/packages/events.test.tsx | 4 +- packages/excalidraw/tests/resize.test.tsx | 4 +- .../excalidraw/tests/scene/export.test.ts | 4 +- packages/excalidraw/tsconfig.json | 17 +- packages/excalidraw/types.ts | 11 +- packages/excalidraw/utils.ts | 2 +- packages/excalidraw/visualdebug.ts | 6 +- packages/math/global.d.ts | 3 + packages/math/package.json | 16 +- packages/math/range.ts | 2 +- packages/math/tsconfig.json | 24 + packages/math/webpack.prod.config.js | 55 - packages/tsconfig.dev.json | 11 - packages/tsconfig.prod.json | 9 - packages/utils/bbox.ts | 4 +- packages/utils/collision.test.ts | 4 +- packages/utils/collision.ts | 4 +- packages/utils/export.test.ts | 6 +- packages/utils/export.ts | 18 +- packages/utils/geometry/geometry.test.ts | 9 +- packages/utils/geometry/shape.ts | 10 +- packages/utils/global.d.ts | 4 +- packages/utils/index.ts | 2 +- packages/utils/package.json | 34 +- packages/utils/tsconfig.json | 16 +- packages/utils/utils.unmocked.test.ts | 10 +- packages/utils/webpack.prod.config.js | 60 - packages/utils/withinBounds.test.ts | 4 +- packages/utils/withinBounds.ts | 14 +- scripts/buildExample.mjs | 36 - scripts/buildMath.js | 116 +- scripts/buildPackage.js | 168 +- scripts/buildUtils.js | 140 +- scripts/prerelease.js | 2 +- scripts/woff2/woff2-esbuild-plugins.js | 7 +- tsconfig.json | 16 +- vitest.config.mts | 30 + yarn.lock | 1251 ++------------- 232 files changed, 3412 insertions(+), 2851 deletions(-) delete mode 100644 examples/excalidraw/package.json delete mode 100644 examples/excalidraw/tsconfig.json delete mode 100644 examples/excalidraw/with-script-in-browser/vite.config.mts delete mode 100644 examples/excalidraw/yarn.lock rename examples/{excalidraw => }/with-nextjs/.gitignore (100%) rename examples/{excalidraw => }/with-nextjs/README.md (100%) rename examples/{excalidraw => }/with-nextjs/next.config.js (100%) rename examples/{excalidraw => }/with-nextjs/package.json (84%) rename examples/{excalidraw => }/with-nextjs/public/images/doremon.png (100%) rename examples/{excalidraw => }/with-nextjs/public/images/excalibot.png (100%) rename examples/{excalidraw => }/with-nextjs/public/images/pika.jpeg (100%) rename examples/{excalidraw => }/with-nextjs/public/images/rocket.jpeg (100%) rename examples/{excalidraw => }/with-nextjs/src/app/favicon.ico (100%) rename examples/{excalidraw => }/with-nextjs/src/app/layout.tsx (100%) rename examples/{excalidraw => }/with-nextjs/src/app/page.tsx (100%) rename examples/{excalidraw => }/with-nextjs/src/common.scss (100%) rename examples/{excalidraw => }/with-nextjs/src/excalidrawWrapper.tsx (87%) rename examples/{excalidraw => }/with-nextjs/src/pages/excalidraw-in-pages.tsx (100%) rename examples/{excalidraw => }/with-nextjs/tsconfig.json (100%) rename examples/{excalidraw => }/with-nextjs/vercel.json (100%) rename examples/{excalidraw => }/with-nextjs/yarn.lock (100%) create mode 100644 examples/with-script-in-browser/.codesandbox/Dockerfile create mode 100644 examples/with-script-in-browser/.codesandbox/tasks.json rename examples/{excalidraw => }/with-script-in-browser/.gitignore (100%) rename examples/{excalidraw => with-script-in-browser}/components/CustomFooter.tsx (98%) rename examples/{excalidraw => with-script-in-browser}/components/ExampleApp.scss (100%) rename examples/{excalidraw => with-script-in-browser}/components/ExampleApp.tsx (99%) rename examples/{excalidraw => with-script-in-browser}/components/MobileFooter.tsx (94%) rename examples/{excalidraw => with-script-in-browser}/components/sidebar/ExampleSidebar.scss (100%) rename examples/{excalidraw => with-script-in-browser}/components/sidebar/ExampleSidebar.tsx (94%) rename examples/{excalidraw => }/with-script-in-browser/index.html (74%) rename examples/{excalidraw => }/with-script-in-browser/index.tsx (93%) rename examples/{excalidraw => with-script-in-browser}/initialData.tsx (100%) rename examples/{excalidraw => }/with-script-in-browser/package.json (50%) rename examples/{excalidraw => }/with-script-in-browser/public/images/doremon.png (100%) rename examples/{excalidraw => }/with-script-in-browser/public/images/excalibot.png (100%) rename examples/{excalidraw => }/with-script-in-browser/public/images/pika.jpeg (100%) rename examples/{excalidraw => }/with-script-in-browser/public/images/rocket.jpeg (100%) create mode 100644 examples/with-script-in-browser/tsconfig.json rename examples/{excalidraw => with-script-in-browser}/utils.ts (97%) rename examples/{excalidraw => }/with-script-in-browser/vercel.json (100%) create mode 100644 examples/with-script-in-browser/vite.config.mts create mode 100644 packages/math/global.d.ts create mode 100644 packages/math/tsconfig.json delete mode 100644 packages/math/webpack.prod.config.js delete mode 100644 packages/tsconfig.dev.json delete mode 100644 packages/tsconfig.prod.json delete mode 100644 packages/utils/webpack.prod.config.js delete mode 100644 scripts/buildExample.mjs diff --git a/.gitignore b/.gitignore index 81b63339fb..6f9407fad0 100644 --- a/.gitignore +++ b/.gitignore @@ -25,5 +25,4 @@ packages/excalidraw/types coverage dev-dist html -examples/**/bundle.* meta*.json \ No newline at end of file diff --git a/README.md b/README.md index 3c7265a80c..9458779ce9 100644 --- a/README.md +++ b/README.md @@ -87,13 +87,11 @@ We'll be adding these features as drop-in plugins for the npm package in the fut **Note:** following instructions are for installing the Excalidraw [npm package](https://www.npmjs.com/package/@excalidraw/excalidraw) when integrating Excalidraw into your own app. To run the repository locally for development, please refer to our [Development Guide](https://docs.excalidraw.com/docs/introduction/development). -``` +Use `npm` or `yarn` to install the package. + +```bash npm install react react-dom @excalidraw/excalidraw -``` - -or via yarn - -``` +# or yarn add react react-dom @excalidraw/excalidraw ``` diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx index 411cbb4429..36fbfa7582 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/constants.mdx @@ -8,15 +8,15 @@ import { FONT_FAMILY } from "@excalidraw/excalidraw"; ``` -`FONT_FAMILY` contains all the font families used in `Excalidraw` as explained below +`FONT_FAMILY` contains all the font families used in `Excalidraw`. The default families are the following: | Font Family | Description | | ----------- | ---------------------- | -| `Virgil` | The `Hand-drawn` font | -| `Helvetica` | The `Normal` Font | -| `Cascadia` | The `Code` Font | +| `Excalifont` | The `Hand-drawn` font | +| `Nunito` | The `Normal` Font | +| `Comic Shanns` | The `Code` Font | -Defaults to `FONT_FAMILY.Virgil` unless passed in `initialData.appState.currentItemFontFamily`. +Pre-selected family is `FONT_FAMILY.Excalifont`, unless it's overriden with `initialData.appState.currentItemFontFamily`. ### THEME diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/props/excalidraw-api.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/props/excalidraw-api.mdx index f68b4bd11d..b7a3bab5f4 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/api/props/excalidraw-api.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/api/props/excalidraw-api.mdx @@ -65,7 +65,7 @@ You can use this function to update the scene with the sceneData. It accepts the | `elements` | [`ImportedDataState["elements"]`](https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/data/types.ts#L38) | The `elements` to be updated in the scene | | `appState` | [`ImportedDataState["appState"]`](https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/data/types.ts#L39) | The `appState` to be updated in the scene. | | `collaborators` | MapCollaborator> | The list of collaborators to be updated in the scene. | -| `commitToStore` | `boolean` | Implies if the change should be captured and commited to the `store`. Commited changes are emmitted and listened to by other components, such as `History` for undo / redo purposes. Defaults to `false`. | +| `captureUpdate` | [`CaptureUpdateAction`](https://github.com/excalidraw/excalidraw/blob/master/packages/excalidraw/store.ts#L40) | Controls which updates should be captured by the `Store`. Captured updates are emmitted and listened to by other components, such as `History` for undo / redo purposes. | ```jsx live function App() { @@ -105,6 +105,7 @@ function App() { appState: { viewBackgroundColor: "#edf2ff", }, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; excalidrawAPI.updateScene(sceneData); }; @@ -121,6 +122,18 @@ function App() { } ``` +#### captureUpdate + +You can use the `captureUpdate` to influence undo / redo behaviour. + +> **NOTE**: Some updates are not observed by the store / history - i.e. updates to `collaborators` object or parts of `AppState` which are not observed (not `ObservedAppState`). Such updates will never make it to the undo / redo stacks, regardless of the passed `captureUpdate` value. + +| | `captureUpdate` value | Notes | +| --- | --- | --- | +| _Immediately undoable_ | `CaptureUpdateAction.IMMEDIATELY` | Use for updates which should be captured. Should be used for most of the local updates. These updates will _immediately_ make it to the local undo / redo stacks. | +| _Eventually undoable_ | `CaptureUpdateAction.EVENTUALLY` | Use for updates which should not be captured immediately - likely exceptions which are part of some async multi-step process. Otherwise, all such updates would end up being captured with the next `CaptureUpdateAction.IMMEDIATELY` - triggered either by the next `updateScene` or internally by the editor. These updates will _eventually_ make it to the local undo / redo stacks. | +| _Never undoable_ | `CaptureUpdateAction.NEVER` | Use for updates which should never be recorded, such as remote updates or scene initialization. These updates will _never_ make it to the local undo / redo stacks. | + ### updateLibrary
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx
index 3f2546483d..2b4df2ccfd 100644
--- a/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx
+++ b/dev-docs/docs/@excalidraw/excalidraw/api/utils/restore.mdx
@@ -31,7 +31,7 @@ You can pass `null` / `undefined` if not applicable.
 restoreElements(
   elements: ImportedDataState["elements"],
  localElements: ExcalidrawElement[] | null | undefined): ExcalidrawElement[],
  - opts: { refreshDimensions?: boolean, repairBindings?: boolean }
+ opts: { refreshDimensions?: boolean, repairBindings?: boolean, normalizeIndices?: boolean }
)
@@ -51,8 +51,9 @@ The extra optional parameter to configure restored elements. It has the followin | Prop | Type | Description| | --- | --- | ------| -| `refreshDimensions` | `boolean` | Indicates whether we should also `recalculate` text element dimensions. Since this is a potentially costly operation, you may want to disable it if you restore elements in tight loops, such as during collaboration. | -| `repairBindings` |`boolean` | Indicates whether the `bindings` for the elements should be repaired. This is to make sure there are no containers with non existent bound text element id and no bound text elements with non existent container id. | +| `refreshDimensions` | `boolean` | Indicates whether we should also _recalculate_ text element dimensions. Since this is a potentially costly operation, you may want to disable it if you restore elements in tight loops, such as during collaboration. | +| `repairBindings` |`boolean` | Indicates whether the _bindings_ for the elements should be repaired. This is to make sure there are no containers with non existent bound text element id and no bound text elements with non existent container id. | +| `normalizeIndices` |`boolean` | Indicates whether _fractional indices_ for the elements should be normalized. This is to prevent possible issues caused by using stale (too old, too long) indices. | **_How to use_** @@ -73,7 +74,7 @@ restore( data: ImportedDataState,
  localAppState: Partial<AppState> | null | undefined,
  localElements: ExcalidrawElement[] | null | undefined
): DataState
- opts: { refreshDimensions?: boolean, repairBindings?: boolean }
+ opts: { refreshDimensions?: boolean, repairBindings?: boolean, normalizeIndices?: boolean }
) diff --git a/dev-docs/docs/@excalidraw/excalidraw/development.mdx b/dev-docs/docs/@excalidraw/excalidraw/development.mdx index 3c405a7d90..52ec484aaf 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/development.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/development.mdx @@ -13,18 +13,18 @@ To start the example app using the `@excalidraw/excalidraw` package, follow the 1. Install the dependencies ```bash - cd packages/excalidraw && yarn + yarn ``` 2. Start the example app ```bash - yarn start + yarn start:example ``` [http://localhost:3001](http://localhost:3001) will open in your default browser. - - The example is same as the [codesandbox example](https://ehlz3.csb.app/) + + This is the same example as the [CodeSandbox](https://codesandbox.io/p/sandbox/github/excalidraw/excalidraw/tree/mrazator/release-v18/examples/with-script-in-browser) example. ## Releasing diff --git a/dev-docs/docs/@excalidraw/excalidraw/faq.mdx b/dev-docs/docs/@excalidraw/excalidraw/faq.mdx index e9c6a81d1b..aea9ce7881 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/faq.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/faq.mdx @@ -17,11 +17,9 @@ We strongly recommend turning it off. You can follow the steps below on how to d
2. Once opened, look for **Aggressively Block Fingerprinting** - ![Aggressive block fingerprinting](../../assets/aggressive-block-fingerprint.png) 3. Switch to **Block Fingerprinting** - ![Block filtering](../../assets/block-fingerprint.png) 4. Thats all. All text elements should be fixed now 🎉 diff --git a/dev-docs/docs/@excalidraw/excalidraw/installation.mdx b/dev-docs/docs/@excalidraw/excalidraw/installation.mdx index d8ddd59c3f..2ff6c2d2d1 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/installation.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/installation.mdx @@ -1,16 +1,12 @@ # Installation -**Excalidraw** is published to npm as a component you can directly embed in your projects. +**Excalidraw** is exported as a component to be directly embedded in your project. -Using `npm`: +Use `npm` or `yarn` to install the package. ```bash npm install react react-dom @excalidraw/excalidraw -``` - -or `yarn`: - -```bash +# or yarn add react react-dom @excalidraw/excalidraw ``` @@ -20,24 +16,40 @@ yarn add react react-dom @excalidraw/excalidraw ::: -### Static assets +### Self-hosting fonts -Excalidraw depends on assets such as localization files (if you opt to use them), fonts, and others. +By default, Excalidraw will try to download all the used fonts from the [CDN](https://esm.run/@excalidraw/excalidraw/dist/prod). -By default these assets are loaded from a public CDN [`https://unpkg.com/@excalidraw/excalidraw/dist/`](https://unpkg.com/@excalidraw/excalidraw/dist), so you don't need to do anything on your end. - -However, if you want to host these files yourself, you can find them in your `node_modules/@excalidraw/excalidraw/dist` directory, in folders `excalidraw-assets` (for production) and `excalidraw-assets-dev` (for development). - -Copy these folders to your static assets directory, and add a `window.EXCALIDRAW_ASSET_PATH` variable in your `index.html` or `index.js` entry file pointing to your public assets path (relative). For example, if you serve your assets from the root of your hostname, you would do: +For self-hosting purposes, you'll have to copy the content of the folder `node_modules/@excalidraw/excalidraw/dist/prod/fonts` to the path where your assets should be served from (i.e. `public/` directory in your project). In that case, you should also set `window.EXCALIDRAW_ASSET_PATH` to the very same path, i.e. `/` in case it's in the root: ```js window.EXCALIDRAW_ASSET_PATH = "/"; ``` +or, if you serve your assets from the root of your CDN, you would do: + +```js +// Vanilla + + + +``` + +or, if you prefer the path to be dynamicly set based on the `location.origin`, you could do the following: + +```jsx +// Next.js + +``` + ### Dimensions of Excalidraw Excalidraw takes _100%_ of `width` and `height` of the containing block so make sure the container in which you render Excalidraw has non zero dimensions. -### Demo +## Demo -[Try here](https://codesandbox.io/s/excalidraw-ehlz3). +Go to [CodeSandbox](https://codesandbox.io/p/sandbox/github/excalidraw/excalidraw/tree/mrazator/release-v18/examples/with-script-in-browser) example. diff --git a/dev-docs/docs/@excalidraw/excalidraw/integration.mdx b/dev-docs/docs/@excalidraw/excalidraw/integration.mdx index bb2cf597ce..62bbbcca5c 100644 --- a/dev-docs/docs/@excalidraw/excalidraw/integration.mdx +++ b/dev-docs/docs/@excalidraw/excalidraw/integration.mdx @@ -128,11 +128,10 @@ If you are using `pages router` then importing the wrapper dynamically would wor +{/* Link should be updated to point to the latest! */} +Here is a [source code](https://github.com/excalidraw/excalidraw/tree/master/examples/with-nextjs) for the example with app and pages router. You you can try it out [here](https://excalidraw-package-example-with-nextjs.vercel.app/). -Here is a [source code](https://github.com/excalidraw/excalidraw/tree/master/examples/excalidraw/with-nextjs) for the example with app and pages router. You you can try it out [here](https://excalidraw-package-example-with-nextjs-gh6smrdnq-excalidraw.vercel.app/). - - -The `types` are available at `@excalidraw/excalidraw/types`, you can view [example for typescript](https://codesandbox.io/s/excalidraw-types-9h2dm) +The `types` are available at `@excalidraw/excalidraw/types`, check [CodeSandbox](https://codesandbox.io/p/sandbox/github/excalidraw/excalidraw/tree/mrazator/release-v18/examples/with-script-in-browser) example for details. ### Preact @@ -157,27 +156,9 @@ Since Vite removes env variables by default, you can update the vite config to e ## Browser -To use it in a browser directly: +To use it Excalidraw in a browser directly, use the following setup :point_down: -For development use :point_down: - -```js - -``` - -For production use :point_down: - -```js - -``` - -You will need to make sure `react`, `react-dom` is available as shown in the below example. For prod please use the production versions of `react`, `react-dom`. +> **Note**: We rely on import maps to de-duplicate `react`, `react-dom` and `react/jsx-runtime` versions. import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem"; @@ -191,13 +172,23 @@ import TabItem from "@theme/TabItem"; Excalidraw in browser - - - - + + + + @@ -214,6 +205,14 @@ import TabItem from "@theme/TabItem"; ```js showLineNumbers +// See https://www.npmjs.com/package/@excalidraw/excalidraw documentation. +import * as ExcalidrawLib from 'https://esm.sh/@excalidraw/excalidraw@0.18.0-rc.1/dist/dev/index.js?external=react,react-dom'; +import React from "https://esm.sh/react@19.0.0"; +import ReactDOM from "https://esm.sh/react-dom@19.0.0" + +window.ExcalidrawLib = ExcalidrawLib; +console.log("Excalidraw library", ExcalidrawLib); + const App = () => { return React.createElement( React.Fragment, @@ -236,4 +235,4 @@ root.render(React.createElement(App)); -You can try it out [here](https://codesandbox.io/p/sandbox/excalidraw-in-browser-tlqom?file=%2Findex.html%3A1%2C10). +You can try it out [here](https://jsfiddle.net/64y130L8/1/). diff --git a/dev-docs/docusaurus.config.js b/dev-docs/docusaurus.config.js index 7899df164a..4e8d75800a 100644 --- a/dev-docs/docusaurus.config.js +++ b/dev-docs/docusaurus.config.js @@ -149,6 +149,29 @@ const config = { systemvars: true, }, ], + function () { + return { + name: "disable-fully-specified-error", + configureWebpack() { + return { + module: { + rules: [ + { + test: /\.m?js$/, + resolve: { + fullySpecified: false, + }, + }, + ], + }, + optimization: { + // disable terser minification + minimize: false, + }, + }; + }, + }; + }, ], }; diff --git a/dev-docs/package.json b/dev-docs/package.json index da2e5e48ac..8cbd6d2320 100644 --- a/dev-docs/package.json +++ b/dev-docs/package.json @@ -18,13 +18,13 @@ "@docusaurus/core": "2.2.0", "@docusaurus/preset-classic": "2.2.0", "@docusaurus/theme-live-codeblock": "2.2.0", - "@excalidraw/excalidraw": "0.17.6", + "@excalidraw/excalidraw": "0.18.0-rc.5", "@mdx-js/react": "^1.6.22", "clsx": "^1.2.1", "docusaurus-plugin-sass": "0.2.3", "prism-react-renderer": "^1.3.5", - "react": "19.0.0", - "react-dom": "19.0.0", + "react": "18.2.0", + "react-dom": "18.2.0", "sass": "1.57.1" }, "devDependencies": { diff --git a/dev-docs/src/theme/ReactLiveScope/index.js b/dev-docs/src/theme/ReactLiveScope/index.js index 7464db22f5..4fa715f466 100644 --- a/dev-docs/src/theme/ReactLiveScope/index.js +++ b/dev-docs/src/theme/ReactLiveScope/index.js @@ -3,11 +3,18 @@ import ExecutionEnvironment from "@docusaurus/ExecutionEnvironment"; import initialData from "@site/src/initialData"; import { useColorMode } from "@docusaurus/theme-common"; +import "@excalidraw/excalidraw/index.css"; + let ExcalidrawComp = {}; if (ExecutionEnvironment.canUseDOM) { ExcalidrawComp = require("@excalidraw/excalidraw"); } const Excalidraw = React.forwardRef((props, ref) => { + if (!window.EXCALIDRAW_ASSET_PATH) { + window.EXCALIDRAW_ASSET_PATH = + "https://esm.sh/@excalidraw/excalidraw@0.18.0-rc.5/dist/prod/"; + } + const { colorMode } = useColorMode(); return ; }); diff --git a/dev-docs/yarn.lock b/dev-docs/yarn.lock index 5b684e32b8..6e54d978b6 100644 --- a/dev-docs/yarn.lock +++ b/dev-docs/yarn.lock @@ -1207,6 +1207,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.13.10": + version "7.26.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.9.tgz#aa4c6facc65b9cb3f87d75125ffd47781b475433" + integrity sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/template@^7.12.7", "@babel/template@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.6.tgz#1283f4993e00b929d6e2d3c72fdc9168a2977a31" @@ -1258,6 +1265,16 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@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== + +"@braintree/sanitize-url@^6.0.1": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" + integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== + "@colors/colors@1.5.0": version "1.5.0" resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" @@ -1718,10 +1735,86 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@excalidraw/excalidraw@0.17.6": - version "0.17.6" - resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.17.6.tgz#5fd208ce69d33ca712d1804b50d7d06d5c46ac4d" - integrity sha512-fyCl+zG/Z5yhHDh5Fq2ZGmphcrALmuOdtITm8gN4d8w4ntnaopTXcTfnAAaU3VleDC6LhTkoLOTG6P5kgREiIg== +"@excalidraw/excalidraw@0.18.0-rc.5": + version "0.18.0-rc.5" + resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.18.0-rc.5.tgz#c55598e01808693702251322e59bf9dba931b6e0" + integrity sha512-f6Z6cWlx+FWl1nxCu5F6OdKm9ooV/FPjndjIfFhGLVyERKATXhuNwZUHWwqsEW+SIGmiPG2515NG9KIOhjGd5g== + dependencies: + "@braintree/sanitize-url" "6.0.2" + "@excalidraw/laser-pointer" "1.3.1" + "@excalidraw/mermaid-to-excalidraw" "1.1.2" + "@excalidraw/random-username" "1.1.0" + "@radix-ui/react-popover" "1.0.3" + "@radix-ui/react-tabs" "1.0.2" + browser-fs-access "0.29.1" + canvas-roundrect-polyfill "0.0.1" + clsx "1.1.1" + cross-env "7.0.3" + es6-promise-pool "2.5.0" + fractional-indexing "3.2.0" + fuzzy "0.1.3" + image-blob-reduce "3.0.1" + jotai "2.11.0" + jotai-scope "0.7.2" + lodash.debounce "4.0.8" + lodash.throttle "4.1.1" + nanoid "3.3.3" + open-color "1.9.1" + pako "2.0.3" + perfect-freehand "1.2.0" + pica "7.1.1" + png-chunk-text "1.0.0" + png-chunks-encode "1.0.0" + png-chunks-extract "1.0.0" + points-on-curve "1.0.1" + pwacompat "2.0.17" + roughjs "4.6.4" + sass "1.51.0" + tunnel-rat "0.1.2" + +"@excalidraw/laser-pointer@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@excalidraw/laser-pointer/-/laser-pointer-1.3.1.tgz#7c40836598e8e6ad91f01057883ed8b88fb9266c" + integrity sha512-psA1z1N2qeAfsORdXc9JmD2y4CmDwmuMRxnNdJHZexIcPwaNEyIpNcelw+QkL9rz9tosaN9krXuKaRqYpRAR6g== + +"@excalidraw/markdown-to-text@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@excalidraw/markdown-to-text/-/markdown-to-text-0.1.2.tgz#1703705e7da608cf478f17bfe96fb295f55a23eb" + integrity sha512-1nDXBNAojfi3oSFwJswKREkFm5wrSjqay81QlyRv2pkITG/XYB5v+oChENVBQLcxQwX4IUATWvXM5BcaNhPiIg== + +"@excalidraw/mermaid-to-excalidraw@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@excalidraw/mermaid-to-excalidraw/-/mermaid-to-excalidraw-1.1.2.tgz#74d9507971976a7d3d960a1b2e8fb49a9f1f0d22" + integrity sha512-hAFv/TTIsOdoy0dL5v+oBd297SQ+Z88gZ5u99fCIFuEMHfQuPgLhU/ztKhFSTs7fISwVo6fizny/5oQRR3d4tQ== + dependencies: + "@excalidraw/markdown-to-text" "0.1.2" + mermaid "10.9.3" + nanoid "4.0.2" + +"@excalidraw/random-username@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@excalidraw/random-username/-/random-username-1.1.0.tgz#6f388d6a9708cf655b8c9c6aa3fa569ee71ecf0f" + integrity sha512-nULYsQxkWHnbmHvcs+efMkJ4/9TtvNyFeLyHdeGxW0zHs6P+jYVqcRff9A6Vq9w9JXeDRnRh2VKvTtS19GW2qA== + +"@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" "@hapi/hoek@^9.0.0": version "9.3.0" @@ -1882,6 +1975,246 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== +"@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" + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -2064,6 +2397,30 @@ dependencies: "@types/node" "*" +"@types/d3-scale-chromatic@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#dc6d4f9a98376f18ea50bad6c39537f1b5463c39" + integrity sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ== + +"@types/d3-scale@^4.0.3": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-4.0.9.tgz#57a2f707242e6fe1de81ad7bfcccaaf606179afb" + integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== + dependencies: + "@types/d3-time" "*" + +"@types/d3-time@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-3.0.4.tgz#8472feecd639691450dd8000eb33edd444e1323f" + integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== + +"@types/debug@^4.0.0": + version "4.1.12" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.12.tgz#a155f21690871953410df4b6b6f53187f0500917" + integrity sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ== + dependencies: + "@types/ms" "*" + "@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" @@ -2150,6 +2507,11 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== +"@types/ms@*": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@types/ms/-/ms-2.1.0.tgz#052aa67a48eccc4309d7f0191b7e41434b90bb78" + integrity sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA== + "@types/node@*": version "18.6.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-18.6.1.tgz#828e4785ccca13f44e2fb6852ae0ef11e3e20ba5" @@ -2590,6 +2952,13 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +aria-hidden@^1.1.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522" + integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A== + dependencies: + tslib "^2.0.0" + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -2803,6 +3172,11 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" +browser-fs-access@0.29.1: + version "0.29.1" + resolved "https://registry.yarnpkg.com/browser-fs-access/-/browser-fs-access-0.29.1.tgz#8a9794c73cf86b9aec74201829999c597128379c" + integrity sha512-LSvVX5e21LRrXqVMhqtAwj5xPgDb+fXAIH80NsnCQ9xuZPs2xWsOREi24RKgZa1XOiQRbcmVrv87+ulOKsgjxw== + browserslist@^4.0.0, browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.18.1, browserslist@^4.20.2, browserslist@^4.20.3, browserslist@^4.21.2: version "4.21.2" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.2.tgz#59a400757465535954946a400b841ed37e2b4ecf" @@ -2899,6 +3273,11 @@ caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001335, caniuse-lite@^1.0.30001366: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001370.tgz#0a30d4f20d38b9e108cc5ae7cc62df9fe66cd5ba" integrity sha512-3PDmaP56wz/qz7G508xzjx8C+MC2qEm4SYhSEzC9IBROo+dGXFWRuaXkWti0A9tuI00g+toiriVqxtWMgl350g== +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== + ccount@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/ccount/-/ccount-1.1.0.tgz#246687debb6014735131be8abab2d93898f8d043" @@ -2931,6 +3310,11 @@ character-entities@^1.0.0: resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-1.2.4.tgz#e12c3939b7eaf4e5b15e7ad4c5e28e1d48c5b16b" integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== +character-entities@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/character-entities/-/character-entities-2.0.2.tgz#2d09c2e72cd9523076ccb21157dff66ad43fcc22" + integrity sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ== + character-reference-invalid@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" @@ -3033,6 +3417,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +clsx@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + clsx@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.2.1.tgz#0ddc4a20a549b59c93a4116bb26f5294ca17dc12" @@ -3087,6 +3476,11 @@ comma-separated-tokens@^1.0.0: resolved "https://registry.yarnpkg.com/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz#632b80b6117867a158f1080ad498b2fbe7e3f5ea" integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== +commander@7, 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@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3097,11 +3491,6 @@ commander@^5.1.0: resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== -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: version "8.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" @@ -3248,6 +3637,13 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== +cose-base@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-1.0.3.tgz#650334b41b869578a543358b80cda7e0abe0a60a" + integrity sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg== + dependencies: + layout-base "^1.0.0" + cosmiconfig@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-6.0.0.tgz#da4fee853c52f6b1e6935f41c1a2fc50bd4a9982" @@ -3270,6 +3666,18 @@ cosmiconfig@^7.0.0, cosmiconfig@^7.0.1: path-type "^4.0.0" yaml "^1.10.0" +crc-32@^0.3.0: + version "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-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-fetch@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.1.5.tgz#e1389f44d9e7ba767907f7af8454787952ab534f" @@ -3277,6 +3685,15 @@ cross-fetch@^3.1.5: dependencies: node-fetch "2.6.7" +cross-spawn@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.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" @@ -3435,6 +3852,302 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.0.tgz#4ddcac3718d787cf9df0d1b7d15033925c8f29f2" integrity sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA== +cytoscape-cose-bilkent@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz#762fa121df9930ffeb51a495d87917c570ac209b" + integrity sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ== + dependencies: + cose-base "^1.0.0" + +cytoscape@^3.28.1: + version "3.31.1" + resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.31.1.tgz#29b12cac715fbb2aacc50cdf5cf1467aadde9c00" + integrity sha512-Hx5Mtb1+hnmAKaZZ/7zL1Y5HTFYOjdDswZy/jD+1WINRU8KVi1B7+vlHdsTwY+VCFucTreoyu1RDzQJ9u0d2Hw== + +"d3-array@1 - 2": + version "2.12.1" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81" + integrity sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ== + dependencies: + internmap "^1.0.0" + +"d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +d3-axis@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-axis/-/d3-axis-3.0.0.tgz#c42a4a13e8131d637b745fc2973824cfeaf93322" + integrity sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw== + +d3-brush@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-brush/-/d3-brush-3.0.0.tgz#6f767c4ed8dcb79de7ede3e1c0f89e63ef64d31c" + integrity sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "3" + d3-transition "3" + +d3-chord@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-chord/-/d3-chord-3.0.1.tgz#d156d61f485fce8327e6abf339cb41d8cbba6966" + integrity sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g== + dependencies: + d3-path "1 - 3" + +"d3-color@1 - 3", d3-color@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +d3-contour@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-contour/-/d3-contour-4.0.2.tgz#bb92063bc8c5663acb2422f99c73cbb6c6ae3bcc" + integrity sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA== + dependencies: + d3-array "^3.2.0" + +d3-delaunay@6: + version "6.0.4" + resolved "https://registry.yarnpkg.com/d3-delaunay/-/d3-delaunay-6.0.4.tgz#98169038733a0a5babbeda55054f795bb9e4a58b" + integrity sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A== + dependencies: + delaunator "5" + +"d3-dispatch@1 - 3", d3-dispatch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-3.0.1.tgz#5fc75284e9c2375c36c839411a0cf550cbfc4d5e" + integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg== + +"d3-drag@2 - 3", d3-drag@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-3.0.0.tgz#994aae9cd23c719f53b5e10e3a0a6108c69607ba" + integrity sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg== + dependencies: + d3-dispatch "1 - 3" + d3-selection "3" + +"d3-dsv@1 - 3", d3-dsv@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-dsv/-/d3-dsv-3.0.1.tgz#c63af978f4d6a0d084a52a673922be2160789b73" + integrity sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q== + dependencies: + commander "7" + iconv-lite "0.6" + rw "1" + +"d3-ease@1 - 3", d3-ease@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-ease/-/d3-ease-3.0.1.tgz#9658ac38a2140d59d346160f1f6c30fda0bd12f4" + integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== + +d3-fetch@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-fetch/-/d3-fetch-3.0.1.tgz#83141bff9856a0edb5e38de89cdcfe63d0a60a22" + integrity sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw== + dependencies: + d3-dsv "1 - 3" + +d3-force@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-force/-/d3-force-3.0.0.tgz#3e2ba1a61e70888fe3d9194e30d6d14eece155c4" + integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg== + dependencies: + d3-dispatch "1 - 3" + d3-quadtree "1 - 3" + d3-timer "1 - 3" + +"d3-format@1 - 3", d3-format@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + +d3-geo@3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d" + integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q== + dependencies: + d3-array "2.5.0 - 3" + +d3-hierarchy@3: + version "3.1.2" + resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" + integrity sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA== + +"d3-interpolate@1 - 3", "d3-interpolate@1.2.0 - 3", d3-interpolate@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-path@1: + version "1.0.9" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf" + integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg== + +"d3-path@1 - 3", d3-path@3, d3-path@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-3.1.0.tgz#22df939032fb5a71ae8b1800d61ddb7851c42526" + integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== + +d3-polygon@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-polygon/-/d3-polygon-3.0.1.tgz#0b45d3dd1c48a29c8e057e6135693ec80bf16398" + integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg== + +"d3-quadtree@1 - 3", d3-quadtree@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-quadtree/-/d3-quadtree-3.0.1.tgz#6dca3e8be2b393c9a9d514dabbd80a92deef1a4f" + integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw== + +d3-random@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-random/-/d3-random-3.0.1.tgz#d4926378d333d9c0bfd1e6fa0194d30aebaa20f4" + integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ== + +d3-sankey@^0.12.3: + version "0.12.3" + resolved "https://registry.yarnpkg.com/d3-sankey/-/d3-sankey-0.12.3.tgz#b3c268627bd72e5d80336e8de6acbfec9d15d01d" + integrity sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ== + dependencies: + d3-array "1 - 2" + d3-shape "^1.2.0" + +d3-scale-chromatic@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314" + integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ== + dependencies: + d3-color "1 - 3" + d3-interpolate "1 - 3" + +d3-scale@4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-selection@2 - 3", d3-selection@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-3.0.0.tgz#c25338207efa72cc5b9bd1458a1a41901f1e1b31" + integrity sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ== + +d3-shape@3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-3.2.0.tgz#a1a839cbd9ba45f28674c69d7f855bcf91dfc6a5" + integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== + dependencies: + d3-path "^3.1.0" + +d3-shape@^1.2.0: + version "1.3.7" + resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7" + integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw== + dependencies: + d3-path "1" + +"d3-time-format@2 - 4", d3-time-format@4: + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3", d3-time@3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + +"d3-timer@1 - 3", d3-timer@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-3.0.1.tgz#6284d2a2708285b1abb7e201eda4380af35e63b0" + integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== + +"d3-transition@2 - 3", d3-transition@3: + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-transition/-/d3-transition-3.0.1.tgz#6869fdde1448868077fdd5989200cb61b2a1645f" + integrity sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w== + dependencies: + d3-color "1 - 3" + d3-dispatch "1 - 3" + d3-ease "1 - 3" + d3-interpolate "1 - 3" + d3-timer "1 - 3" + +d3-zoom@3: + version "3.0.0" + resolved "https://registry.yarnpkg.com/d3-zoom/-/d3-zoom-3.0.0.tgz#d13f4165c73217ffeaa54295cd6969b3e7aee8f3" + integrity sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw== + dependencies: + d3-dispatch "1 - 3" + d3-drag "2 - 3" + d3-interpolate "1 - 3" + d3-selection "2 - 3" + d3-transition "2 - 3" + +d3@^7.4.0, d3@^7.8.2: + version "7.9.0" + resolved "https://registry.yarnpkg.com/d3/-/d3-7.9.0.tgz#579e7acb3d749caf8860bd1741ae8d371070cd5d" + integrity sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA== + dependencies: + d3-array "3" + d3-axis "3" + d3-brush "3" + d3-chord "3" + d3-color "3" + d3-contour "4" + d3-delaunay "6" + d3-dispatch "3" + d3-drag "3" + d3-dsv "3" + d3-ease "3" + d3-fetch "3" + d3-force "3" + d3-format "3" + d3-geo "3" + d3-hierarchy "3" + d3-interpolate "3" + d3-path "3" + d3-polygon "3" + d3-quadtree "3" + d3-random "3" + d3-scale "4" + d3-scale-chromatic "3" + d3-selection "3" + d3-shape "3" + d3-time "3" + d3-time-format "4" + d3-timer "3" + d3-transition "3" + d3-zoom "3" + +dagre-d3-es@7.0.10: + version "7.0.10" + resolved "https://registry.yarnpkg.com/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz#19800d4be674379a3cd8c86a8216a2ac6827cadc" + integrity sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A== + dependencies: + d3 "^7.8.2" + lodash-es "^4.17.21" + +dayjs@^1.11.7: + version "1.11.13" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.13.tgz#92430b0139055c3ebb60150aa13e860a4b5a366c" + integrity sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg== + debug@2.6.9, debug@^2.6.0: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3442,6 +4155,13 @@ debug@2.6.9, debug@^2.6.0: dependencies: ms "2.0.0" +debug@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + debug@^4.1.0, debug@^4.1.1: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" @@ -3449,6 +4169,13 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "2.1.2" +decode-named-character-reference@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz#daabac9690874c394c81e4162a0304b35d824f0e" + integrity sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg== + dependencies: + character-entities "^2.0.0" + decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -3505,6 +4232,13 @@ del@^6.1.1: rimraf "^3.0.2" slash "^3.0.0" +delaunator@5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/delaunator/-/delaunator-5.0.1.tgz#39032b08053923e924d6094fe2cde1a99cc51278" + integrity sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw== + dependencies: + robust-predicates "^3.0.2" + depd@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" @@ -3515,6 +4249,11 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== +dequal@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" + integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== + destroy@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" @@ -3527,6 +4266,11 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" +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== + detect-node@^2.0.4: version "2.1.0" resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" @@ -3548,6 +4292,11 @@ detect-port@^1.3.0: address "^1.0.1" debug "^2.6.0" +diff@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3633,6 +4382,11 @@ domhandler@^5.0.1, domhandler@^5.0.2, domhandler@^5.0.3: dependencies: domelementtype "^2.3.0" +"dompurify@^3.0.5 <3.1.7": + version "3.1.6" + resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.6.tgz#43c714a94c6a7b8801850f82e756685300a027e2" + integrity sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ== + domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -3710,6 +4464,11 @@ electron-to-chromium@^1.4.188: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.199.tgz#e0384fde79fdda89880e8be58196a9153e04db3b" integrity sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg== +elkjs@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/elkjs/-/elkjs-0.9.3.tgz#16711f8ceb09f1b12b99e971b138a8384a529161" + integrity sha512-f/ZeWvW/BCXbhGEf1Ujp29EASo/lk1FDnETgNKwJrsVvGZhUWCZyg3xLJjAsxfOmt8KjswHmI5EwCQcPMpOYhQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -3772,6 +4531,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== +es6-promise-pool@2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz#147c612b36b47f105027f9d2bf54a598a99d9ccb" + integrity sha512-VHErXfzR/6r/+yyzPKeBvO0lgjfC5cbDCQWjWwMZWSb6YU39TGIl51OUmCfWCq4ylMdJSB8zkz2vIuIeIxXApA== + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -4112,6 +4876,11 @@ fraction.js@^4.2.0: resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== +fractional-indexing@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/fractional-indexing/-/fractional-indexing-3.2.0.tgz#1193e63d54ff4e0cbe0c79a9ed6cfbab25d91628" + integrity sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ== + fresh@0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" @@ -4156,6 +4925,11 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +fuzzy@0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/fuzzy/-/fuzzy-0.1.3.tgz#4c76ec2ff0ac1a36a9dccf9a00df8623078d4ed8" + integrity sha512-/gZffu4ykarLrCiP3Ygsa86UAo1E5vEVlvTrpkKywXSbP9Xhln3oSp9QSV57gEq3JFFpGJ4GZ+5zdEp3FcUh4w== + gensync@^1.0.0-beta.1, gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" @@ -4170,6 +4944,11 @@ get-intrinsic@^1.0.2, get-intrinsic@^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" @@ -4281,6 +5060,11 @@ globby@^13.1.1: merge2 "^1.4.1" slash "^4.0.0" +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA== + got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -4320,6 +5104,11 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" +hachure-fill@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" + integrity sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg== + handle-thing@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" @@ -4588,6 +5377,13 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@0.6: + 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" @@ -4598,6 +5394,13 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +image-blob-reduce@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/image-blob-reduce/-/image-blob-reduce-3.0.1.tgz#812be7655a552031635799ae64e846b106f7a489" + integrity sha512-/VmmWgIryG/wcn4TVrV7cC4mlfUC/oyiKIfSg5eVM3Ten/c1c34RJhMYKCWTnoSMHSqXLt3tsrBR4Q2HInvN+Q== + dependencies: + pica "^7.1.0" + image-size@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" @@ -4676,6 +5479,16 @@ inline-style-parser@0.1.1: resolved "https://registry.yarnpkg.com/inline-style-parser/-/inline-style-parser-0.1.1.tgz#ec8a3b429274e9c0a1f1c4ffa9453a7fef72cea1" integrity sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q== +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + +internmap@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" + integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== + interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -4916,6 +5729,16 @@ joi@^17.6.0: "@sideway/formula" "^3.0.0" "@sideway/pinpoint" "^2.0.0" +jotai-scope@0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/jotai-scope/-/jotai-scope-0.7.2.tgz#3e9ec5b743bd9f36b08b32cf5151786049bfcce7" + integrity sha512-Gwed97f3dDObrO43++2lRcgOqw4O2sdr4JCjP/7eHK1oPACDJ7xKHGScpJX9XaflU+KBHXF+VhwECnzcaQiShg== + +jotai@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/jotai/-/jotai-2.11.0.tgz#923f8351e0b2d721036af892c0ae25625049d120" + integrity sha512-zKfoBBD1uDw3rljwHkt0fWuja1B76R7CjznuBO+mSX6jpsO1EBeWNRKpeaQho9yPI/pvCv4recGfgOXGxwPZvQ== + "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -4980,6 +5803,13 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +katex@^0.16.9: + version "0.16.21" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.21.tgz#8f63c659e931b210139691f2cc7bb35166b792a3" + integrity sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A== + dependencies: + commander "^8.3.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -4987,6 +5817,11 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +khroma@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" + integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== + kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" @@ -4997,6 +5832,11 @@ kleur@^3.0.3: resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== +kleur@^4.0.3: + version "4.1.5" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" + integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== + klona@^2.0.4, klona@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.5.tgz#d166574d90076395d9963aa7a928fabb8d76afbc" @@ -5009,6 +5849,11 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" +layout-base@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2" + integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg== + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -5065,12 +5910,17 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + lodash.curry@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== -lodash.debounce@^4.0.8: +lodash.debounce@4.0.8, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== @@ -5085,6 +5935,11 @@ lodash.memoize@^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.throttle@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -5159,6 +6014,24 @@ mdast-util-definitions@^4.0.0: dependencies: unist-util-visit "^2.0.0" +mdast-util-from-markdown@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz#9421a5a247f10d31d2faed2a30df5ec89ceafcf0" + integrity sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww== + dependencies: + "@types/mdast" "^3.0.0" + "@types/unist" "^2.0.0" + decode-named-character-reference "^1.0.0" + mdast-util-to-string "^3.1.0" + micromark "^3.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-decode-string "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + unist-util-stringify-position "^3.0.0" + uvu "^0.5.0" + mdast-util-to-hast@10.0.1: version "10.0.1" resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.0.1.tgz#0cfc82089494c52d46eb0e3edb7a4eb2aea021eb" @@ -5178,6 +6051,13 @@ mdast-util-to-string@^2.0.0: resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz#b8cfe6a713e1091cb5b728fc48885a4767f8b97b" integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== +mdast-util-to-string@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz#66f7bb6324756741c5f47a53557f0cbf16b6f789" + integrity sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg== + dependencies: + "@types/mdast" "^3.0.0" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -5215,11 +6095,231 @@ 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== +mermaid@10.9.3: + version "10.9.3" + resolved "https://registry.yarnpkg.com/mermaid/-/mermaid-10.9.3.tgz#90bc6f15c33dbe5d9507fed31592cc0d88fee9f7" + integrity sha512-V80X1isSEvAewIL3xhmz/rVmc27CVljcsbWxkxlWJWY/1kQa4XOABqpDl2qQLGKzpKm6WbTfUEKImBlUfFYArw== + dependencies: + "@braintree/sanitize-url" "^6.0.1" + "@types/d3-scale" "^4.0.3" + "@types/d3-scale-chromatic" "^3.0.0" + cytoscape "^3.28.1" + cytoscape-cose-bilkent "^4.1.0" + d3 "^7.4.0" + d3-sankey "^0.12.3" + dagre-d3-es "7.0.10" + dayjs "^1.11.7" + dompurify "^3.0.5 <3.1.7" + elkjs "^0.9.0" + katex "^0.16.9" + khroma "^2.0.0" + lodash-es "^4.17.21" + mdast-util-from-markdown "^1.3.0" + non-layered-tidy-tree-layout "^2.0.2" + stylis "^4.1.3" + ts-dedent "^2.2.0" + uuid "^9.0.0" + web-worker "^1.2.0" + 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== +micromark-core-commonmark@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz#1386628df59946b2d39fb2edfd10f3e8e0a75bb8" + integrity sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-factory-destination "^1.0.0" + micromark-factory-label "^1.0.0" + micromark-factory-space "^1.0.0" + micromark-factory-title "^1.0.0" + micromark-factory-whitespace "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-classify-character "^1.0.0" + micromark-util-html-tag-name "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + +micromark-factory-destination@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz#eb815957d83e6d44479b3df640f010edad667b9f" + integrity sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-label@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz#cc95d5478269085cfa2a7282b3de26eb2e2dec68" + integrity sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-factory-space@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz#c8f40b0640a0150751d3345ed885a080b0d15faf" + integrity sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-title@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz#dd0fe951d7a0ac71bdc5ee13e5d1465ad7f50ea1" + integrity sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-factory-whitespace@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz#798fb7489f4c8abafa7ca77eed6b5745853c9705" + integrity sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ== + dependencies: + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-character@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-character/-/micromark-util-character-1.2.0.tgz#4fedaa3646db249bc58caeb000eb3549a8ca5dcc" + integrity sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg== + dependencies: + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-chunked@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz#37a24d33333c8c69a74ba12a14651fd9ea8a368b" + integrity sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-classify-character@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz#6a7f8c8838e8a120c8e3c4f2ae97a2bff9190e9d" + integrity sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-combine-extensions@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz#192e2b3d6567660a85f735e54d8ea6e3952dbe84" + integrity sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-types "^1.0.0" + +micromark-util-decode-numeric-character-reference@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz#b1e6e17009b1f20bc652a521309c5f22c85eb1c6" + integrity sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-decode-string@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz#dc12b078cba7a3ff690d0203f95b5d5537f2809c" + integrity sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ== + dependencies: + decode-named-character-reference "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz#92e4f565fd4ccb19e0dcae1afab9a173bbeb19a5" + integrity sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw== + +micromark-util-html-tag-name@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz#48fd7a25826f29d2f71479d3b4e83e94829b3588" + integrity sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q== + +micromark-util-normalize-identifier@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz#7a73f824eb9f10d442b4d7f120fecb9b38ebf8b7" + integrity sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q== + dependencies: + micromark-util-symbol "^1.0.0" + +micromark-util-resolve-all@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz#4652a591ee8c8fa06714c9b54cd6c8e693671188" + integrity sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA== + dependencies: + micromark-util-types "^1.0.0" + +micromark-util-sanitize-uri@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz#613f738e4400c6eedbc53590c67b197e30d7f90d" + integrity sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A== + dependencies: + micromark-util-character "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-symbol "^1.0.0" + +micromark-util-subtokenize@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz#941c74f93a93eaf687b9054aeb94642b0e92edb1" + integrity sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A== + dependencies: + micromark-util-chunked "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.0" + uvu "^0.5.0" + +micromark-util-symbol@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz#813cd17837bdb912d069a12ebe3a44b6f7063142" + integrity sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag== + +micromark-util-types@^1.0.0, micromark-util-types@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/micromark-util-types/-/micromark-util-types-1.1.0.tgz#e6676a8cae0bb86a2171c498167971886cb7e283" + integrity sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg== + +micromark@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/micromark/-/micromark-3.2.0.tgz#1af9fef3f995ea1ea4ac9c7e2f19c48fd5c006e9" + integrity sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA== + dependencies: + "@types/debug" "^4.0.0" + debug "^4.0.0" + decode-named-character-reference "^1.0.0" + micromark-core-commonmark "^1.0.1" + micromark-factory-space "^1.0.0" + micromark-util-character "^1.0.0" + micromark-util-chunked "^1.0.0" + micromark-util-combine-extensions "^1.0.0" + micromark-util-decode-numeric-character-reference "^1.0.0" + micromark-util-encode "^1.0.0" + micromark-util-normalize-identifier "^1.0.0" + micromark-util-resolve-all "^1.0.0" + micromark-util-sanitize-uri "^1.0.0" + micromark-util-subtokenize "^1.0.0" + micromark-util-symbol "^1.0.0" + micromark-util-types "^1.0.1" + uvu "^0.5.0" + micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" @@ -5306,6 +6406,11 @@ minimist@^1.2.0, minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +mri@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" + integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== + mrmime@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-1.0.1.tgz#5f90c825fad4bdd41dc914eff5d1a8cfdaf24f27" @@ -5321,7 +6426,7 @@ 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.3, ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -5334,6 +6439,24 @@ multicast-dns@^7.2.5: 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" + integrity sha512-toRx66cAMJ+Ccz7pMIg38xSIrtnbozk0dchXezwQDMgQmbGpfxjtv68H+L00iFL8hxDaVjrmwAFSb3I6bg8Q2g== + dependencies: + glur "^1.1.2" + object-assign "^4.1.1" + +nanoid@3.3.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== + +nanoid@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-4.0.2.tgz#140b3c5003959adbebf521c170f282c5e7f9fb9e" + integrity sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw== + nanoid@^3.3.4: version "3.3.4" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" @@ -5381,6 +6504,11 @@ node-releases@^2.0.6: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== +non-layered-tidy-tree-layout@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz#57d35d13c356643fc296a55fb11ac15e74da7804" + integrity sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw== + 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" @@ -5476,6 +6604,11 @@ onetime@^5.1.2: dependencies: mimic-fn "^2.1.0" +open-color@1.9.1: + version "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" @@ -5565,6 +6698,11 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +pako@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" + integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -5640,6 +6778,11 @@ pascal-case@^3.1.2: 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" @@ -5692,6 +6835,22 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +perfect-freehand@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/perfect-freehand/-/perfect-freehand-1.2.0.tgz#706a0f854544f6175772440c51d3b0563eb3988a" + integrity sha512-h/0ikF1M3phW7CwpZ5MMvKnfpHficWoOEyr//KVNTxV4F6deRK1eYMtHyBKEAKFK0aXIEUK9oBvlF6PNXMDsAw== + +pica@7.1.1, pica@^7.1.0: + version "7.1.1" + resolved "https://registry.yarnpkg.com/pica/-/pica-7.1.1.tgz#c68b42f5cfa6cc26eaec5cfa10cc0a5299ef3b7a" + integrity sha512-WY73tMvNzXWEld2LicT9Y260L43isrZ85tPuqRyvtkljSDLmnNFQmZICt4xUJMVulmcc6L9O7jbBrtx3DOz/YQ== + dependencies: + glur "^1.1.2" + inherits "^2.0.3" + multimath "^2.0.0" + object-assign "^4.1.1" + webworkify "^1.5.0" + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -5716,6 +6875,44 @@ pkg-up@^3.1.0: dependencies: find-up "^3.0.0" +png-chunk-text@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/png-chunk-text/-/png-chunk-text-1.0.0.tgz#1c6006d8e34ba471d38e1c9c54b3f53e1085e18f" + integrity sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw== + +png-chunks-encode@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/png-chunks-encode/-/png-chunks-encode-1.0.0.tgz#d9ea5e35caeeed782658c1ab7bafa7a5edb1a878" + integrity sha512-J1jcHgbQRsIIgx5wxW9UmCymV3wwn4qCCJl6KYgEU/yHCh/L2Mwq/nMOkRPtmV79TLxRZj5w3tH69pvygFkDqA== + dependencies: + crc-32 "^0.3.0" + sliced "^1.0.1" + +png-chunks-extract@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/png-chunks-extract/-/png-chunks-extract-1.0.0.tgz#fad4a905e66652197351c65e35b92c64311e472d" + integrity sha512-ZiVwF5EJ0DNZyzAqld8BP1qyJBaGOFaq9zl579qfbkcmOwWLLO4I9L8i2O4j3HkI6/35i0nKG2n+dZplxiT89Q== + dependencies: + crc-32 "^0.3.0" + +points-on-curve@0.2.0, points-on-curve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1" + integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A== + +points-on-curve@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-1.0.1.tgz#03fcdc08e48e3bfdc7e8bd1d7ccd4d5f11e132c6" + integrity sha512-3nmX4/LIiyuwGLwuUrfhTlDeQFlAhi7lyK/zcRNGhalwapDWgAGR82bUpmn2mA03vII3fvNCG8jAONzKXwpxAg== + +points-on-path@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52" + integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g== + dependencies: + path-data-parser "0.1.0" + points-on-curve "0.2.0" + postcss-calc@^8.2.3: version "8.2.4" resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" @@ -6108,6 +7305,11 @@ pure-color@^1.2.0: resolved "https://registry.yarnpkg.com/pure-color/-/pure-color-1.3.0.tgz#1fe064fb0ac851f0de61320a8bf796836422f33e" integrity sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA== +pwacompat@2.0.17: + version "2.0.17" + resolved "https://registry.yarnpkg.com/pwacompat/-/pwacompat-2.0.17.tgz#707959ff97f239bf1fe7b260b63aeea416a15eab" + integrity sha512-6Du7IZdIy7cHiv7AhtDy4X2QRM8IAD5DII69mt5qWibC2d15ZU8DmBG1WdZKekG11cChSu4zkSUGPF9sweOl6w== + qs@6.10.3: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -6281,6 +7483,25 @@ react-loadable-ssr-addon-v5-slorber@^1.0.1: "@types/react" "*" prop-types "^15.6.2" +react-remove-scroll-bar@^2.3.3: + version "2.3.8" + resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz#99c20f908ee467b385b68a3469b4a3e750012223" + integrity sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q== + dependencies: + react-style-singleton "^2.2.2" + 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-router-config@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/react-router-config/-/react-router-config-5.1.1.tgz#0f4263d1a80c6b2dc7b9c1902c9526478194a988" @@ -6322,6 +7543,14 @@ react-simple-code-editor@^0.10.0: resolved "https://registry.yarnpkg.com/react-simple-code-editor/-/react-simple-code-editor-0.10.0.tgz#73e7ac550a928069715482aeb33ccba36efe2373" integrity sha512-bL5W5mAxSW6+cLwqqVWY47Silqgy2DKDTR4hDBrLrUqC5BXc29YVx17l2IZk5v36VcDEq1Bszu2oHm1qBwKqBA== +react-style-singleton@^2.2.1, react-style-singleton@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz#4265608be69a4d70cfe3047f2c6c88b2c3ace388" + integrity sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ== + dependencies: + get-nonce "^1.0.0" + tslib "^2.0.0" + react-textarea-autosize@^8.3.2: version "8.3.4" resolved "https://registry.yarnpkg.com/react-textarea-autosize/-/react-textarea-autosize-8.3.4.tgz#270a343de7ad350534141b02c9cb78903e553524" @@ -6410,6 +7639,11 @@ regenerator-runtime@^0.13.4: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== +regenerator-runtime@^0.14.0: + version "0.14.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" + integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== + regenerator-transform@^0.15.0: version "0.15.0" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" @@ -6615,6 +7849,21 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +robust-predicates@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/robust-predicates/-/robust-predicates-3.0.2.tgz#d5b28528c4824d20fc48df1928d41d9efa1ad771" + integrity sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg== + +roughjs@4.6.4: + version "4.6.4" + resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.6.4.tgz#b6f39b44645854a6e0a4a28b078368701eb7f939" + integrity sha512-s6EZ0BntezkFYMf/9mGn7M8XGIoaav9QQBCnJROWB3brUWQ683Q2LbRD/hq0Z3bAJ/9NVpU/5LpiTWvQMyLDhw== + dependencies: + hachure-fill "^0.5.2" + path-data-parser "^0.1.0" + points-on-curve "^0.2.0" + points-on-path "^0.2.1" + rtl-detect@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/rtl-detect/-/rtl-detect-1.0.4.tgz#40ae0ea7302a150b96bc75af7d749607392ecac6" @@ -6637,6 +7886,11 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +rw@1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" + integrity sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ== + rxjs@^7.5.4: version "7.5.6" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.6.tgz#0446577557862afd6903517ce7cae79ecb9662bc" @@ -6644,6 +7898,13 @@ rxjs@^7.5.4: dependencies: tslib "^2.1.0" +sade@^1.7.3: + version "1.8.1" + resolved "https://registry.yarnpkg.com/sade/-/sade-1.8.1.tgz#0a78e81d658d394887be57d2a409bf703a3b2701" + integrity sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A== + dependencies: + mri "^1.1.0" + 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" @@ -6654,7 +7915,7 @@ safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== -"safer-buffer@>= 2.1.2 < 3": +"safer-buffer@>= 2.1.2 < 3", "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== @@ -6670,6 +7931,15 @@ sass-loader@^10.1.1: schema-utils "^3.0.0" semver "^7.3.2" +sass@1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + sass@1.57.1: version "1.57.1" resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5" @@ -6941,6 +8211,11 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +sliced@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sliced/-/sliced-1.0.1.tgz#0b3a662b5d04c3177b1926bea82b03f837a2ef41" + integrity sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA== + sockjs@^0.3.24: version "0.3.24" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" @@ -7131,6 +8406,11 @@ stylehacks@^5.1.0: browserslist "^4.16.6" postcss-selector-parser "^6.0.4" +stylis@^4.1.3: + version "4.3.6" + resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" + integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== + supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -7273,11 +8553,28 @@ trough@^1.0.0: resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.5.tgz#b8b639cefad7d0bb2abd37d433ff8293efa5f406" integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== +ts-dedent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" + integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== + +tslib@^2.0.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== +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-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -7423,6 +8720,13 @@ unist-util-stringify-position@^2.0.0: dependencies: "@types/unist" "^2.0.2" +unist-util-stringify-position@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz#03ad3348210c2d930772d64b489580c13a7db39d" + integrity sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg== + dependencies: + "@types/unist" "^2.0.0" + unist-util-visit-parents@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" @@ -7501,6 +8805,13 @@ url-parse-lax@^3.0.0: dependencies: prepend-http "^2.0.0" +use-callback-ref@^1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz#98d9fab067075841c5b2c6852090d5d0feabe2bf" + integrity sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg== + dependencies: + tslib "^2.0.0" + use-composed-ref@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/use-composed-ref/-/use-composed-ref-1.3.0.tgz#3d8104db34b7b264030a9d916c5e94fbe280dbda" @@ -7518,6 +8829,19 @@ use-latest@^1.2.1: dependencies: use-isomorphic-layout-effect "^1.1.1" +use-sidecar@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.3.tgz#10e7fd897d130b896e2c546c63a5e8233d00efdb" + integrity sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ== + dependencies: + detect-node-es "^1.1.0" + tslib "^2.0.0" + +use-sync-external-store@^1.2.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" + integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== + 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" @@ -7543,6 +8867,21 @@ uuid@^8.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +uuid@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +uvu@^0.5.0: + version "0.5.6" + resolved "https://registry.yarnpkg.com/uvu/-/uvu-0.5.6.tgz#2754ca20bcb0bb59b64e9985e84d2e81058502df" + integrity sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA== + dependencies: + dequal "^2.0.0" + diff "^5.0.0" + kleur "^4.0.3" + sade "^1.7.3" + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -7612,6 +8951,11 @@ web-namespaces@^1.0.0: resolved "https://registry.yarnpkg.com/web-namespaces/-/web-namespaces-1.1.4.tgz#bc98a3de60dadd7faefc403d1076d529f5e030ec" integrity sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw== +web-worker@^1.2.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/web-worker/-/web-worker-1.5.0.tgz#71b2b0fbcc4293e8f0aa4f6b8a3ffebff733dcc5" + integrity sha512-RiMReJrTAiA+mBjGONMnjVDP2u3p9R1vkcGz6gDIrOMT3oGuYwX2WRMYI9ipkphSuE5XKEhydbhNEJh4NY9mlw== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -7745,6 +9089,11 @@ 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== +webworkify@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/webworkify/-/webworkify-1.5.0.tgz#734ad87a774de6ebdd546e1d3e027da5b8f4a42c" + integrity sha512-AMcUeyXAhbACL8S2hqqdqOLqvJ8ylmIbNwUIqQujRSouf4+eUFaXbG6F1Rbu+srlJMmxQWsiU7mOJi0nMBfM1g== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -7861,6 +9210,13 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +zustand@^4.3.2: + version "4.5.6" + resolved "https://registry.yarnpkg.com/zustand/-/zustand-4.5.6.tgz#6857d52af44874a79fb3408c9473f78367255c96" + integrity sha512-ibr/n1hBzLLj5Y+yUcU7dYw8p6WnIVzdJbnX+1YpaScvZVF2ziugqHs+LAmHw4lWO9c/zRj+K1ncgWDQuthEdQ== + dependencies: + use-sync-external-store "^1.2.2" + zwitch@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/zwitch/-/zwitch-1.0.5.tgz#d11d7381ffed16b742f6af7b3f223d5cd9fe9920" diff --git a/examples/excalidraw/package.json b/examples/excalidraw/package.json deleted file mode 100644 index 0d720b537d..0000000000 --- a/examples/excalidraw/package.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "name": "examples", - "version": "1.0.0", - "private": true, - "dependencies": { - "react": "19.0.0", - "react-dom": "19.0.0", - "@excalidraw/excalidraw": "*" - }, - "devDependencies": { - "typescript": "^5" - } -} diff --git a/examples/excalidraw/tsconfig.json b/examples/excalidraw/tsconfig.json deleted file mode 100644 index 41716a7dd5..0000000000 --- a/examples/excalidraw/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig" -} diff --git a/examples/excalidraw/with-script-in-browser/vite.config.mts b/examples/excalidraw/with-script-in-browser/vite.config.mts deleted file mode 100644 index e2e5e19ac0..0000000000 --- a/examples/excalidraw/with-script-in-browser/vite.config.mts +++ /dev/null @@ -1,11 +0,0 @@ -import { defineConfig } from "vite"; - -// https://vitejs.dev/config/ -export default defineConfig({ - server: { - port: 3001, - // open the browser - open: true, - }, - publicDir: "public", -}); diff --git a/examples/excalidraw/yarn.lock b/examples/excalidraw/yarn.lock deleted file mode 100644 index 1eb5842051..0000000000 --- a/examples/excalidraw/yarn.lock +++ /dev/null @@ -1,313 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@esbuild/aix-ppc64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.11.tgz#2acd20be6d4f0458bc8c784103495ff24f13b1d3" - integrity sha512-FnzU0LyE3ySQk7UntJO4+qIiQgI7KoODnZg5xzXIrFJlKd2P2gwHsHY4927xj9y5PJmJSzULiUCWmv7iWnNa7g== - -"@esbuild/android-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.11.tgz#b45d000017385c9051a4f03e17078abb935be220" - integrity sha512-aiu7K/5JnLj//KOnOfEZ0D90obUkRzDMyqd/wNAUQ34m4YUPVhRZpnqKV9uqDGxT7cToSDnIHsGooyIczu9T+Q== - -"@esbuild/android-arm@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.11.tgz#f46f55414e1c3614ac682b29977792131238164c" - integrity sha512-5OVapq0ClabvKvQ58Bws8+wkLCV+Rxg7tUVbo9xu034Nm536QTII4YzhaFriQ7rMrorfnFKUsArD2lqKbFY4vw== - -"@esbuild/android-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.11.tgz#bfc01e91740b82011ef503c48f548950824922b2" - integrity sha512-eccxjlfGw43WYoY9QgB82SgGgDbibcqyDTlk3l3C0jOVHKxrjdc9CTwDUQd0vkvYg5um0OH+GpxYvp39r+IPOg== - -"@esbuild/darwin-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz#533fb7f5a08c37121d82c66198263dcc1bed29bf" - integrity sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ== - -"@esbuild/darwin-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.11.tgz#62f3819eff7e4ddc656b7c6815a31cf9a1e7d98e" - integrity sha512-fkFUiS6IUK9WYUO/+22omwetaSNl5/A8giXvQlcinLIjVkxwTLSktbF5f/kJMftM2MJp9+fXqZ5ezS7+SALp4g== - -"@esbuild/freebsd-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.11.tgz#d478b4195aa3ca44160272dab85ef8baf4175b4a" - integrity sha512-lhoSp5K6bxKRNdXUtHoNc5HhbXVCS8V0iZmDvyWvYq9S5WSfTIHU2UGjcGt7UeS6iEYp9eeymIl5mJBn0yiuxA== - -"@esbuild/freebsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.11.tgz#7bdcc1917409178257ca6a1a27fe06e797ec18a2" - integrity sha512-JkUqn44AffGXitVI6/AbQdoYAq0TEullFdqcMY/PCUZ36xJ9ZJRtQabzMA+Vi7r78+25ZIBosLTOKnUXBSi1Kw== - -"@esbuild/linux-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.11.tgz#58ad4ff11685fcc735d7ff4ca759ab18fcfe4545" - integrity sha512-LneLg3ypEeveBSMuoa0kwMpCGmpu8XQUh+mL8XXwoYZ6Be2qBnVtcDI5azSvh7vioMDhoJFZzp9GWp9IWpYoUg== - -"@esbuild/linux-arm@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.11.tgz#ce82246d873b5534d34de1e5c1b33026f35e60e3" - integrity sha512-3CRkr9+vCV2XJbjwgzjPtO8T0SZUmRZla+UL1jw+XqHZPkPgZiyWvbDvl9rqAN8Zl7qJF0O/9ycMtjU67HN9/Q== - -"@esbuild/linux-ia32@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.11.tgz#cbae1f313209affc74b80f4390c4c35c6ab83fa4" - integrity sha512-caHy++CsD8Bgq2V5CodbJjFPEiDPq8JJmBdeyZ8GWVQMjRD0sU548nNdwPNvKjVpamYYVL40AORekgfIubwHoA== - -"@esbuild/linux-loong64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.11.tgz#5f32aead1c3ec8f4cccdb7ed08b166224d4e9121" - integrity sha512-ppZSSLVpPrwHccvC6nQVZaSHlFsvCQyjnvirnVjbKSHuE5N24Yl8F3UwYUUR1UEPaFObGD2tSvVKbvR+uT1Nrg== - -"@esbuild/linux-mips64el@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.11.tgz#38eecf1cbb8c36a616261de858b3c10d03419af9" - integrity sha512-B5x9j0OgjG+v1dF2DkH34lr+7Gmv0kzX6/V0afF41FkPMMqaQ77pH7CrhWeR22aEeHKaeZVtZ6yFwlxOKPVFyg== - -"@esbuild/linux-ppc64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.11.tgz#9c5725a94e6ec15b93195e5a6afb821628afd912" - integrity sha512-MHrZYLeCG8vXblMetWyttkdVRjQlQUb/oMgBNurVEnhj4YWOr4G5lmBfZjHYQHHN0g6yDmCAQRR8MUHldvvRDA== - -"@esbuild/linux-riscv64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.11.tgz#2dc4486d474a2a62bbe5870522a9a600e2acb916" - integrity sha512-f3DY++t94uVg141dozDu4CCUkYW+09rWtaWfnb3bqe4w5NqmZd6nPVBm+qbz7WaHZCoqXqHz5p6CM6qv3qnSSQ== - -"@esbuild/linux-s390x@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.11.tgz#4ad8567df48f7dd4c71ec5b1753b6f37561a65a8" - integrity sha512-A5xdUoyWJHMMlcSMcPGVLzYzpcY8QP1RtYzX5/bS4dvjBGVxdhuiYyFwp7z74ocV7WDc0n1harxmpq2ePOjI0Q== - -"@esbuild/linux-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.11.tgz#b7390c4d5184f203ebe7ddaedf073df82a658766" - integrity sha512-grbyMlVCvJSfxFQUndw5mCtWs5LO1gUlwP4CDi4iJBbVpZcqLVT29FxgGuBJGSzyOxotFG4LoO5X+M1350zmPA== - -"@esbuild/netbsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.11.tgz#d633c09492a1721377f3bccedb2d821b911e813d" - integrity sha512-13jvrQZJc3P230OhU8xgwUnDeuC/9egsjTkXN49b3GcS5BKvJqZn86aGM8W9pd14Kd+u7HuFBMVtrNGhh6fHEQ== - -"@esbuild/openbsd-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.11.tgz#17388c76e2f01125bf831a68c03a7ffccb65d1a2" - integrity sha512-ysyOGZuTp6SNKPE11INDUeFVVQFrhcNDVUgSQVDzqsqX38DjhPEPATpid04LCoUr2WXhQTEZ8ct/EgJCUDpyNw== - -"@esbuild/sunos-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.11.tgz#e320636f00bb9f4fdf3a80e548cb743370d41767" - integrity sha512-Hf+Sad9nVwvtxy4DXCZQqLpgmRTQqyFyhT3bZ4F2XlJCjxGmRFF0Shwn9rzhOYRB61w9VMXUkxlBy56dk9JJiQ== - -"@esbuild/win32-arm64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.11.tgz#c778b45a496e90b6fc373e2a2bb072f1441fe0ee" - integrity sha512-0P58Sbi0LctOMOQbpEOvOL44Ne0sqbS0XWHMvvrg6NE5jQ1xguCSSw9jQeUk2lfrXYsKDdOe6K+oZiwKPilYPQ== - -"@esbuild/win32-ia32@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.11.tgz#481a65fee2e5cce74ec44823e6b09ecedcc5194c" - integrity sha512-6YOrWS+sDJDmshdBIQU+Uoyh7pQKrdykdefC1avn76ss5c+RN6gut3LZA4E2cH5xUEp5/cA0+YxRaVtRAb0xBg== - -"@esbuild/win32-x64@0.19.11": - version "0.19.11" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.11.tgz#a5d300008960bb39677c46bf16f53ec70d8dee04" - integrity sha512-vfkhltrjCAb603XaFhqhAF4LGDi2M4OrCRrFusyQ+iTLQ/o60QQXxc9cZC/FFpihBI9N1Grn6SMKVJ4KP7Fuiw== - -"@rollup/rollup-android-arm-eabi@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.5.tgz#b752b6c88a14ccfcbdf3f48c577ccc3a7f0e66b9" - integrity sha512-idWaG8xeSRCfRq9KpRysDHJ/rEHBEXcHuJ82XY0yYFIWnLMjZv9vF/7DOq8djQ2n3Lk6+3qfSH8AqlmHlmi1MA== - -"@rollup/rollup-android-arm64@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.5.tgz#33757c3a448b9ef77b6f6292d8b0ec45c87e9c1a" - integrity sha512-f14d7uhAMtsCGjAYwZGv6TwuS3IFaM4ZnGMUn3aCBgkcHAYErhV1Ad97WzBvS2o0aaDv4mVz+syiN0ElMyfBPg== - -"@rollup/rollup-darwin-arm64@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.5.tgz#5234ba62665a3f443143bc8bcea9df2cc58f55fb" - integrity sha512-ndoXeLx455FffL68OIUrVr89Xu1WLzAG4n65R8roDlCoYiQcGGg6MALvs2Ap9zs7AHg8mpHtMpwC8jBBjZrT/w== - -"@rollup/rollup-darwin-x64@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.5.tgz#981256c054d3247b83313724938d606798a919d1" - integrity sha512-UmElV1OY2m/1KEEqTlIjieKfVwRg0Zwg4PLgNf0s3glAHXBN99KLpw5A5lrSYCa1Kp63czTpVll2MAqbZYIHoA== - -"@rollup/rollup-linux-arm-gnueabihf@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.5.tgz#120678a5a2b3a283a548dbb4d337f9187a793560" - integrity sha512-Q0LcU61v92tQB6ae+udZvOyZ0wfpGojtAKrrpAaIqmJ7+psq4cMIhT/9lfV6UQIpeItnq/2QDROhNLo00lOD1g== - -"@rollup/rollup-linux-arm64-gnu@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.5.tgz#c99d857e2372ece544b6f60b85058ad259f64114" - integrity sha512-dkRscpM+RrR2Ee3eOQmRWFjmV/payHEOrjyq1VZegRUa5OrZJ2MAxBNs05bZuY0YCtpqETDy1Ix4i/hRqX98cA== - -"@rollup/rollup-linux-arm64-musl@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.5.tgz#3064060f568a5718c2a06858cd6e6d24f2ff8632" - integrity sha512-QaKFVOzzST2xzY4MAmiDmURagWLFh+zZtttuEnuNn19AiZ0T3fhPyjPPGwLNdiDT82ZE91hnfJsUiDwF9DClIQ== - -"@rollup/rollup-linux-riscv64-gnu@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.5.tgz#987d30b5d2b992fff07d055015991a57ff55fbad" - integrity sha512-HeGqmRJuyVg6/X6MpE2ur7GbymBPS8Np0S/vQFHDmocfORT+Zt76qu+69NUoxXzGqVP1pzaY6QIi0FJWLC3OPA== - -"@rollup/rollup-linux-x64-gnu@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.5.tgz#85946ee4d068bd12197aeeec2c6f679c94978a49" - integrity sha512-Dq1bqBdLaZ1Gb/l2e5/+o3B18+8TI9ANlA1SkejZqDgdU/jK/ThYaMPMJpVMMXy2uRHvGKbkz9vheVGdq3cJfA== - -"@rollup/rollup-linux-x64-musl@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.5.tgz#fe0b20f9749a60eb1df43d20effa96c756ddcbd4" - integrity sha512-ezyFUOwldYpj7AbkwyW9AJ203peub81CaAIVvckdkyH8EvhEIoKzaMFJj0G4qYJ5sw3BpqhFrsCc30t54HV8vg== - -"@rollup/rollup-win32-arm64-msvc@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.5.tgz#422661ef0e16699a234465d15b2c1089ef963b2a" - integrity sha512-aHSsMnUw+0UETB0Hlv7B/ZHOGY5bQdwMKJSzGfDfvyhnpmVxLMGnQPGNE9wgqkLUs3+gbG1Qx02S2LLfJ5GaRQ== - -"@rollup/rollup-win32-ia32-msvc@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.5.tgz#7b73a145891c202fbcc08759248983667a035d85" - integrity sha512-AiqiLkb9KSf7Lj/o1U3SEP9Zn+5NuVKgFdRIZkvd4N0+bYrTOovVd0+LmYCPQGbocT4kvFyK+LXCDiXPBF3fyA== - -"@rollup/rollup-win32-x64-msvc@4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.5.tgz#10491ccf4f63c814d4149e0316541476ea603602" - integrity sha512-1q+mykKE3Vot1kaFJIDoUFv5TuW+QQVaf2FmTT9krg86pQrGStOSJJ0Zil7CFagyxDuouTepzt5Y5TVzyajOdQ== - -"@types/estree@1.0.5": - version "1.0.5" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" - integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== - -esbuild@^0.19.3: - version "0.19.11" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.11.tgz#4a02dca031e768b5556606e1b468fe72e3325d96" - integrity sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA== - optionalDependencies: - "@esbuild/aix-ppc64" "0.19.11" - "@esbuild/android-arm" "0.19.11" - "@esbuild/android-arm64" "0.19.11" - "@esbuild/android-x64" "0.19.11" - "@esbuild/darwin-arm64" "0.19.11" - "@esbuild/darwin-x64" "0.19.11" - "@esbuild/freebsd-arm64" "0.19.11" - "@esbuild/freebsd-x64" "0.19.11" - "@esbuild/linux-arm" "0.19.11" - "@esbuild/linux-arm64" "0.19.11" - "@esbuild/linux-ia32" "0.19.11" - "@esbuild/linux-loong64" "0.19.11" - "@esbuild/linux-mips64el" "0.19.11" - "@esbuild/linux-ppc64" "0.19.11" - "@esbuild/linux-riscv64" "0.19.11" - "@esbuild/linux-s390x" "0.19.11" - "@esbuild/linux-x64" "0.19.11" - "@esbuild/netbsd-x64" "0.19.11" - "@esbuild/openbsd-x64" "0.19.11" - "@esbuild/sunos-x64" "0.19.11" - "@esbuild/win32-arm64" "0.19.11" - "@esbuild/win32-ia32" "0.19.11" - "@esbuild/win32-x64" "0.19.11" - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -"js-tokens@^3.0.0 || ^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -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== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -nanoid@^3.3.7: - version "3.3.7" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" - integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -postcss@^8.4.32: - version "8.4.33" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" - integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== - dependencies: - nanoid "^3.3.7" - picocolors "^1.0.0" - source-map-js "^1.0.2" - -react-dom@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" - integrity sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g== - dependencies: - loose-envify "^1.1.0" - scheduler "^0.23.0" - -react@18.2.0: - version "18.2.0" - resolved "https://registry.yarnpkg.com/react/-/react-18.2.0.tgz#555bd98592883255fa00de14f1151a917b5d77d5" - integrity sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ== - dependencies: - loose-envify "^1.1.0" - -rollup@^4.2.0: - version "4.9.5" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.9.5.tgz#62999462c90f4c8b5d7c38fc7161e63b29101b05" - integrity sha512-E4vQW0H/mbNMw2yLSqJyjtkHY9dslf/p0zuT1xehNRqUTBOFMqEjguDvqhXr7N7r/4ttb2jr4T41d3dncmIgbQ== - dependencies: - "@types/estree" "1.0.5" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.9.5" - "@rollup/rollup-android-arm64" "4.9.5" - "@rollup/rollup-darwin-arm64" "4.9.5" - "@rollup/rollup-darwin-x64" "4.9.5" - "@rollup/rollup-linux-arm-gnueabihf" "4.9.5" - "@rollup/rollup-linux-arm64-gnu" "4.9.5" - "@rollup/rollup-linux-arm64-musl" "4.9.5" - "@rollup/rollup-linux-riscv64-gnu" "4.9.5" - "@rollup/rollup-linux-x64-gnu" "4.9.5" - "@rollup/rollup-linux-x64-musl" "4.9.5" - "@rollup/rollup-win32-arm64-msvc" "4.9.5" - "@rollup/rollup-win32-ia32-msvc" "4.9.5" - "@rollup/rollup-win32-x64-msvc" "4.9.5" - fsevents "~2.3.2" - -scheduler@^0.23.0: - version "0.23.0" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" - integrity sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw== - dependencies: - loose-envify "^1.1.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== - -vite@5.0.6: - version "5.0.6" - resolved "https://registry.yarnpkg.com/vite/-/vite-5.0.6.tgz#f9e13503a4c5ccd67312c67803dec921f3bdea7c" - integrity sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ== - dependencies: - esbuild "^0.19.3" - postcss "^8.4.32" - rollup "^4.2.0" - optionalDependencies: - fsevents "~2.3.3" diff --git a/examples/excalidraw/with-nextjs/.gitignore b/examples/with-nextjs/.gitignore similarity index 100% rename from examples/excalidraw/with-nextjs/.gitignore rename to examples/with-nextjs/.gitignore diff --git a/examples/excalidraw/with-nextjs/README.md b/examples/with-nextjs/README.md similarity index 100% rename from examples/excalidraw/with-nextjs/README.md rename to examples/with-nextjs/README.md diff --git a/examples/excalidraw/with-nextjs/next.config.js b/examples/with-nextjs/next.config.js similarity index 100% rename from examples/excalidraw/with-nextjs/next.config.js rename to examples/with-nextjs/next.config.js diff --git a/examples/excalidraw/with-nextjs/package.json b/examples/with-nextjs/package.json similarity index 84% rename from examples/excalidraw/with-nextjs/package.json rename to examples/with-nextjs/package.json index 9d96becdd4..ee8e55581d 100644 --- a/examples/excalidraw/with-nextjs/package.json +++ b/examples/with-nextjs/package.json @@ -4,14 +4,13 @@ "private": true, "scripts": { "build:workspace": "yarn workspace @excalidraw/excalidraw run build:esm && yarn copy:assets", - "copy:assets": "cp -r ../../../packages/excalidraw/dist/prod/fonts ./public", + "copy:assets": "cp -r ../../packages/excalidraw/dist/prod/fonts ./public", "dev": "yarn build:workspace && next dev -p 3005", "build": "yarn build:workspace && next build", "start": "next start -p 3006", "lint": "next lint" }, "dependencies": { - "@excalidraw/excalidraw": "*", "next": "14.1", "react": "19.0.0", "react-dom": "19.0.0" diff --git a/examples/excalidraw/with-nextjs/public/images/doremon.png b/examples/with-nextjs/public/images/doremon.png similarity index 100% rename from examples/excalidraw/with-nextjs/public/images/doremon.png rename to examples/with-nextjs/public/images/doremon.png diff --git a/examples/excalidraw/with-nextjs/public/images/excalibot.png b/examples/with-nextjs/public/images/excalibot.png similarity index 100% rename from examples/excalidraw/with-nextjs/public/images/excalibot.png rename to examples/with-nextjs/public/images/excalibot.png diff --git a/examples/excalidraw/with-nextjs/public/images/pika.jpeg b/examples/with-nextjs/public/images/pika.jpeg similarity index 100% rename from examples/excalidraw/with-nextjs/public/images/pika.jpeg rename to examples/with-nextjs/public/images/pika.jpeg diff --git a/examples/excalidraw/with-nextjs/public/images/rocket.jpeg b/examples/with-nextjs/public/images/rocket.jpeg similarity index 100% rename from examples/excalidraw/with-nextjs/public/images/rocket.jpeg rename to examples/with-nextjs/public/images/rocket.jpeg diff --git a/examples/excalidraw/with-nextjs/src/app/favicon.ico b/examples/with-nextjs/src/app/favicon.ico similarity index 100% rename from examples/excalidraw/with-nextjs/src/app/favicon.ico rename to examples/with-nextjs/src/app/favicon.ico diff --git a/examples/excalidraw/with-nextjs/src/app/layout.tsx b/examples/with-nextjs/src/app/layout.tsx similarity index 100% rename from examples/excalidraw/with-nextjs/src/app/layout.tsx rename to examples/with-nextjs/src/app/layout.tsx diff --git a/examples/excalidraw/with-nextjs/src/app/page.tsx b/examples/with-nextjs/src/app/page.tsx similarity index 100% rename from examples/excalidraw/with-nextjs/src/app/page.tsx rename to examples/with-nextjs/src/app/page.tsx diff --git a/examples/excalidraw/with-nextjs/src/common.scss b/examples/with-nextjs/src/common.scss similarity index 100% rename from examples/excalidraw/with-nextjs/src/common.scss rename to examples/with-nextjs/src/common.scss diff --git a/examples/excalidraw/with-nextjs/src/excalidrawWrapper.tsx b/examples/with-nextjs/src/excalidrawWrapper.tsx similarity index 87% rename from examples/excalidraw/with-nextjs/src/excalidrawWrapper.tsx rename to examples/with-nextjs/src/excalidrawWrapper.tsx index e9fa3bb230..b4c45fa7d8 100644 --- a/examples/excalidraw/with-nextjs/src/excalidrawWrapper.tsx +++ b/examples/with-nextjs/src/excalidrawWrapper.tsx @@ -1,7 +1,7 @@ "use client"; import * as excalidrawLib from "@excalidraw/excalidraw"; import { Excalidraw } from "@excalidraw/excalidraw"; -import App from "../../components/ExampleApp"; +import App from "../../with-script-in-browser/components/ExampleApp"; import "@excalidraw/excalidraw/index.css"; diff --git a/examples/excalidraw/with-nextjs/src/pages/excalidraw-in-pages.tsx b/examples/with-nextjs/src/pages/excalidraw-in-pages.tsx similarity index 100% rename from examples/excalidraw/with-nextjs/src/pages/excalidraw-in-pages.tsx rename to examples/with-nextjs/src/pages/excalidraw-in-pages.tsx diff --git a/examples/excalidraw/with-nextjs/tsconfig.json b/examples/with-nextjs/tsconfig.json similarity index 100% rename from examples/excalidraw/with-nextjs/tsconfig.json rename to examples/with-nextjs/tsconfig.json diff --git a/examples/excalidraw/with-nextjs/vercel.json b/examples/with-nextjs/vercel.json similarity index 100% rename from examples/excalidraw/with-nextjs/vercel.json rename to examples/with-nextjs/vercel.json diff --git a/examples/excalidraw/with-nextjs/yarn.lock b/examples/with-nextjs/yarn.lock similarity index 100% rename from examples/excalidraw/with-nextjs/yarn.lock rename to examples/with-nextjs/yarn.lock diff --git a/examples/with-script-in-browser/.codesandbox/Dockerfile b/examples/with-script-in-browser/.codesandbox/Dockerfile new file mode 100644 index 0000000000..fd5b38d1e8 --- /dev/null +++ b/examples/with-script-in-browser/.codesandbox/Dockerfile @@ -0,0 +1,5 @@ +FROM node:18-bullseye + +# Vite wants to open the browser using `open`, so we +# need to install those utils. +RUN apt update -y && apt install -y xdg-utils diff --git a/examples/with-script-in-browser/.codesandbox/tasks.json b/examples/with-script-in-browser/.codesandbox/tasks.json new file mode 100644 index 0000000000..990c21a3ce --- /dev/null +++ b/examples/with-script-in-browser/.codesandbox/tasks.json @@ -0,0 +1,35 @@ +{ + // These tasks will run in order when initializing your CodeSandbox project. + "setupTasks": [ + { + "name": "Install Dependencies", + "command": "yarn install" + } + ], + + // These tasks can be run from CodeSandbox. Running one will open a log in the app. + "tasks": { + "build": { + "name": "Build", + "command": "yarn build", + "runAtStart": false + }, + "start": { + "name": "Start Example", + "command": "yarn start", + "runAtStart": true, + "preview": { + "port": 3001 + } + }, + "install-deps": { + "name": "Install Dependencies", + "command": "yarn install", + "restartOn": { + "files": ["yarn.lock"], + "branch": false, + "resume": false + } + } + } +} diff --git a/examples/excalidraw/with-script-in-browser/.gitignore b/examples/with-script-in-browser/.gitignore similarity index 100% rename from examples/excalidraw/with-script-in-browser/.gitignore rename to examples/with-script-in-browser/.gitignore diff --git a/examples/excalidraw/components/CustomFooter.tsx b/examples/with-script-in-browser/components/CustomFooter.tsx similarity index 98% rename from examples/excalidraw/components/CustomFooter.tsx rename to examples/with-script-in-browser/components/CustomFooter.tsx index 30d51ecf00..72fd199f6f 100644 --- a/examples/excalidraw/components/CustomFooter.tsx +++ b/examples/with-script-in-browser/components/CustomFooter.tsx @@ -1,5 +1,6 @@ +import React from "react"; import type * as TExcalidraw from "@excalidraw/excalidraw"; -import type { ExcalidrawImperativeAPI } from "@excalidraw/excalidraw/dist/excalidraw/types"; +import type { ExcalidrawImperativeAPI } from "@excalidraw/excalidraw/types"; const COMMENT_SVG = ( React App - +
- + +``` + +#### Deprecated `excalidraw-assets` and `excalidraw-assets-dev` folders [#8012](https://github.com/excalidraw/excalidraw/pull/8012), [#9127](https://github.com/excalidraw/excalidraw/pull/9127) + +The `excalidraw-assets` and `excalidraw-assets-dev` folders, which contained locales and fonts, are no longer used and have been deprecated. + +##### Locales + +Locales are no longer treated as static `.json` assets, but are transpiled with `esbuild` dirrectly to the `.js` as ES modules. Note that some build tools (i.e. Vite) may require setting `es2022` as a build target, in order to support "Arbitrary module namespace identifier names", e.g. `export { english as "en-us" } )`. + +```js +// vite.config.js +optimizeDeps: { + esbuildOptions: { + // Bumping to 2022 due to "Arbitrary module namespace identifier names" not being + // supported in Vite's default browser target https://github.com/vitejs/vite/issues/13556 + target: "es2022", + // Tree shaking is optional, but recommended + treeShaking: true, + }, +} +``` + +##### Fonts + +New fonts, which we've added, are automatically loaded from the CDN. For self-hosting purposes, you'll have to copy the content of the folder `node_modules/@excalidraw/excalidraw/dist/prod/fonts` to the path where your assets should be served from (i.e. `public/` directory in your project). In that case, you should also set `window.EXCALIDRAW_ASSET_PATH` to the very same path, i.e. `/` in case it's in the root: + +```js + +``` + +or, if you serve your assets from the root of your CDN, you would do: + +```js + +``` + +or, if you prefer the path to be dynamicly set based on the `location.origin`, you could do the following: + +```jsx +// Next.js + +``` + +#### Deprecated `commitToHistory` in favor of `captureUpdate` in `updateScene` API [#7348](https://github.com/excalidraw/excalidraw/pull/7348), [#7898](https://github.com/excalidraw/excalidraw/pull//7898) + +```js +// before +updateScene({ elements, appState, commitToHistory: true }); // A +updateScene({ elements, appState, commitToHistory: false }); // B + +// after +import { CaptureUpdateAction } from "@excalidraw/excalidraw"; +updateScene({ + elements, + appState, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, +}); // A +updateScene({ + elements, + appState, + captureUpdate: CaptureUpdateAction.NEVER, +}); // B +``` + +The `updateScene` API has changed due to the added `Store` component, as part of multiplayer undo / redo initiative. Specifically, optional `sceneData` parameter `commitToHistory: boolean` was replaced with optional `captureUpdate: CaptureUpdateActionType` parameter. Therefore, make sure to update all instances of `updateScene`, which use `commitToHistory` parameter according to the _before / after_ table below. + +> **Note**: Some updates are not observed by the store / history - i.e. updates to `collaborators` object or parts of `AppState` which are not observed (not `ObservedAppState`). Such updates will never make it to the undo / redo stacks, regardless of the passed `captureUpdate` value. + +| Undo behaviour | `commitToHistory` (before) | `captureUpdate` (after) | Notes | | --- | --- | --- | --- | -| _Immediately undoable_ | `true` | `"capture"` | As before, use for all updates which should be recorded by the store & history. Should be used for the most of the local updates. These updates will _immediately_ make it to the local undo / redo stacks. | -| _Eventually undoable_ | `false` | `"none"` | Similar to before, use for all updates which should not be recorded immediately (likely exceptions which are part of some async multi-step process) or those not meant to be recorded at all (i.e. updates to `collaborators` object, parts of `AppState` which are not observed by the store & history - not `ObservedAppState`).

**IMPORTANT** It's likely you should switch to `"update"` in all the other cases. Otherwise, all such updates would end up being recorded with the next `"capture"` - triggered either by the next `updateScene` or internally by the editor. These updates will _eventually_ make it to the local undo / redo stacks. | -| _Never undoable_ | n/a | `"update"` | **NEW**: previously there was no equivalent for this value. Now, it's recommended to use `"update"` for all remote updates (from the other clients), scene initialization, or those updates, which should not be locally "undoable". These updates will _never_ make it to the local undo / redo stacks. | +| _Immediately undoable_ | `true` | `CaptureUpdateAction.IMMEDIATELY` | Use for updates which should be captured. Should be used for most of the local updates. These updates will _immediately_ make it to the local undo / redo stacks. | +| _Eventually undoable_ | `false` (default) | `CaptureUpdateAction.EVENTUALLY` (default) | Use for updates which should not be captured immediately - likely exceptions which are part of some async multi-step process. Otherwise, all such updates would end up being captured with the next `CaptureUpdateAction.IMMEDIATELY` - triggered either by the next `updateScene` or internally by the editor. These updates will _eventually_ make it to the local undo / redo stacks. | +| _Never undoable_ | n/a | `CaptureUpdateAction.NEVER` | **NEW**: Previously there was no equivalent for this value. Now, it's recommended to use `CaptureUpdateAction.NEVER` for updates which should never be recorded, such as remote updates or scene initialization. These updates will _never_ make it to the local undo / redo stacks. | + +#### Other + +- `ExcalidrawTextElement.baseline` was removed and replaced with a vertical offset computation based on font metrics, performed on each text element re-render. In case of custom font usage, extend the `FONT_METRICS` object with the related properties. [#7693](https://github.com/excalidraw/excalidraw/pull/7693) - `ExcalidrawEmbeddableElement.validated` was removed and moved to private editor state. This should largely not affect your apps unless you were reading from this attribute. We keep validating embeddable urls internally, and the public [`props.validateEmbeddable`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props#validateembeddable) still applies. [#7539](https://github.com/excalidraw/excalidraw/pull/7539) -- `ExcalidrawTextElement.baseline` was removed and replaced with a vertical offset computation based on font metrics, performed on each text element re-render. In case of custom font usage, extend the `FONT_METRICS` object with the related properties. +- Stats container CSS has changed, so if you're using `renderCustomStats`, you may need to adjust your styles to retain the same layout. [#8361](https://github.com/excalidraw/excalidraw/pull/8361) -- Create an `ESM` build for `@excalidraw/excalidraw`. The API is in progress and subject to change before stable release. There are some changes on how the package will be consumed +- `` triggers are now always merged with host app triggers, rendered through ``. `` no longer accepts any props other than children. [#8498](https://github.com/excalidraw/excalidraw/pull/8498) - #### Bundler +### Features - - CSS needs to be imported so you will need to import the css along with the excalidraw component +- Prefer user defined coordinates and dimensions when creating a frame using [`convertToExcalidrawElements`](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/excalidraw-element-skeleton#converttoexcalidrawelements) [#8517](https://github.com/excalidraw/excalidraw/pull/8517) - ```js - import { Excalidraw } from "@excalidraw/excalidraw"; - import "@excalidraw/excalidraw/index.css"; - ``` +- `props.initialData` can now be a function that returns `ExcalidrawInitialDataState` or `Promise` [#8107](https://github.com/excalidraw/excalidraw/pull/8135) - - The `types` path is updated +- `MainMenu.DefaultItems.ToggleTheme` now supports `onSelect(theme: string)` callback, and optionally `allowSystemTheme: boolean` alongside `theme: string` to indicate you want to allow users to set to system theme (you need to handle this yourself) [#7853](https://github.com/excalidraw/excalidraw/pull/7853) - Instead of importing from `@excalidraw/excalidraw/types/`, you will need to import from `@excalidraw/excalidraw/dist/excalidraw` or `@excalidraw/excalidraw/dist/utils` depending on the types you are using. +- Add `useHandleLibrary`'s `opts.adapter` as the new recommended pattern to handle library initialization and persistence on library updates [#7655](https://github.com/excalidraw/excalidraw/pull/7655) - However this we will be fixing before stable release, so in case you want to try it out you will need to update the types for now. +- Add `useHandleLibrary`'s `opts.migrationAdapter` adapter to handle library migration during init, when migrating from one data store to another (e.g. from LocalStorage to IndexedDB) [#7655](https://github.com/excalidraw/excalidraw/pull/7655) - #### Browser +- Add `onPointerUp` prop [#7638](https://github.com/excalidraw/excalidraw/pull/7638) - - Since its `ESM` so now script type `module` can be used to load it and css needs to be loaded as well. +- Expose `getVisibleSceneBounds` helper to get scene bounds of visible canvas area [#7450](https://github.com/excalidraw/excalidraw/pull/7450) - ```html - - - ``` +- Soft-deprecate `useHandleLibrary`'s `opts.getInitialLibraryItems` in favor of `opts.adapter`. [#7655](https://github.com/excalidraw/excalidraw/pull/7655) -- `appState.openDialog` type was changed from `null | string` to `null | { name: string }`. [#7336](https://github.com/excalidraw/excalidraw/pull/7336) +- Extended `window.EXCALIDRAW_ASSET_PATH` to accept array of paths `string[]` as a value, allowing to specify multiple base `URL` fallbacks. [#8286](https://github.com/excalidraw/excalidraw/pull/8286) + +- Custom text metrics provider [#9121](https://github.com/excalidraw/excalidraw/pull/9121) + +- Add `props.onDuplicate` [#9117](https://github.com/excalidraw/excalidraw/pull/9117) + +- Change empty arrowhead icon [#9100](https://github.com/excalidraw/excalidraw/pull/9100) + +- Tweak slider colors to be more muted [#9076](https://github.com/excalidraw/excalidraw/pull/9076) + +- Improve library sidebar performance [#9060](https://github.com/excalidraw/excalidraw/pull/9060) + +- Implement custom Range component for opacity control [#9009](https://github.com/excalidraw/excalidraw/pull/9009) + +- Box select frame & children to allow resizing at the same time [#9031](https://github.com/excalidraw/excalidraw/pull/9031) + +- Allow installing libs from excal github [#9041](https://github.com/excalidraw/excalidraw/pull/9041) + +- Update jotai [#9015](https://github.com/excalidraw/excalidraw/pull/9015) + +- Do not delete frame children on frame delete [#9011](https://github.com/excalidraw/excalidraw/pull/9011) + +- Add action to wrap selected items in a frame [#9005](https://github.com/excalidraw/excalidraw/pull/9005) + +- Reintroduce `.excalidraw.png` default when embedding scene [#8979](https://github.com/excalidraw/excalidraw/pull/8979) + +- Add mimeTypes on file save [#8946](https://github.com/excalidraw/excalidraw/pull/8946) + +- Add crowfoot to arrowheads [#8942](https://github.com/excalidraw/excalidraw/pull/8942) + +- Make HTML attribute sanitization stricter [#8977](https://github.com/excalidraw/excalidraw/pull/8977) + +- Validate library install urls [#8976](https://github.com/excalidraw/excalidraw/pull/8976) + +- Cleanup svg export and move payload to `` [#8975](https://github.com/excalidraw/excalidraw/pull/8975) + +- Use stats panel to crop [#8848](https://github.com/excalidraw/excalidraw/pull/8848) + +- Snap when cropping as well [#8831](https://github.com/excalidraw/excalidraw/pull/8831) + +- Update blog url [#8767](https://github.com/excalidraw/excalidraw/pull/8767) + +- Export scene to e+ on workspace creation/redemption [#8514](https://github.com/excalidraw/excalidraw/pull/8514) + +- Added sitemap & fixed robot txt [#8699](https://github.com/excalidraw/excalidraw/pull/8699) + +- Do not strip unknown element properties on restore [#8682](https://github.com/excalidraw/excalidraw/pull/8682) + +- Added reddit links as embeddable [#8099](https://github.com/excalidraw/excalidraw/pull/8099) + +- Self-hosting existing google fonts [#8540](https://github.com/excalidraw/excalidraw/pull/8540) + +- Flip arrowheads if only arrow(s) selected [#8525](https://github.com/excalidraw/excalidraw/pull/8525) + +- Common elbow mid segments [#8440](https://github.com/excalidraw/excalidraw/pull/8440) + +- Merge search sidebar back to default sidebar [#8497](https://github.com/excalidraw/excalidraw/pull/8497) + +- Smarter zooming when scrolling to match & only match on search/switch [#8488](https://github.com/excalidraw/excalidraw/pull/8488) + +- Reset copyStatus on export dialog settings change [#8443](https://github.com/excalidraw/excalidraw/pull/8443) + +- Tweak copy button success animation [#8441](https://github.com/excalidraw/excalidraw/pull/8441) + +- Enable panning/zoom while in wysiwyg [#8437](https://github.com/excalidraw/excalidraw/pull/8437) + +- Visual debugger [#8344](https://github.com/excalidraw/excalidraw/pull/8344) + +- Improve elbow arrow keyboard move [#8392](https://github.com/excalidraw/excalidraw/pull/8392) + +- Rewrite d2c to not require token [#8269](https://github.com/excalidraw/excalidraw/pull/8269) + +- Split `gridSize` from enabled state & support custom `gridStep` [#8364](https://github.com/excalidraw/excalidraw/pull/8364) + +- Improve zoom-to-content when creating flowchart [#8368](https://github.com/excalidraw/excalidraw/pull/8368) + +- Stats popup style tweaks [#8361](https://github.com/excalidraw/excalidraw/pull/8361) + +- Remove automatic frame naming [#8302](https://github.com/excalidraw/excalidraw/pull/8302) + +- Ability to debug the state of fractional indices [#8235](https://github.com/excalidraw/excalidraw/pull/8235) + +- Improve mermaid detection on paste [#8287](https://github.com/excalidraw/excalidraw/pull/8287) + +- Upgrade mermaid-to-excalidraw to v1.1.0 [#8226](https://github.com/excalidraw/excalidraw/pull/8226) + +- Bump max file size [#8220](https://github.com/excalidraw/excalidraw/pull/8220) + +- Smarter preferred lang detection [#8205](https://github.com/excalidraw/excalidraw/pull/8205) + +- Support Stats bound text `fontSize` editing [#8187](https://github.com/excalidraw/excalidraw/pull/8187) + +- Paste as mermaid if applicable [#8116](https://github.com/excalidraw/excalidraw/pull/8116) + +- Stop autoselecting text on text edit on mobile [#8076](https://github.com/excalidraw/excalidraw/pull/8076) + +- Create new text with width [#8038](https://github.com/excalidraw/excalidraw/pull/8038) + +- Wrap long text when pasting [#8026](https://github.com/excalidraw/excalidraw/pull/8026) + +- Upgrade to mermaid-to-excalidraw v1 🚀 [#8022](https://github.com/excalidraw/excalidraw/pull/8022) + +- Rerender canvas on focus [#8035](https://github.com/excalidraw/excalidraw/pull/8035) + +- Add missing `type="button"` [#8030](https://github.com/excalidraw/excalidraw/pull/8030) + +- Add install-PWA to command palette [#7935](https://github.com/excalidraw/excalidraw/pull/7935) + +- Tweak a few icons & add line editor button to side panel [#7990](https://github.com/excalidraw/excalidraw/pull/7990) + +- Allow binding only via linear element ends [#7946](https://github.com/excalidraw/excalidraw/pull/7946) + +- Resize elements from the sides [#7855](https://github.com/excalidraw/excalidraw/pull/7855) + +- Record freedraw tool selection to history [#7949](https://github.com/excalidraw/excalidraw/pull/7949) + +- Export reconciliation [#7917](https://github.com/excalidraw/excalidraw/pull/7917) + +- Add "toggle grid" to command palette [#7887](https://github.com/excalidraw/excalidraw/pull/7887) + +- Fractional indexing [#7359](https://github.com/excalidraw/excalidraw/pull/7359) + +- Show firefox-compatible command palette shortcut alias [#7825](https://github.com/excalidraw/excalidraw/pull/7825) + +- Upgrade mermaid-to-excalidraw to 0.3.0 [#7819](https://github.com/excalidraw/excalidraw/pull/7819) + +- Support to not render remote cursor & username [#7130](https://github.com/excalidraw/excalidraw/pull/7130) + +- Expose more collaborator status icons [#7777](https://github.com/excalidraw/excalidraw/pull/7777) + +- Close dropdown on escape [#7750](https://github.com/excalidraw/excalidraw/pull/7750) + +- Text measurements based on font metrics [#7693](https://github.com/excalidraw/excalidraw/pull/7693) + +- Improve collab error notification [#7741](https://github.com/excalidraw/excalidraw/pull/7741) + +- Grouped together Undo and Redo buttons on mobile [#9109](https://github.com/excalidraw/excalidraw/pull/9109) + +- Load old library if migration fails + +- Change LibraryPersistenceAdapter `load()` `source` -> `priority` + +### Fixes + +- Fix inconsistency in resizing while maintaining aspect ratio [#9116](https://github.com/excalidraw/excalidraw/pull/9116) + +- IFrame and elbow arrow interaction fix [#9101](https://github.com/excalidraw/excalidraw/pull/9101) + +- Duplicating/removing frame while children selected [#9079](https://github.com/excalidraw/excalidraw/pull/9079) + +- Elbow arrow z-index binding [#9067](https://github.com/excalidraw/excalidraw/pull/9067) + +- Library item checkbox style regression [#9080](https://github.com/excalidraw/excalidraw/pull/9080) + +- Elbow arrow orthogonality [#9073](https://github.com/excalidraw/excalidraw/pull/9073) + +- Button bg CSS variable leaking into other styles [#9075](https://github.com/excalidraw/excalidraw/pull/9075) + +- Fonts not loading on export (again) [#9064](https://github.com/excalidraw/excalidraw/pull/9064) + +- Merge server-side fonts with liberation sans [#9052](https://github.com/excalidraw/excalidraw/pull/9052) + +- Hyperlinks html entities [#9063](https://github.com/excalidraw/excalidraw/pull/9063) + +- Remove flushSync to fix flickering [#9057](https://github.com/excalidraw/excalidraw/pull/9057) + +- Excalidraw issue #9045 flowcharts: align attributes of new node [#9047](https://github.com/excalidraw/excalidraw/pull/9047) + +- Align arrows bound to elements excalidraw#8833 [#8998](https://github.com/excalidraw/excalidraw/pull/8998) + +- Update elbow arrow on font size change #8798 [#9002](https://github.com/excalidraw/excalidraw/pull/9002) + +- Undo for elbow arrows create incorrect routing [#9046](https://github.com/excalidraw/excalidraw/pull/9046) + +- Flowchart clones the current arrowhead [#8581](https://github.com/excalidraw/excalidraw/pull/8581) + +- Adding partial group to frame [#9014](https://github.com/excalidraw/excalidraw/pull/9014) + +- Do not refocus element link input on unrelated updates [#9037](https://github.com/excalidraw/excalidraw/pull/9037) + +- Arrow binding behaving unexpectedly on pointerup [#9010](https://github.com/excalidraw/excalidraw/pull/9010) + +- Change cursor by tool change immediately [#8212](https://github.com/excalidraw/excalidraw/pull/8212) + +- Package build fails on worker chunks [#8990](https://github.com/excalidraw/excalidraw/pull/8990) + +- Z-index clash in mobile UI [#8985](https://github.com/excalidraw/excalidraw/pull/8985) + +- Elbow arrows do not work within frames (issue: #8964) [#8969](https://github.com/excalidraw/excalidraw/pull/8969) + +- NormalizeSVG width and height from viewbox when size includes decimal points [#8939](https://github.com/excalidraw/excalidraw/pull/8939) + +- Make arrow binding area adapt to zoom levels [#8927](https://github.com/excalidraw/excalidraw/pull/8927) + +- Robust `state.editingFrame` teardown [#8941](https://github.com/excalidraw/excalidraw/pull/8941) + +- Regression on dragging a selected frame by its name [#8924](https://github.com/excalidraw/excalidraw/pull/8924) + +- Right-click paste for images in clipboard (Issue #8826) [#8845](https://github.com/excalidraw/excalidraw/pull/8845) + +- Fixed image transparency by adding alpha option to preserve image alpha channel [#8895](https://github.com/excalidraw/excalidraw/pull/8895) + +- Flush pending DOM updates before .focus() [#8901](https://github.com/excalidraw/excalidraw/pull/8901) + +- Normalize svg using only absolute sizing [#8854](https://github.com/excalidraw/excalidraw/pull/8854) + +- Element link selector dialog z-index & positioning [#8853](https://github.com/excalidraw/excalidraw/pull/8853) + +- Update old blog links & add canonical url [#8846](https://github.com/excalidraw/excalidraw/pull/8846) + +- Optimize frameToHighlight state change and snapLines state change [#8763](https://github.com/excalidraw/excalidraw/pull/8763) + +- Make some events expllicitly active to avoid console warnings [#8757](https://github.com/excalidraw/excalidraw/pull/8757) + +- Unify binding update options for `updateBoundElements()` [#8832](https://github.com/excalidraw/excalidraw/pull/8832) + +- Cleanup scripts and support upto node 22 [#8794](https://github.com/excalidraw/excalidraw/pull/8794) + +- Usage of `node12 which is deprecated` [#8791](https://github.com/excalidraw/excalidraw/pull/8791) + +- Remove manifest.json [#8783](https://github.com/excalidraw/excalidraw/pull/8783) + +- Load env vars correctly and set debug and linter flags to false explicitly in prod mode [#8770](https://github.com/excalidraw/excalidraw/pull/8770) + +- Console error in dev mode due to missing font path in non-prod [#8756](https://github.com/excalidraw/excalidraw/pull/8756) + +- Text pushes UI due to padding [#8745](https://github.com/excalidraw/excalidraw/pull/8745) + +- Fix trailing line whitespaces layout shift [#8714](https://github.com/excalidraw/excalidraw/pull/8714) + +- Load font faces in Safari manually [#8693](https://github.com/excalidraw/excalidraw/pull/8693) + +- Restore svg image DataURL dimensions [#8730](https://github.com/excalidraw/excalidraw/pull/8730) + +- Image cropping svg + compat mode [#8710](https://github.com/excalidraw/excalidraw/pull/8710) + +- Usage of `node12 which is deprecated` [#8709](https://github.com/excalidraw/excalidraw/pull/8709) + +- Image render perf [#8697](https://github.com/excalidraw/excalidraw/pull/8697) + +- Undo/redo action for international keyboard layouts [#8649](https://github.com/excalidraw/excalidraw/pull/8649) + +- Comic Shanns issues, new fonts structure [#8641](https://github.com/excalidraw/excalidraw/pull/8641) + +- Remove export-to-clip-as-svg shortcut for now [#8660](https://github.com/excalidraw/excalidraw/pull/8660) + +- Text disappearing on edit [#8558](https://github.com/excalidraw/excalidraw/pull/8558) (#8624) + +- Elbow arrow fixedpoint flipping now properly flips on inverted resize and flip action [#8324](https://github.com/excalidraw/excalidraw/pull/8324) + +- Svg and png frame clipping cases [#8515](https://github.com/excalidraw/excalidraw/pull/8515) + +- Re-route elbow arrows when pasted [#8448](https://github.com/excalidraw/excalidraw/pull/8448) + +- Buffer dependency [#8474](https://github.com/excalidraw/excalidraw/pull/8474) + +- Linear element complete button disabled [#8492](https://github.com/excalidraw/excalidraw/pull/8492) + +- Aspect ratio of distorted images are not preserved in SVG exports [#8061](https://github.com/excalidraw/excalidraw/pull/8061) + +- WYSIWYG editor padding is not normalized with zoom.value [#8481](https://github.com/excalidraw/excalidraw/pull/8481) + +- Improve canvas search scroll behavior further [#8491](https://github.com/excalidraw/excalidraw/pull/8491) + +- AddFiles clears the whole image cache when each file is added - regression from #8471 [#8490](https://github.com/excalidraw/excalidraw/pull/8490) + +- `select` instead of `focus` search input [#8483](https://github.com/excalidraw/excalidraw/pull/8483) + +- Image rendering issue when passed in `initialData` [#8471](https://github.com/excalidraw/excalidraw/pull/8471) + +- Add partial mocking [#8473](https://github.com/excalidraw/excalidraw/pull/8473) + +- PropertiesPopover maxWidth changing fixed units to relative units [#8456](https://github.com/excalidraw/excalidraw/pull/8456) + +- View mode wheel zooming does not work [#8452](https://github.com/excalidraw/excalidraw/pull/8452) + +- Fixed copy to clipboard button [#8426](https://github.com/excalidraw/excalidraw/pull/8426) + +- Context menu does not work after after dragging on StatsDragInput [#8386](https://github.com/excalidraw/excalidraw/pull/8386) + +- Perf regression in `getCommonBounds` [#8429](https://github.com/excalidraw/excalidraw/pull/8429) + +- Object snapping not working [#8381](https://github.com/excalidraw/excalidraw/pull/8381) + +- Reimplement rectangle intersection [#8367](https://github.com/excalidraw/excalidraw/pull/8367) + +- Round coordinates and sizes for rectangle intersection [#8366](https://github.com/excalidraw/excalidraw/pull/8366) + +- Text content with tab characters act different in view/edit [#8336](https://github.com/excalidraw/excalidraw/pull/8336) + +- Drawing from 0-dimension canvas [#8356](https://github.com/excalidraw/excalidraw/pull/8356) + +- Disable flowchart keybindings inside inputs [#8353](https://github.com/excalidraw/excalidraw/pull/8353) + +- Yet more patching of intersect code [#8352](https://github.com/excalidraw/excalidraw/pull/8352) + +- Missing `act()` in flowchart tests [#8354](https://github.com/excalidraw/excalidraw/pull/8354) + +- Z-index change by one causes app to freeze [#8314](https://github.com/excalidraw/excalidraw/pull/8314) + +- Patch over intersection calculation issue [#8350](https://github.com/excalidraw/excalidraw/pull/8350) + +- Point duplication in LEE on ALT+click [#8347](https://github.com/excalidraw/excalidraw/pull/8347) + +- Do not allow resizing unbound elbow arrows either [#8333](https://github.com/excalidraw/excalidraw/pull/8333) + +- Docker build in CI [#8312](https://github.com/excalidraw/excalidraw/pull/8312) + +- Duplicating arrow without bound elements throws error [#8316](https://github.com/excalidraw/excalidraw/pull/8316) + +- CVE-2023-45133 [#7988](https://github.com/excalidraw/excalidraw/pull/7988) + +- Throttle fractional indices validation [#8306](https://github.com/excalidraw/excalidraw/pull/8306) + +- Allow binding elbow arrows to frame children [#8309](https://github.com/excalidraw/excalidraw/pull/8309) + +- Skip registering font faces for local fonts [#8303](https://github.com/excalidraw/excalidraw/pull/8303) + +- Load fonts for `exportToCanvas` [#8298](https://github.com/excalidraw/excalidraw/pull/8298) + +- Re-add Cascadia Code with ligatures [#8291](https://github.com/excalidraw/excalidraw/pull/8291) + +- Linear elements not selected on pointer up from hitting its bound text [#8285](https://github.com/excalidraw/excalidraw/pull/8285) + +- Revert default element canvas padding change [#8266](https://github.com/excalidraw/excalidraw/pull/8266) + +- Freedraw jittering [#8238](https://github.com/excalidraw/excalidraw/pull/8238) + +- Messed up env variable [#8231](https://github.com/excalidraw/excalidraw/pull/8231) + +- Log allowed events [#8224](https://github.com/excalidraw/excalidraw/pull/8224) + +- Memory leak - scene.destroy() and window.launchQueue [#8198](https://github.com/excalidraw/excalidraw/pull/8198) + +- Stop updating text versions on init [#8191](https://github.com/excalidraw/excalidraw/pull/8191) + +- Add binding update to manual stat changes [#8183](https://github.com/excalidraw/excalidraw/pull/8183) + +- Binding after duplicating is now applied for both the old and duplicate shapes [#8185](https://github.com/excalidraw/excalidraw/pull/8185) + +- Incorrect point offsetting in LinearElementEditor.movePoints() [#8145](https://github.com/excalidraw/excalidraw/pull/8145) + +- Stats state leaking & race conds [#8177](https://github.com/excalidraw/excalidraw/pull/8177) + +- Only bind arrow [#8152](https://github.com/excalidraw/excalidraw/pull/8152) + +- Repair invalid binding on restore & fix type check [#8133](https://github.com/excalidraw/excalidraw/pull/8133) + +- Wysiwyg blur-submit on mobile [#8075](https://github.com/excalidraw/excalidraw/pull/8075) + +- Restore linear dimensions from points [#8062](https://github.com/excalidraw/excalidraw/pull/8062) + +- Lp plus url [#8056](https://github.com/excalidraw/excalidraw/pull/8056) + +- Fix twitter og image [#8050](https://github.com/excalidraw/excalidraw/pull/8050) + +- Flaky snapshot tests with floating point precision issues [#8049](https://github.com/excalidraw/excalidraw/pull/8049) + +- Always re-generate index of defined moved elements [#8040](https://github.com/excalidraw/excalidraw/pull/8040) + +- Undo/redo when exiting view mode [#8024](https://github.com/excalidraw/excalidraw/pull/8024) + +- Two finger panning is slow [#7849](https://github.com/excalidraw/excalidraw/pull/7849) + +- Compatible safari layers button svg [#8020](https://github.com/excalidraw/excalidraw/pull/8020) + +- Correctly resolve the package version [#8016](https://github.com/excalidraw/excalidraw/pull/8016) + +- Re-introduce wysiwyg width offset [#8014](https://github.com/excalidraw/excalidraw/pull/8014) + +- Font not rendered correctly on init [#8002](https://github.com/excalidraw/excalidraw/pull/8002) + +- Command palette filter [#7981](https://github.com/excalidraw/excalidraw/pull/7981) + +- Remove unused param from drawImagePlaceholder [#7991](https://github.com/excalidraw/excalidraw/pull/7991) + +- Docker build of Excalidraw app [#7430](https://github.com/excalidraw/excalidraw/pull/7430) + +- Typo in doc api [#7466](https://github.com/excalidraw/excalidraw/pull/7466) + +- Use Reflect API instead of Object.hasOwn [#7958](https://github.com/excalidraw/excalidraw/pull/7958) + +- CTRL/CMD & arrow point drag unbinds both sides [#6459](https://github.com/excalidraw/excalidraw/pull/6459) (#7877) + +- Z-index for laser pointer to be able to draw on embeds and such [#7918](https://github.com/excalidraw/excalidraw/pull/7918) + +- Double text rendering on edit [#7904](https://github.com/excalidraw/excalidraw/pull/7904) + +- Collision regressions from vector geometry rewrite [#7902](https://github.com/excalidraw/excalidraw/pull/7902) + +- Correct unit from 'eg' to 'deg' [#7891](https://github.com/excalidraw/excalidraw/pull/7891) + +- Allow same origin for all necessary domains [#7889](https://github.com/excalidraw/excalidraw/pull/7889) + +- Always make sure we render bound text above containers [#7880](https://github.com/excalidraw/excalidraw/pull/7880) + +- Parse embeddable srcdoc urls strictly [#7884](https://github.com/excalidraw/excalidraw/pull/7884) + +- Hit test for closed sharp curves [#7881](https://github.com/excalidraw/excalidraw/pull/7881) + +- Gist embed allowing unsafe html [#7883](https://github.com/excalidraw/excalidraw/pull/7883) + +- Command palette tweaks and fixes [#7876](https://github.com/excalidraw/excalidraw/pull/7876) + +- Include borders when testing insides of a shape [#7865](https://github.com/excalidraw/excalidraw/pull/7865) + +- External link not opening [#7859](https://github.com/excalidraw/excalidraw/pull/7859) + +- Add safe check for arrow points length in tranformToExcalidrawElements [#7863](https://github.com/excalidraw/excalidraw/pull/7863) + +- Import [#7869](https://github.com/excalidraw/excalidraw/pull/7869) + +- Theme toggle shortcut `event.code` [#7868](https://github.com/excalidraw/excalidraw/pull/7868) + +- Remove incorrect check from index.html [#7867](https://github.com/excalidraw/excalidraw/pull/7867) + +- Stop using lookbehind for backwards compat [#7824](https://github.com/excalidraw/excalidraw/pull/7824) + +- Ejs support in html files [#7822](https://github.com/excalidraw/excalidraw/pull/7822) + +- `excalidrawAPI.toggleSidebar` not switching between tabs correctly [#7821](https://github.com/excalidraw/excalidraw/pull/7821) + +- Correcting Assistant metrics [#7758](https://github.com/excalidraw/excalidraw/pull/7758) + +- Add missing font metrics for Assistant [#7752](https://github.com/excalidraw/excalidraw/pull/7752) + +- Export utils from excalidraw package in excalidraw library [#7731](https://github.com/excalidraw/excalidraw/pull/7731) + +- Split renderScene so that locales aren't imported unnecessarily [#7718](https://github.com/excalidraw/excalidraw/pull/7718) + +- Remove dependency of t in blob.ts [#7717](https://github.com/excalidraw/excalidraw/pull/7717) + +- Remove dependency of t from clipboard and image [#7712](https://github.com/excalidraw/excalidraw/pull/7712) + +- Remove scene hack from export.ts & remove pass elementsMap to getContainingFrame [#7713](https://github.com/excalidraw/excalidraw/pull/7713) + +- Decouple pure functions from hyperlink to prevent mermaid bundling [#7710](https://github.com/excalidraw/excalidraw/pull/7710) + +- Make bounds independent of scene [#7679](https://github.com/excalidraw/excalidraw/pull/7679) + +- Make LinearElementEditor independent of scene [#7670](https://github.com/excalidraw/excalidraw/pull/7670) + +- Remove scene from getElementAbsoluteCoords and dependent functions and use elementsMap [#7663](https://github.com/excalidraw/excalidraw/pull/7663) + +- Remove t from getDefaultAppState and allow name to be nullable [#7666](https://github.com/excalidraw/excalidraw/pull/7666) + +- Stop using structuredClone [#9128](https://github.com/excalidraw/excalidraw/pull/9128) + +### Refactor + +- Remove `defaultProps` [#9035](https://github.com/excalidraw/excalidraw/pull/9035) + +- Separate resizing logic from pointer [#8155](https://github.com/excalidraw/excalidraw/pull/8155) + +- `point()` -> `pointFrom()` to fix compiler issue [#8578](https://github.com/excalidraw/excalidraw/pull/8578) + +- Rename example `App.tsx` -> `ExampleApp.tsx` [#8501](https://github.com/excalidraw/excalidraw/pull/8501) + +- Remove unused env variable [#8457](https://github.com/excalidraw/excalidraw/pull/8457) + +- Rename `draggingElement` -> `newElement` [#8294](https://github.com/excalidraw/excalidraw/pull/8294) + +- Update collision from ga to vector geometry [#7636](https://github.com/excalidraw/excalidraw/pull/7636) + +### Performance + +- Improved pointer events related performance when the sidebar is docked with a large library open [#9086](https://github.com/excalidraw/excalidraw/pull/9086) + +- Reduce unnecessary frame clippings [#8980](https://github.com/excalidraw/excalidraw/pull/8980) + +- Improve new element drawing [#8340](https://github.com/excalidraw/excalidraw/pull/8340) + +- Cache the temp canvas created for labeled arrows [#8267](https://github.com/excalidraw/excalidraw/pull/8267) + +### Build + +- Set PWA flag in dev to false [#8788](https://github.com/excalidraw/excalidraw/pull/8788) + +- Add a flag VITE_APP_ENABLE_PWA for enabling pwa in dev environment [#8784](https://github.com/excalidraw/excalidraw/pull/8784) + +- Upgrade vite to 5.4.x, vitest to 2.x and related vite packages [#8459](https://github.com/excalidraw/excalidraw/pull/8459) + +- Add example apps `public` and vite `dev-dist` to eslintignore [#8326](https://github.com/excalidraw/excalidraw/pull/8326) + +- Add `rm:build`, `rm:node_modules` & `clean-install` scripts [#8323](https://github.com/excalidraw/excalidraw/pull/8323) + +- Update release script to build esm [#8308](https://github.com/excalidraw/excalidraw/pull/8308) + +- Run tests on master branch [#8072](https://github.com/excalidraw/excalidraw/pull/8072) + +- Specify `packageManager` field [#8010](https://github.com/excalidraw/excalidraw/pull/8010) + +- Enable consistent type imports eslint rule [#7992](https://github.com/excalidraw/excalidraw/pull/7992) + +- Export types for @excalidraw/utils [#7736](https://github.com/excalidraw/excalidraw/pull/7736) + +- Create ESM build for utils package 🥳 [#7500](https://github.com/excalidraw/excalidraw/pull/7500) + +- Upgrade to react@19 [#9182](https://github.com/excalidraw/excalidraw/pull/9182) ## 0.17.3 (2024-02-09) @@ -215,6 +845,8 @@ define: { ### Fixes +- `appState.openDialog` type was changed from `null | string` to `null | { name: string }`. [#7336](https://github.com/excalidraw/excalidraw/pull/7336) + - Image insertion bugs [#7278](https://github.com/excalidraw/excalidraw/pull/7278) - ExportToSvg to honor frameRendering also for name not only for frame itself [#7270](https://github.com/excalidraw/excalidraw/pull/7270) diff --git a/packages/excalidraw/README.md b/packages/excalidraw/README.md index 3e2f8efc69..a24b305fda 100644 --- a/packages/excalidraw/README.md +++ b/packages/excalidraw/README.md @@ -1,49 +1,45 @@ # Excalidraw -**Excalidraw** is exported as a component to directly embed in your projects. +**Excalidraw** is exported as a component to be directly embedded in your project. ## Installation -You can use `npm` +Use `npm` or `yarn` to install the package. ```bash npm install react react-dom @excalidraw/excalidraw -``` - -or via `yarn` - -```bash +# or yarn add react react-dom @excalidraw/excalidraw ``` -After installation you will see a folder `excalidraw-assets` and `excalidraw-assets-dev` in `dist` directory which contains the assets needed for this app in prod and dev mode respectively. +> **Note**: If you don't want to wait for the next stable release and try out the unreleased changes, use `@excalidraw/excalidraw@next`. -Move the folder `excalidraw-assets` and `excalidraw-assets-dev` to the path where your assets are served. +#### Self-hosting fonts -By default it will try to load the files from [`https://unpkg.com/@excalidraw/excalidraw/dist/`](https://unpkg.com/@excalidraw/excalidraw/dist) +By default, Excalidraw will try to download all the used fonts from the [CDN](https://esm.run/@excalidraw/excalidraw/dist/prod). -If you want to load assets from a different path you can set a variable `window.EXCALIDRAW_ASSET_PATH` depending on environment (for example if you have different URL's for dev and prod) to the url from where you want to load the assets. +For self-hosting purposes, you'll have to copy the content of the folder `node_modules/@excalidraw/excalidraw/dist/prod/fonts` to the path where your assets should be served from (i.e. `public/` directory in your project). In that case, you should also set `window.EXCALIDRAW_ASSET_PATH` to the very same path, i.e. `/` in case it's in the root: -#### Note +```js + +``` -**If you don't want to wait for the next stable release and try out the unreleased changes you can use `@excalidraw/excalidraw@next`.** - -## Dimensions of Excalidraw +### Dimensions of Excalidraw Excalidraw takes _100%_ of `width` and `height` of the containing block so make sure the container in which you render Excalidraw has non zero dimensions. -### Demo +## Demo -[Try here](https://codesandbox.io/s/excalidraw-ehlz3). +Go to [CodeSandbox](https://codesandbox.io/p/sandbox/github/excalidraw/excalidraw/tree/mrazator/release-v18/examples/with-script-in-browser) example. ## Integration -Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/integration) +Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/integration). ## API -Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api) +Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api). ## Contributing -Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/contributing) +Head over to the [docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/contributing). diff --git a/packages/excalidraw/actions/actionAddToLibrary.ts b/packages/excalidraw/actions/actionAddToLibrary.ts index 93fddf0c42..3186e3bcbf 100644 --- a/packages/excalidraw/actions/actionAddToLibrary.ts +++ b/packages/excalidraw/actions/actionAddToLibrary.ts @@ -3,7 +3,7 @@ import { deepCopyElement } from "../element/newElement"; import { randomId } from "../random"; import { t } from "../i18n"; import { LIBRARY_DISABLED_TYPES } from "../constants"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionAddToLibrary = register({ name: "addToLibrary", @@ -18,7 +18,7 @@ export const actionAddToLibrary = register({ for (const type of LIBRARY_DISABLED_TYPES) { if (selectedElements.some((element) => element.type === type)) { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: t(`errors.libraryElementTypeError.${type}`), @@ -42,7 +42,7 @@ export const actionAddToLibrary = register({ }) .then(() => { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, toast: { message: t("toast.addedToLibrary") }, @@ -51,7 +51,7 @@ export const actionAddToLibrary = register({ }) .catch((error) => { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: error.message, diff --git a/packages/excalidraw/actions/actionAlign.tsx b/packages/excalidraw/actions/actionAlign.tsx index 2acc12bfe5..53e8e618b8 100644 --- a/packages/excalidraw/actions/actionAlign.tsx +++ b/packages/excalidraw/actions/actionAlign.tsx @@ -16,7 +16,7 @@ import { updateFrameMembershipOfSelectedElements } from "../frame"; import { t } from "../i18n"; import { KEYS } from "../keys"; import { isSomeElementSelected } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import type { AppClassProperties, AppState, UIAppState } from "../types"; import { arrayToMap, getShortcutKey } from "../utils"; import { register } from "./register"; @@ -72,7 +72,7 @@ export const actionAlignTop = register({ position: "start", axis: "y", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -106,7 +106,7 @@ export const actionAlignBottom = register({ position: "end", axis: "y", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -140,7 +140,7 @@ export const actionAlignLeft = register({ position: "start", axis: "x", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -174,7 +174,7 @@ export const actionAlignRight = register({ position: "end", axis: "x", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -208,7 +208,7 @@ export const actionAlignVerticallyCentered = register({ position: "center", axis: "y", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData, app }) => ( @@ -238,7 +238,7 @@ export const actionAlignHorizontallyCentered = register({ position: "center", axis: "x", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData, app }) => ( diff --git a/packages/excalidraw/actions/actionBoundText.tsx b/packages/excalidraw/actions/actionBoundText.tsx index d6386ab272..b72ddee646 100644 --- a/packages/excalidraw/actions/actionBoundText.tsx +++ b/packages/excalidraw/actions/actionBoundText.tsx @@ -33,7 +33,7 @@ import type { Mutable } from "../utility-types"; import { arrayToMap, getFontString } from "../utils"; import { register } from "./register"; import { syncMovedIndices } from "../fractionalIndex"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { measureText } from "../element/textMeasurements"; export const actionUnbindText = register({ @@ -86,7 +86,7 @@ export const actionUnbindText = register({ return { elements, appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); @@ -163,7 +163,7 @@ export const actionBindText = register({ return { elements: pushTextAboveContainer(elements, container, textElement), appState: { ...appState, selectedElementIds: { [container.id]: true } }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); @@ -323,7 +323,7 @@ export const actionWrapTextInContainer = register({ ...appState, selectedElementIds: containerIds, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); diff --git a/packages/excalidraw/actions/actionCanvas.tsx b/packages/excalidraw/actions/actionCanvas.tsx index 3b3a12b98a..903a6d84ac 100644 --- a/packages/excalidraw/actions/actionCanvas.tsx +++ b/packages/excalidraw/actions/actionCanvas.tsx @@ -37,8 +37,8 @@ import { import { DEFAULT_CANVAS_BACKGROUND_PICKS } from "../colors"; import type { SceneBounds } from "../element/bounds"; import { setCursor } from "../cursor"; -import { StoreAction } from "../store"; -import { clamp, roundToStep } from "../../math"; +import { CaptureUpdateAction } from "../store"; +import { clamp, roundToStep } from "@excalidraw/math"; export const actionChangeViewBackgroundColor = register({ name: "changeViewBackgroundColor", @@ -54,9 +54,9 @@ export const actionChangeViewBackgroundColor = register({ perform: (_, appState, value) => { return { appState: { ...appState, ...value }, - storeAction: !!value.viewBackgroundColor - ? StoreAction.CAPTURE - : StoreAction.NONE, + captureUpdate: !!value.viewBackgroundColor + ? CaptureUpdateAction.IMMEDIATELY + : CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ elements, appState, updateData, appProps }) => { @@ -115,7 +115,7 @@ export const actionClearCanvas = register({ ? { ...appState.activeTool, type: "selection" } : appState.activeTool, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); @@ -140,7 +140,7 @@ export const actionZoomIn = register({ ), userToFollow: null, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ updateData, appState }) => ( @@ -181,7 +181,7 @@ export const actionZoomOut = register({ ), userToFollow: null, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ updateData, appState }) => ( @@ -222,7 +222,7 @@ export const actionResetZoom = register({ ), userToFollow: null, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ updateData, appState }) => ( @@ -341,7 +341,7 @@ export const zoomToFitBounds = ({ scrollY: centerScroll.scrollY, zoom: { value: newZoomValue }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }; @@ -472,7 +472,7 @@ export const actionToggleTheme = register({ theme: value || (appState.theme === THEME.LIGHT ? THEME.DARK : THEME.LIGHT), }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, keyTest: (event) => event.altKey && event.shiftKey && event.code === CODES.D, @@ -510,7 +510,7 @@ export const actionToggleEraserTool = register({ activeEmbeddable: null, activeTool, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => event.key === KEYS.E, @@ -549,7 +549,7 @@ export const actionToggleHandTool = register({ activeEmbeddable: null, activeTool, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/actionClipboard.tsx b/packages/excalidraw/actions/actionClipboard.tsx index c030b8150e..fffe7b377a 100644 --- a/packages/excalidraw/actions/actionClipboard.tsx +++ b/packages/excalidraw/actions/actionClipboard.tsx @@ -14,7 +14,7 @@ import { getTextFromElements, isTextElement } from "../element"; import { t } from "../i18n"; import { isFirefox } from "../constants"; import { DuplicateIcon, cutIcon, pngIcon, svgIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionCopy = register({ name: "copy", @@ -32,7 +32,7 @@ export const actionCopy = register({ await copyToClipboard(elementsToCopy, app.files, event); } catch (error: any) { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: error.message, @@ -41,7 +41,7 @@ export const actionCopy = register({ } return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, // don't supply a shortcut since we handle this conditionally via onCopy event @@ -67,7 +67,7 @@ export const actionPaste = register({ if (isFirefox) { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: t("hints.firefox_clipboard_write"), @@ -76,7 +76,7 @@ export const actionPaste = register({ } return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: t("errors.asyncPasteFailedOnRead"), @@ -89,7 +89,7 @@ export const actionPaste = register({ } catch (error: any) { console.error(error); return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, errorMessage: t("errors.asyncPasteFailedOnParse"), @@ -98,7 +98,7 @@ export const actionPaste = register({ } return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, // don't supply a shortcut since we handle this conditionally via onCopy event @@ -125,7 +125,7 @@ export const actionCopyAsSvg = register({ perform: async (elements, appState, _data, app) => { if (!app.canvas) { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } @@ -167,7 +167,7 @@ export const actionCopyAsSvg = register({ }), }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } catch (error: any) { console.error(error); @@ -175,7 +175,7 @@ export const actionCopyAsSvg = register({ appState: { errorMessage: error.message, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } }, @@ -193,7 +193,7 @@ export const actionCopyAsPng = register({ perform: async (elements, appState, _data, app) => { if (!app.canvas) { return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } const selectedElements = app.scene.getSelectedElements({ @@ -227,7 +227,7 @@ export const actionCopyAsPng = register({ }), }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } catch (error: any) { console.error(error); @@ -236,7 +236,7 @@ export const actionCopyAsPng = register({ ...appState, errorMessage: error.message, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } }, @@ -263,7 +263,7 @@ export const copyText = register({ throw new Error(t("errors.copyToSystemClipboardFailed")); } return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, predicate: (elements, appState, _, app) => { diff --git a/packages/excalidraw/actions/actionCropEditor.tsx b/packages/excalidraw/actions/actionCropEditor.tsx index 24b64783b7..643f666baa 100644 --- a/packages/excalidraw/actions/actionCropEditor.tsx +++ b/packages/excalidraw/actions/actionCropEditor.tsx @@ -1,6 +1,6 @@ import { register } from "./register"; import { cropIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { ToolButton } from "../components/ToolButton"; import { t } from "../i18n"; import { isImageElement } from "../element/typeChecks"; @@ -25,7 +25,7 @@ export const actionToggleCropEditor = register({ isCropping: false, croppingElementId: selectedElement.id, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, predicate: (elements, appState, _, app) => { diff --git a/packages/excalidraw/actions/actionDeleteSelected.tsx b/packages/excalidraw/actions/actionDeleteSelected.tsx index c66b2c0248..c640f9256f 100644 --- a/packages/excalidraw/actions/actionDeleteSelected.tsx +++ b/packages/excalidraw/actions/actionDeleteSelected.tsx @@ -17,7 +17,7 @@ import { } from "../element/typeChecks"; import { updateActiveTool } from "../utils"; import { TrashIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { getContainerElement } from "../element/textElement"; import { getFrameChildren } from "../frame"; @@ -233,7 +233,7 @@ export const actionDeleteSelected = register({ ...nextAppState, editingLinearElement: null, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } @@ -265,7 +265,7 @@ export const actionDeleteSelected = register({ : [0], }, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } @@ -287,12 +287,12 @@ export const actionDeleteSelected = register({ multiElement: null, activeEmbeddable: null, }, - storeAction: isSomeElementSelected( + captureUpdate: isSomeElementSelected( getNonDeletedElements(elements), appState, ) - ? StoreAction.CAPTURE - : StoreAction.NONE, + ? CaptureUpdateAction.IMMEDIATELY + : CaptureUpdateAction.EVENTUALLY, }; }, keyTest: (event, appState, elements) => diff --git a/packages/excalidraw/actions/actionDistribute.tsx b/packages/excalidraw/actions/actionDistribute.tsx index 4b4166a7e2..15d33b1f1c 100644 --- a/packages/excalidraw/actions/actionDistribute.tsx +++ b/packages/excalidraw/actions/actionDistribute.tsx @@ -12,7 +12,7 @@ import { updateFrameMembershipOfSelectedElements } from "../frame"; import { t } from "../i18n"; import { CODES, KEYS } from "../keys"; import { isSomeElementSelected } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import type { AppClassProperties, AppState } from "../types"; import { arrayToMap, getShortcutKey } from "../utils"; import { register } from "./register"; @@ -60,7 +60,7 @@ export const distributeHorizontally = register({ space: "between", axis: "x", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -91,7 +91,7 @@ export const distributeVertically = register({ space: "between", axis: "y", }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/actionDuplicateSelection.tsx b/packages/excalidraw/actions/actionDuplicateSelection.tsx index 28dddd6407..b28e831c82 100644 --- a/packages/excalidraw/actions/actionDuplicateSelection.tsx +++ b/packages/excalidraw/actions/actionDuplicateSelection.tsx @@ -42,7 +42,7 @@ import { excludeElementsInFramesFromSelection, getSelectedElements, } from "../scene/selection"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionDuplicateSelection = register({ name: "duplicateSelection", @@ -62,7 +62,7 @@ export const actionDuplicateSelection = register({ return { elements, appState: newAppState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } catch { return false; @@ -83,7 +83,7 @@ export const actionDuplicateSelection = register({ return { ...nextState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.D, diff --git a/packages/excalidraw/actions/actionElementLink.ts b/packages/excalidraw/actions/actionElementLink.ts index 504ad14fbb..91469fd63d 100644 --- a/packages/excalidraw/actions/actionElementLink.ts +++ b/packages/excalidraw/actions/actionElementLink.ts @@ -7,7 +7,7 @@ import { } from "../element/elementLink"; import { t } from "../i18n"; import { getSelectedElements } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { register } from "./register"; export const actionCopyElementLink = register({ @@ -42,14 +42,14 @@ export const actionCopyElementLink = register({ closable: true, }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } return { appState, elements, app, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } } catch (error: any) { @@ -60,7 +60,7 @@ export const actionCopyElementLink = register({ appState, elements, app, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, predicate: (elements, appState) => @@ -78,7 +78,12 @@ export const actionLinkToElement = register({ selectedElements.length !== 1 || !canCreateLinkFromElements(selectedElements) ) { - return { elements, appState, app, storeAction: StoreAction.NONE }; + return { + elements, + appState, + app, + captureUpdate: CaptureUpdateAction.EVENTUALLY, + }; } return { @@ -89,7 +94,7 @@ export const actionLinkToElement = register({ sourceElementId: getSelectedElements(elements, appState)[0].id, }, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, predicate: (elements, appState, appProps, app) => { diff --git a/packages/excalidraw/actions/actionElementLock.ts b/packages/excalidraw/actions/actionElementLock.ts index 5e5a91f5d8..eba21f240b 100644 --- a/packages/excalidraw/actions/actionElementLock.ts +++ b/packages/excalidraw/actions/actionElementLock.ts @@ -4,7 +4,7 @@ import { isFrameLikeElement } from "../element/typeChecks"; import type { ExcalidrawElement } from "../element/types"; import { KEYS } from "../keys"; import { getSelectedElements } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { arrayToMap } from "../utils"; import { register } from "./register"; @@ -67,7 +67,7 @@ export const actionToggleElementLock = register({ ? null : appState.selectedLinearElement, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event, appState, elements, app) => { @@ -112,7 +112,7 @@ export const actionUnlockAllElements = register({ lockedElements.map((el) => [el.id, true]), ), }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, label: "labels.elementLock.unlockAll", diff --git a/packages/excalidraw/actions/actionExport.tsx b/packages/excalidraw/actions/actionExport.tsx index 224edf4739..8d18acd898 100644 --- a/packages/excalidraw/actions/actionExport.tsx +++ b/packages/excalidraw/actions/actionExport.tsx @@ -19,7 +19,7 @@ import { nativeFileSystemSupported } from "../data/filesystem"; import type { Theme } from "../element/types"; import "../components/ToolIcon.scss"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionChangeProjectName = register({ name: "changeProjectName", @@ -28,7 +28,7 @@ export const actionChangeProjectName = register({ perform: (_elements, appState, value) => { return { appState: { ...appState, name: value }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ appState, updateData, appProps, data, app }) => ( @@ -48,7 +48,7 @@ export const actionChangeExportScale = register({ perform: (_elements, appState, value) => { return { appState: { ...appState, exportScale: value }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ elements: allElements, appState, updateData }) => { @@ -98,7 +98,7 @@ export const actionChangeExportBackground = register({ perform: (_elements, appState, value) => { return { appState: { ...appState, exportBackground: value }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ appState, updateData }) => ( @@ -118,7 +118,7 @@ export const actionChangeExportEmbedScene = register({ perform: (_elements, appState, value) => { return { appState: { ...appState, exportEmbedScene: value }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ appState, updateData }) => ( @@ -160,7 +160,7 @@ export const actionSaveToActiveFile = register({ : await saveAsJSON(elements, appState, app.files, app.getName()); return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, fileHandle, @@ -182,7 +182,7 @@ export const actionSaveToActiveFile = register({ } else { console.warn(error); } - return { storeAction: StoreAction.NONE }; + return { captureUpdate: CaptureUpdateAction.EVENTUALLY }; } }, keyTest: (event) => @@ -207,7 +207,7 @@ export const actionSaveFileToDisk = register({ app.getName(), ); return { - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, appState: { ...appState, openDialog: null, @@ -221,7 +221,7 @@ export const actionSaveFileToDisk = register({ } else { console.warn(error); } - return { storeAction: StoreAction.NONE }; + return { captureUpdate: CaptureUpdateAction.EVENTUALLY }; } }, keyTest: (event) => @@ -260,7 +260,7 @@ export const actionLoadScene = register({ elements: loadedElements, appState: loadedAppState, files, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } catch (error: any) { if (error?.name === "AbortError") { @@ -271,7 +271,7 @@ export const actionLoadScene = register({ elements, appState: { ...appState, errorMessage: error.message }, files: app.files, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } }, @@ -285,7 +285,7 @@ export const actionExportWithDarkMode = register({ perform: (_elements, appState, value) => { return { appState: { ...appState, exportWithDarkMode: value }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ appState, updateData }) => ( diff --git a/packages/excalidraw/actions/actionFinalize.tsx b/packages/excalidraw/actions/actionFinalize.tsx index 0637e304f0..f2d8c01585 100644 --- a/packages/excalidraw/actions/actionFinalize.tsx +++ b/packages/excalidraw/actions/actionFinalize.tsx @@ -14,8 +14,8 @@ import { import { isBindingElement, isLinearElement } from "../element/typeChecks"; import type { AppState } from "../types"; import { resetCursor } from "../cursor"; -import { StoreAction } from "../store"; -import { pointFrom } from "../../math"; +import { CaptureUpdateAction } from "../store"; +import { pointFrom } from "@excalidraw/math"; import { isPathALoop } from "../shapes"; export const actionFinalize = register({ @@ -52,7 +52,7 @@ export const actionFinalize = register({ cursorButton: "up", editingLinearElement: null, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } } @@ -199,7 +199,7 @@ export const actionFinalize = register({ pendingImageElementId: null, }, // TODO: #7348 we should not capture everything, but if we don't, it leads to incosistencies -> revisit - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event, appState) => diff --git a/packages/excalidraw/actions/actionFlip.test.tsx b/packages/excalidraw/actions/actionFlip.test.tsx index 475aee71e8..94e4721dda 100644 --- a/packages/excalidraw/actions/actionFlip.test.tsx +++ b/packages/excalidraw/actions/actionFlip.test.tsx @@ -2,7 +2,7 @@ import React from "react"; import { Excalidraw } from "../index"; import { render } from "../tests/test-utils"; import { API } from "../tests/helpers/api"; -import { pointFrom } from "../../math"; +import { pointFrom } from "@excalidraw/math"; import { actionFlipHorizontal, actionFlipVertical } from "./actionFlip"; const { h } = window; diff --git a/packages/excalidraw/actions/actionFlip.ts b/packages/excalidraw/actions/actionFlip.ts index 34acc01bf0..80149b8777 100644 --- a/packages/excalidraw/actions/actionFlip.ts +++ b/packages/excalidraw/actions/actionFlip.ts @@ -18,7 +18,7 @@ import { } from "../element/binding"; import { updateFrameMembershipOfSelectedElements } from "../frame"; import { flipHorizontal, flipVertical } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { isArrowElement, isElbowArrow, @@ -47,7 +47,7 @@ export const actionFlipHorizontal = register({ app, ), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => event.shiftKey && event.code === CODES.H, @@ -72,7 +72,7 @@ export const actionFlipVertical = register({ app, ), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/actionFrame.ts b/packages/excalidraw/actions/actionFrame.ts index 4ff8243fcf..ce05b533be 100644 --- a/packages/excalidraw/actions/actionFrame.ts +++ b/packages/excalidraw/actions/actionFrame.ts @@ -9,7 +9,7 @@ import { setCursorForShape } from "../cursor"; import { register } from "./register"; import { isFrameLikeElement } from "../element/typeChecks"; import { frameToolIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { getSelectedElements } from "../scene"; import { newFrameElement } from "../element/newElement"; import { getElementsInGroup } from "../groups"; @@ -49,14 +49,14 @@ export const actionSelectAllElementsInFrame = register({ return acc; }, {} as Record), }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } return { elements, appState, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, predicate: (elements, appState, _, app) => @@ -80,14 +80,14 @@ export const actionRemoveAllElementsFromFrame = register({ [selectedElement.id]: true, }, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; } return { elements, appState, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, predicate: (elements, appState, _, app) => @@ -109,7 +109,7 @@ export const actionupdateFrameRendering = register({ enabled: !appState.frameRendering.enabled, }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState: AppState) => appState.frameRendering.enabled, @@ -139,7 +139,7 @@ export const actionSetFrameAsActiveTool = register({ type: "frame", }), }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, keyTest: (event) => @@ -208,7 +208,7 @@ export const actionWrapSelectionInFrame = register({ appState: { selectedElementIds: { [frame.id]: true }, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); diff --git a/packages/excalidraw/actions/actionGroup.tsx b/packages/excalidraw/actions/actionGroup.tsx index f61986f823..4e98c59c76 100644 --- a/packages/excalidraw/actions/actionGroup.tsx +++ b/packages/excalidraw/actions/actionGroup.tsx @@ -34,7 +34,7 @@ import { replaceAllElementsInFrame, } from "../frame"; import { syncMovedIndices } from "../fractionalIndex"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; const allElementsInSameGroup = (elements: readonly ExcalidrawElement[]) => { if (elements.length >= 2) { @@ -84,7 +84,11 @@ export const actionGroup = register({ ); if (selectedElements.length < 2) { // nothing to group - return { appState, elements, storeAction: StoreAction.NONE }; + return { + appState, + elements, + captureUpdate: CaptureUpdateAction.EVENTUALLY, + }; } // if everything is already grouped into 1 group, there is nothing to do const selectedGroupIds = getSelectedGroupIds(appState); @@ -104,7 +108,11 @@ export const actionGroup = register({ ]); if (combinedSet.size === elementIdsInGroup.size) { // no incremental ids in the selected ids - return { appState, elements, storeAction: StoreAction.NONE }; + return { + appState, + elements, + captureUpdate: CaptureUpdateAction.EVENTUALLY, + }; } } @@ -170,7 +178,7 @@ export const actionGroup = register({ ), }, elements: reorderedElements, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, predicate: (elements, appState, _, app) => @@ -200,7 +208,11 @@ export const actionUngroup = register({ const elementsMap = arrayToMap(elements); if (groupIds.length === 0) { - return { appState, elements, storeAction: StoreAction.NONE }; + return { + appState, + elements, + captureUpdate: CaptureUpdateAction.EVENTUALLY, + }; } let nextElements = [...elements]; @@ -273,7 +285,7 @@ export const actionUngroup = register({ return { appState: { ...appState, ...updateAppState }, elements: nextElements, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/actionHistory.tsx b/packages/excalidraw/actions/actionHistory.tsx index eb52381cea..299a09f3d3 100644 --- a/packages/excalidraw/actions/actionHistory.tsx +++ b/packages/excalidraw/actions/actionHistory.tsx @@ -10,7 +10,7 @@ import { arrayToMap } from "../utils"; import { isWindows } from "../constants"; import type { SceneElementsMap } from "../element/types"; import type { Store } from "../store"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { useEmitter } from "../hooks/useEmitter"; const executeHistoryAction = ( @@ -30,7 +30,7 @@ const executeHistoryAction = ( const result = updater(); if (!result) { - return { storeAction: StoreAction.NONE }; + return { captureUpdate: CaptureUpdateAction.EVENTUALLY }; } const [nextElementsMap, nextAppState] = result; @@ -39,11 +39,11 @@ const executeHistoryAction = ( return { appState: nextAppState, elements: nextElements, - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }; } - return { storeAction: StoreAction.NONE }; + return { captureUpdate: CaptureUpdateAction.EVENTUALLY }; }; type ActionCreator = (history: History, store: Store) => Action; diff --git a/packages/excalidraw/actions/actionLinearEditor.tsx b/packages/excalidraw/actions/actionLinearEditor.tsx index acde9b1e52..1f05755b54 100644 --- a/packages/excalidraw/actions/actionLinearEditor.tsx +++ b/packages/excalidraw/actions/actionLinearEditor.tsx @@ -2,7 +2,7 @@ import { DEFAULT_CATEGORIES } from "../components/CommandPalette/CommandPalette" import { LinearElementEditor } from "../element/linearElementEditor"; import { isElbowArrow, isLinearElement } from "../element/typeChecks"; import type { ExcalidrawLinearElement } from "../element/types"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { register } from "./register"; import { ToolButton } from "../components/ToolButton"; import { t } from "../i18n"; @@ -51,7 +51,7 @@ export const actionToggleLinearEditor = register({ ...appState, editingLinearElement, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ appState, updateData, app }) => { diff --git a/packages/excalidraw/actions/actionLink.tsx b/packages/excalidraw/actions/actionLink.tsx index ae61974862..beb95d2c15 100644 --- a/packages/excalidraw/actions/actionLink.tsx +++ b/packages/excalidraw/actions/actionLink.tsx @@ -5,7 +5,7 @@ import { isEmbeddableElement } from "../element/typeChecks"; import { t } from "../i18n"; import { KEYS } from "../keys"; import { getSelectedElements } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { getShortcutKey } from "../utils"; import { register } from "./register"; @@ -25,7 +25,7 @@ export const actionLink = register({ showHyperlinkPopup: "editor", openMenu: null, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, trackEvent: { category: "hyperlink", action: "click" }, diff --git a/packages/excalidraw/actions/actionMenu.tsx b/packages/excalidraw/actions/actionMenu.tsx index 84a5d1be4a..9e71fe2551 100644 --- a/packages/excalidraw/actions/actionMenu.tsx +++ b/packages/excalidraw/actions/actionMenu.tsx @@ -4,7 +4,7 @@ import { t } from "../i18n"; import { showSelectedShapeActions, getNonDeletedElements } from "../element"; import { register } from "./register"; import { KEYS } from "../keys"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionToggleCanvasMenu = register({ name: "toggleCanvasMenu", @@ -15,7 +15,7 @@ export const actionToggleCanvasMenu = register({ ...appState, openMenu: appState.openMenu === "canvas" ? null : "canvas", }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }), PanelComponent: ({ appState, updateData }) => ( ( event.key === KEYS.QUESTION_MARK, diff --git a/packages/excalidraw/actions/actionNavigate.tsx b/packages/excalidraw/actions/actionNavigate.tsx index c577e975f7..48037200cd 100644 --- a/packages/excalidraw/actions/actionNavigate.tsx +++ b/packages/excalidraw/actions/actionNavigate.tsx @@ -7,7 +7,7 @@ import { microphoneMutedIcon, } from "../components/icons"; import { t } from "../i18n"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import type { Collaborator } from "../types"; import { register } from "./register"; import clsx from "clsx"; @@ -28,7 +28,7 @@ export const actionGoToCollaborator = register({ ...appState, userToFollow: null, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } @@ -42,7 +42,7 @@ export const actionGoToCollaborator = register({ // Close mobile menu openMenu: appState.openMenu === "canvas" ? null : appState.openMenu, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ updateData, data, appState }) => { diff --git a/packages/excalidraw/actions/actionProperties.tsx b/packages/excalidraw/actions/actionProperties.tsx index 1552fc0c86..0c2ad3babf 100644 --- a/packages/excalidraw/actions/actionProperties.tsx +++ b/packages/excalidraw/actions/actionProperties.tsx @@ -1,6 +1,6 @@ import { useEffect, useMemo, useRef, useState } from "react"; import type { AppClassProperties, AppState, Primitive } from "../types"; -import type { StoreActionType } from "../store"; +import type { CaptureUpdateActionType } from "../store"; import { DEFAULT_ELEMENT_BACKGROUND_COLOR_PALETTE, DEFAULT_ELEMENT_BACKGROUND_PICKS, @@ -109,7 +109,7 @@ import { tupleToCoors, } from "../utils"; import { register } from "./register"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { Fonts, getLineHeight } from "../fonts"; import { bindLinearElement, @@ -119,8 +119,8 @@ import { updateBoundElements, } from "../element/binding"; import { LinearElementEditor } from "../element/linearElementEditor"; -import type { LocalPoint } from "../../math"; -import { pointFrom } from "../../math"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; import { Range } from "../components/Range"; const FONT_SIZE_RELATIVE_INCREASE_STEP = 0.1; @@ -271,7 +271,7 @@ const changeFontSize = ( ? [...newFontSizes][0] : fallbackValue ?? appState.currentItemFontSize, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }; @@ -301,9 +301,9 @@ export const actionChangeStrokeColor = register({ ...appState, ...value, }, - storeAction: !!value.currentItemStrokeColor - ? StoreAction.CAPTURE - : StoreAction.NONE, + captureUpdate: !!value.currentItemStrokeColor + ? CaptureUpdateAction.IMMEDIATELY + : CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ elements, appState, updateData, appProps }) => ( @@ -347,9 +347,9 @@ export const actionChangeBackgroundColor = register({ ...appState, ...value, }, - storeAction: !!value.currentItemBackgroundColor - ? StoreAction.CAPTURE - : StoreAction.NONE, + captureUpdate: !!value.currentItemBackgroundColor + ? CaptureUpdateAction.IMMEDIATELY + : CaptureUpdateAction.EVENTUALLY, }; }, PanelComponent: ({ elements, appState, updateData, appProps }) => ( @@ -393,7 +393,7 @@ export const actionChangeFillStyle = register({ }), ), appState: { ...appState, currentItemFillStyle: value }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => { @@ -466,7 +466,7 @@ export const actionChangeStrokeWidth = register({ }), ), appState: { ...appState, currentItemStrokeWidth: value }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => ( @@ -521,7 +521,7 @@ export const actionChangeSloppiness = register({ }), ), appState: { ...appState, currentItemRoughness: value }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => ( @@ -572,7 +572,7 @@ export const actionChangeStrokeStyle = register({ }), ), appState: { ...appState, currentItemStrokeStyle: value }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => ( @@ -627,7 +627,7 @@ export const actionChangeOpacity = register({ true, ), appState: { ...appState, currentItemOpacity: value }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => ( @@ -802,22 +802,23 @@ export const actionChangeFontFamily = register({ ...appState, ...nextAppState, }, - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }; } const { currentItemFontFamily, currentHoveredFontFamily } = value; - let nexStoreAction: StoreActionType = StoreAction.NONE; + let nextCaptureUpdateAction: CaptureUpdateActionType = + CaptureUpdateAction.EVENTUALLY; let nextFontFamily: FontFamilyValues | undefined; let skipOnHoverRender = false; if (currentItemFontFamily) { nextFontFamily = currentItemFontFamily; - nexStoreAction = StoreAction.CAPTURE; + nextCaptureUpdateAction = CaptureUpdateAction.IMMEDIATELY; } else if (currentHoveredFontFamily) { nextFontFamily = currentHoveredFontFamily; - nexStoreAction = StoreAction.NONE; + nextCaptureUpdateAction = CaptureUpdateAction.EVENTUALLY; const selectedTextElements = getSelectedElements(elements, appState, { includeBoundTextElement: true, @@ -850,7 +851,7 @@ export const actionChangeFontFamily = register({ ...appState, ...nextAppState, }, - storeAction: nexStoreAction, + captureUpdate: nextCaptureUpdateAction, }; if (nextFontFamily && !skipOnHoverRender) { @@ -1175,7 +1176,7 @@ export const actionChangeTextAlign = register({ ...appState, currentItemTextAlign: value, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData, app }) => { @@ -1265,7 +1266,7 @@ export const actionChangeVerticalAlign = register({ appState: { ...appState, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData, app }) => { @@ -1350,7 +1351,7 @@ export const actionChangeRoundness = register({ ...appState, currentItemRoundness: value, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => { @@ -1509,7 +1510,7 @@ export const actionChangeArrowhead = register({ ? "currentItemStartArrowhead" : "currentItemEndArrowhead"]: value.type, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => { @@ -1721,7 +1722,7 @@ export const actionChangeArrowType = register({ return { elements: newElements, appState: newState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, PanelComponent: ({ elements, appState, updateData }) => { diff --git a/packages/excalidraw/actions/actionSelectAll.ts b/packages/excalidraw/actions/actionSelectAll.ts index f8f9b775fe..61c278053e 100644 --- a/packages/excalidraw/actions/actionSelectAll.ts +++ b/packages/excalidraw/actions/actionSelectAll.ts @@ -6,7 +6,7 @@ import type { ExcalidrawElement } from "../element/types"; import { isLinearElement } from "../element/typeChecks"; import { LinearElementEditor } from "../element/linearElementEditor"; import { selectAllIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionSelectAll = register({ name: "selectAll", @@ -50,7 +50,7 @@ export const actionSelectAll = register({ ? new LinearElementEditor(elements[0]) : null, }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.A, diff --git a/packages/excalidraw/actions/actionStyles.ts b/packages/excalidraw/actions/actionStyles.ts index 1a17bf9de3..01f8040627 100644 --- a/packages/excalidraw/actions/actionStyles.ts +++ b/packages/excalidraw/actions/actionStyles.ts @@ -23,7 +23,7 @@ import { import { getSelectedElements } from "../scene"; import type { ExcalidrawTextElement } from "../element/types"; import { paintIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { getLineHeight } from "../fonts"; // `copiedStyles` is exported only for tests. @@ -53,7 +53,7 @@ export const actionCopyStyles = register({ ...appState, toast: { message: t("toast.copyStyles") }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, keyTest: (event) => @@ -70,7 +70,7 @@ export const actionPasteStyles = register({ const pastedElement = elementsCopied[0]; const boundTextElement = elementsCopied[1]; if (!isExcalidrawElement(pastedElement)) { - return { elements, storeAction: StoreAction.NONE }; + return { elements, captureUpdate: CaptureUpdateAction.EVENTUALLY }; } const selectedElements = getSelectedElements(elements, appState, { @@ -159,7 +159,7 @@ export const actionPasteStyles = register({ } return element; }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/actionTextAutoResize.ts b/packages/excalidraw/actions/actionTextAutoResize.ts index cbf9684e42..29f54c9a7e 100644 --- a/packages/excalidraw/actions/actionTextAutoResize.ts +++ b/packages/excalidraw/actions/actionTextAutoResize.ts @@ -2,7 +2,7 @@ import { isTextElement } from "../element"; import { newElementWith } from "../element/mutateElement"; import { measureText } from "../element/textMeasurements"; import { getSelectedElements } from "../scene"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import type { AppClassProperties } from "../types"; import { getFontString } from "../utils"; import { register } from "./register"; @@ -42,7 +42,7 @@ export const actionTextAutoResize = register({ } return element; }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, }); diff --git a/packages/excalidraw/actions/actionToggleGridMode.tsx b/packages/excalidraw/actions/actionToggleGridMode.tsx index 3ab4c4ff9f..69d6570574 100644 --- a/packages/excalidraw/actions/actionToggleGridMode.tsx +++ b/packages/excalidraw/actions/actionToggleGridMode.tsx @@ -2,7 +2,7 @@ import { CODES, KEYS } from "../keys"; import { register } from "./register"; import type { AppState } from "../types"; import { gridIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionToggleGridMode = register({ name: "gridMode", @@ -21,7 +21,7 @@ export const actionToggleGridMode = register({ gridModeEnabled: !this.checked!(appState), objectsSnapModeEnabled: false, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState: AppState) => appState.gridModeEnabled, diff --git a/packages/excalidraw/actions/actionToggleObjectsSnapMode.tsx b/packages/excalidraw/actions/actionToggleObjectsSnapMode.tsx index e27decf467..1ae3cbe0ba 100644 --- a/packages/excalidraw/actions/actionToggleObjectsSnapMode.tsx +++ b/packages/excalidraw/actions/actionToggleObjectsSnapMode.tsx @@ -1,6 +1,6 @@ import { magnetIcon } from "../components/icons"; import { CODES, KEYS } from "../keys"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { register } from "./register"; export const actionToggleObjectsSnapMode = register({ @@ -19,7 +19,7 @@ export const actionToggleObjectsSnapMode = register({ objectsSnapModeEnabled: !this.checked!(appState), gridModeEnabled: false, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState) => appState.objectsSnapModeEnabled, diff --git a/packages/excalidraw/actions/actionToggleSearchMenu.ts b/packages/excalidraw/actions/actionToggleSearchMenu.ts index 02a58cd2b4..9261e79c49 100644 --- a/packages/excalidraw/actions/actionToggleSearchMenu.ts +++ b/packages/excalidraw/actions/actionToggleSearchMenu.ts @@ -2,7 +2,7 @@ import { KEYS } from "../keys"; import { register } from "./register"; import type { AppState } from "../types"; import { searchIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { CANVAS_SEARCH_TAB, CLASSES, DEFAULT_SIDEBAR } from "../constants"; export const actionToggleSearchMenu = register({ @@ -29,7 +29,7 @@ export const actionToggleSearchMenu = register({ if (searchInput?.matches(":focus")) { return { appState: { ...appState, openSidebar: null }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; } @@ -44,7 +44,7 @@ export const actionToggleSearchMenu = register({ openSidebar: { name: DEFAULT_SIDEBAR.name, tab: CANVAS_SEARCH_TAB }, openDialog: null, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState: AppState) => appState.gridModeEnabled, diff --git a/packages/excalidraw/actions/actionToggleStats.tsx b/packages/excalidraw/actions/actionToggleStats.tsx index 45402e8ad0..e28d099ae9 100644 --- a/packages/excalidraw/actions/actionToggleStats.tsx +++ b/packages/excalidraw/actions/actionToggleStats.tsx @@ -1,7 +1,7 @@ import { register } from "./register"; import { CODES, KEYS } from "../keys"; import { abacusIcon } from "../components/icons"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionToggleStats = register({ name: "stats", @@ -17,7 +17,7 @@ export const actionToggleStats = register({ ...appState, stats: { ...appState.stats, open: !this.checked!(appState) }, }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState) => appState.stats.open, diff --git a/packages/excalidraw/actions/actionToggleViewMode.tsx b/packages/excalidraw/actions/actionToggleViewMode.tsx index 87dbb94ea8..cae3b095ea 100644 --- a/packages/excalidraw/actions/actionToggleViewMode.tsx +++ b/packages/excalidraw/actions/actionToggleViewMode.tsx @@ -1,6 +1,6 @@ import { eyeIcon } from "../components/icons"; import { CODES, KEYS } from "../keys"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { register } from "./register"; export const actionToggleViewMode = register({ @@ -19,7 +19,7 @@ export const actionToggleViewMode = register({ ...appState, viewModeEnabled: !this.checked!(appState), }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState) => appState.viewModeEnabled, diff --git a/packages/excalidraw/actions/actionToggleZenMode.tsx b/packages/excalidraw/actions/actionToggleZenMode.tsx index 86261443f9..31afd3f3a3 100644 --- a/packages/excalidraw/actions/actionToggleZenMode.tsx +++ b/packages/excalidraw/actions/actionToggleZenMode.tsx @@ -1,6 +1,6 @@ import { coffeeIcon } from "../components/icons"; import { CODES, KEYS } from "../keys"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; import { register } from "./register"; export const actionToggleZenMode = register({ @@ -19,7 +19,7 @@ export const actionToggleZenMode = register({ ...appState, zenModeEnabled: !this.checked!(appState), }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, checked: (appState) => appState.zenModeEnabled, diff --git a/packages/excalidraw/actions/actionZindex.tsx b/packages/excalidraw/actions/actionZindex.tsx index 261b4ab78c..4097b2df1c 100644 --- a/packages/excalidraw/actions/actionZindex.tsx +++ b/packages/excalidraw/actions/actionZindex.tsx @@ -15,7 +15,7 @@ import { SendToBackIcon, } from "../components/icons"; import { isDarwin } from "../constants"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; export const actionSendBackward = register({ name: "sendBackward", @@ -27,7 +27,7 @@ export const actionSendBackward = register({ return { elements: moveOneLeft(elements, appState), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyPriority: 40, @@ -57,7 +57,7 @@ export const actionBringForward = register({ return { elements: moveOneRight(elements, appState), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyPriority: 40, @@ -87,7 +87,7 @@ export const actionSendToBack = register({ return { elements: moveAllLeft(elements, appState), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => @@ -125,7 +125,7 @@ export const actionBringToFront = register({ return { elements: moveAllRight(elements, appState), appState, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }; }, keyTest: (event) => diff --git a/packages/excalidraw/actions/types.ts b/packages/excalidraw/actions/types.ts index 1627b2fcae..71ac9f4ab4 100644 --- a/packages/excalidraw/actions/types.ts +++ b/packages/excalidraw/actions/types.ts @@ -10,7 +10,7 @@ import type { BinaryFiles, UIAppState, } from "../types"; -import type { StoreActionType } from "../store"; +import type { CaptureUpdateActionType } from "../store"; export type ActionSource = | "ui" @@ -25,7 +25,7 @@ export type ActionResult = elements?: readonly ExcalidrawElement[] | null; appState?: Partial | null; files?: BinaryFiles | null; - storeAction: StoreActionType; + captureUpdate: CaptureUpdateActionType; replaceFiles?: boolean; } | false; diff --git a/packages/excalidraw/charts.ts b/packages/excalidraw/charts.ts index 6e379c30a5..65d17e2288 100644 --- a/packages/excalidraw/charts.ts +++ b/packages/excalidraw/charts.ts @@ -1,5 +1,5 @@ -import type { Radians } from "../math"; -import { pointFrom } from "../math"; +import type { Radians } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; import { COLOR_PALETTE, DEFAULT_CHART_COLOR_INDEX, diff --git a/packages/excalidraw/clients.ts b/packages/excalidraw/clients.ts index afff1eeb64..29d240011e 100644 --- a/packages/excalidraw/clients.ts +++ b/packages/excalidraw/clients.ts @@ -3,6 +3,7 @@ import { COLOR_VOICE_CALL, COLOR_WHITE, THEME, + UserIdleState, } from "./constants"; import { roundRect } from "./renderer/roundRect"; import type { InteractiveCanvasRenderConfig } from "./scene/types"; @@ -11,7 +12,6 @@ import type { InteractiveCanvasAppState, SocketId, } from "./types"; -import { UserIdleState } from "./types"; function hashToInteger(id: string) { let hash = 0; diff --git a/packages/excalidraw/components/App.tsx b/packages/excalidraw/components/App.tsx index 3262033595..15dabb5faa 100644 --- a/packages/excalidraw/components/App.tsx +++ b/packages/excalidraw/components/App.tsx @@ -236,8 +236,8 @@ import { getElementShape, isPathALoop, } from "../shapes"; -import { getSelectionBoxShape } from "../../utils/geometry/shape"; -import { isPointInShape } from "../../utils/collision"; +import { getSelectionBoxShape } from "@excalidraw/utils/geometry/shape"; +import { isPointInShape } from "@excalidraw/utils/collision"; import type { AppClassProperties, AppProps, @@ -412,7 +412,7 @@ import { COLOR_PALETTE } from "../colors"; import { ElementCanvasButton } from "./MagicButton"; import { MagicIcon, copyIcon, fullscreenIcon } from "./icons"; import FollowMode from "./FollowMode/FollowMode"; -import { Store, StoreAction } from "../store"; +import { Store, CaptureUpdateAction } from "../store"; import { AnimationFrameHandler } from "../animation-frame-handler"; import { AnimatedTrail } from "../animated-trail"; import { LaserTrails } from "../laser-trails"; @@ -441,7 +441,7 @@ import { getLinkDirectionFromKey, } from "../element/flowchart"; import { searchItemInFocusAtom } from "./SearchMenu"; -import type { LocalPoint, Radians } from "../../math"; +import type { LocalPoint, Radians } from "@excalidraw/math"; import { clamp, pointFrom, @@ -453,7 +453,7 @@ import { vectorSubtract, vectorDot, vectorNormalize, -} from "../../math"; +} from "@excalidraw/math"; import { cropElement } from "../element/cropElement"; import { wrapText } from "../element/textWrapping"; import { actionCopyElementLink } from "../actions/actionElementLink"; @@ -2097,12 +2097,12 @@ class App extends React.Component { if (shouldUpdateStrokeColor) { this.syncActionResult({ appState: { ...this.state, currentItemStrokeColor: color }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); } else { this.syncActionResult({ appState: { ...this.state, currentItemBackgroundColor: color }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); } } else { @@ -2116,7 +2116,7 @@ class App extends React.Component { } return el; }), - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); } }, @@ -2137,9 +2137,9 @@ class App extends React.Component { return; } - if (actionResult.storeAction === StoreAction.UPDATE) { + if (actionResult.captureUpdate === CaptureUpdateAction.NEVER) { this.store.shouldUpdateSnapshot(); - } else if (actionResult.storeAction === StoreAction.CAPTURE) { + } else if (actionResult.captureUpdate === CaptureUpdateAction.IMMEDIATELY) { this.store.shouldCaptureIncrement(); } @@ -2214,7 +2214,10 @@ class App extends React.Component { didUpdate = true; } - if (!didUpdate && actionResult.storeAction !== StoreAction.NONE) { + if ( + !didUpdate && + actionResult.captureUpdate !== CaptureUpdateAction.EVENTUALLY + ) { this.scene.triggerUpdate(); } }); @@ -2342,7 +2345,7 @@ class App extends React.Component { this.resetHistory(); this.syncActionResult({ ...scene, - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // clear the shape and image cache so that any images in initialData @@ -2822,7 +2825,7 @@ class App extends React.Component { this.state.editingLinearElement && !this.state.selectedElementIds[this.state.editingLinearElement.elementId] ) { - // defer so that the storeAction flag isn't reset via current update + // defer so that the shouldCaptureIncrement flag isn't reset via current update setTimeout(() => { // execute only if the condition still holds when the deferred callback // executes (it can be scheduled multiple times depending on how @@ -3883,12 +3886,25 @@ class App extends React.Component { elements?: SceneData["elements"]; appState?: Pick | null; collaborators?: SceneData["collaborators"]; - /** @default StoreAction.NONE */ - storeAction?: SceneData["storeAction"]; + /** + * Controls which updates should be captured by the `Store`. Captured updates are emmitted and listened to by other components, such as `History` for undo / redo purposes. + * + * - `CaptureUpdateAction.IMMEDIATELY`: Updates are immediately undoable. Use for most local updates. + * - `CaptureUpdateAction.NEVER`: Updates never make it to undo/redo stack. Use for remote updates or scene initialization. + * - `CaptureUpdateAction.EVENTUALLY`: Updates will be eventually be captured as part of a future increment. + * + * Check [API docs](https://docs.excalidraw.com/docs/@excalidraw/excalidraw/api/props/excalidraw-api#captureUpdate) for more details. + * + * @default CaptureUpdateAction.EVENTUALLY + */ + captureUpdate?: SceneData["captureUpdate"]; }) => { const nextElements = syncInvalidIndices(sceneData.elements ?? []); - if (sceneData.storeAction && sceneData.storeAction !== StoreAction.NONE) { + if ( + sceneData.captureUpdate && + sceneData.captureUpdate !== CaptureUpdateAction.EVENTUALLY + ) { const prevCommittedAppState = this.store.snapshot.appState; const prevCommittedElements = this.store.snapshot.elements; @@ -3905,12 +3921,12 @@ class App extends React.Component { // WARN: store action always performs deep clone of changed elements, for ephemeral remote updates (i.e. remote dragging, resizing, drawing) we might consider doing something smarter // do NOT schedule store actions (execute after re-render), as it might cause unexpected concurrency issues if not handled well - if (sceneData.storeAction === StoreAction.CAPTURE) { + if (sceneData.captureUpdate === CaptureUpdateAction.IMMEDIATELY) { this.store.captureIncrement( nextCommittedElements, nextCommittedAppState, ); - } else if (sceneData.storeAction === StoreAction.UPDATE) { + } else if (sceneData.captureUpdate === CaptureUpdateAction.NEVER) { this.store.updateSnapshot( nextCommittedElements, nextCommittedAppState, @@ -4590,7 +4606,9 @@ class App extends React.Component { if (!event.altKey) { if (this.flowChartNavigator.isExploring) { this.flowChartNavigator.clear(); - this.syncActionResult({ storeAction: StoreAction.CAPTURE }); + this.syncActionResult({ + captureUpdate: CaptureUpdateAction.IMMEDIATELY, + }); } } @@ -4637,7 +4655,9 @@ class App extends React.Component { } this.flowChartCreator.clear(); - this.syncActionResult({ storeAction: StoreAction.CAPTURE }); + this.syncActionResult({ + captureUpdate: CaptureUpdateAction.IMMEDIATELY, + }); } } }); @@ -6376,10 +6396,10 @@ class App extends React.Component { this.state, ), }, - storeAction: + captureUpdate: this.state.openDialog?.name === "elementLinkSelector" - ? StoreAction.NONE - : StoreAction.UPDATE, + ? CaptureUpdateAction.EVENTUALLY + : CaptureUpdateAction.NEVER, }); return; } @@ -9042,7 +9062,7 @@ class App extends React.Component { appState: { newElement: null, }, - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); return; @@ -9212,7 +9232,7 @@ class App extends React.Component { elements: this.scene .getElementsIncludingDeleted() .filter((el) => el.id !== resizingElement.id), - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); } @@ -10183,7 +10203,7 @@ class App extends React.Component { isLoading: false, }, replaceFiles: true, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); return; } catch (error: any) { @@ -10312,7 +10332,7 @@ class App extends React.Component { isLoading: false, }, replaceFiles: true, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); } else if (ret.type === MIME_TYPES.excalidrawlib) { await this.library diff --git a/packages/excalidraw/components/ImageExportDialog.tsx b/packages/excalidraw/components/ImageExportDialog.tsx index 8c225ab542..d06f4a8428 100644 --- a/packages/excalidraw/components/ImageExportDialog.tsx +++ b/packages/excalidraw/components/ImageExportDialog.tsx @@ -23,7 +23,7 @@ import { nativeFileSystemSupported } from "../data/filesystem"; import type { NonDeletedExcalidrawElement } from "../element/types"; import { t } from "../i18n"; import { isSomeElementSelected } from "../scene"; -import { exportToCanvas } from "../../utils/export"; +import { exportToCanvas } from "@excalidraw/utils/export"; import { copyIcon, downloadIcon, helpIcon } from "./icons"; import { Dialog } from "./Dialog"; diff --git a/packages/excalidraw/components/LayerUI.tsx b/packages/excalidraw/components/LayerUI.tsx index 69bd398cb4..ecd032bcd0 100644 --- a/packages/excalidraw/components/LayerUI.tsx +++ b/packages/excalidraw/components/LayerUI.tsx @@ -1,12 +1,7 @@ import clsx from "clsx"; import React from "react"; import type { ActionManager } from "../actions/manager"; -import { - CLASSES, - DEFAULT_SIDEBAR, - LIBRARY_SIDEBAR_WIDTH, - TOOL_TYPE, -} from "../constants"; +import { CLASSES, DEFAULT_SIDEBAR, TOOL_TYPE } from "../constants"; import { showSelectedShapeActions } from "../element"; import type { NonDeletedExcalidrawElement } from "../element/types"; import type { Language } from "../i18n"; @@ -531,7 +526,7 @@ const LayerUI = ({ appState.openSidebar && isSidebarDocked && device.editor.canFitSidebar - ? { width: `calc(100% - ${LIBRARY_SIDEBAR_WIDTH}px)` } + ? { width: `calc(100% - var(--right-sidebar-width)px)` } : {} } > diff --git a/packages/excalidraw/components/PublishLibrary.tsx b/packages/excalidraw/components/PublishLibrary.tsx index f3d0fe1b46..fe68f880db 100644 --- a/packages/excalidraw/components/PublishLibrary.tsx +++ b/packages/excalidraw/components/PublishLibrary.tsx @@ -7,7 +7,7 @@ import { t } from "../i18n"; import Trans from "./Trans"; import type { LibraryItems, LibraryItem, UIAppState } from "../types"; -import { exportToCanvas, exportToSvg } from "../../utils/export"; +import { exportToCanvas, exportToSvg } from "@excalidraw/utils/export"; import { EDITOR_LS_KEYS, EXPORT_DATA_TYPES, diff --git a/packages/excalidraw/components/SearchMenu.tsx b/packages/excalidraw/components/SearchMenu.tsx index f9b3143f35..873de5adbe 100644 --- a/packages/excalidraw/components/SearchMenu.tsx +++ b/packages/excalidraw/components/SearchMenu.tsx @@ -3,7 +3,7 @@ import { collapseDownIcon, upIcon, searchIcon } from "./icons"; import { TextField } from "./TextField"; import { Button } from "./Button"; import { useApp, useExcalidrawSetAppState } from "./App"; -import { debounce } from "lodash"; +import debounce from "lodash.debounce"; import type { AppClassProperties } from "../types"; import { isTextElement, newTextElement } from "../element"; import type { ExcalidrawTextElement } from "../element/types"; @@ -18,7 +18,7 @@ import { CLASSES, EVENT } from "../constants"; import { useStable } from "../hooks/useStable"; import "./SearchMenu.scss"; -import { round } from "../../math"; +import { round } from "@excalidraw/math"; import { measureText } from "../element/textMeasurements"; const searchQueryAtom = atom(""); diff --git a/packages/excalidraw/components/Sidebar/Sidebar.scss b/packages/excalidraw/components/Sidebar/Sidebar.scss index 2571d128fe..c7776d1c69 100644 --- a/packages/excalidraw/components/Sidebar/Sidebar.scss +++ b/packages/excalidraw/components/Sidebar/Sidebar.scss @@ -30,7 +30,7 @@ overflow: hidden; border-radius: 0; - width: calc(#{$right-sidebar-width} - var(--space-factor) * 2); + width: calc(var(--right-sidebar-width) - var(--space-factor) * 2); border-left: 1px solid var(--sidebar-border-color); diff --git a/packages/excalidraw/components/Sidebar/Sidebar.tsx b/packages/excalidraw/components/Sidebar/Sidebar.tsx index 7c747d2f48..ad6c9fe419 100644 --- a/packages/excalidraw/components/Sidebar/Sidebar.tsx +++ b/packages/excalidraw/components/Sidebar/Sidebar.tsx @@ -136,6 +136,9 @@ export const SidebarInner = forwardRef( diff --git a/packages/excalidraw/components/Stats/Angle.tsx b/packages/excalidraw/components/Stats/Angle.tsx index b7a98a4376..409476ada7 100644 --- a/packages/excalidraw/components/Stats/Angle.tsx +++ b/packages/excalidraw/components/Stats/Angle.tsx @@ -8,8 +8,8 @@ import type { DragInputCallbackType } from "./DragInput"; import { getStepSizedValue, isPropertyEditable, updateBindings } from "./utils"; import type Scene from "../../scene/Scene"; import type { AppState } from "../../types"; -import type { Degrees } from "../../../math"; -import { degreesToRadians, radiansToDegrees } from "../../../math"; +import type { Degrees } from "@excalidraw/math"; +import { degreesToRadians, radiansToDegrees } from "@excalidraw/math"; interface AngleProps { element: ExcalidrawElement; diff --git a/packages/excalidraw/components/Stats/Dimension.tsx b/packages/excalidraw/components/Stats/Dimension.tsx index 4e5a3825d1..ce096d2806 100644 --- a/packages/excalidraw/components/Stats/Dimension.tsx +++ b/packages/excalidraw/components/Stats/Dimension.tsx @@ -12,7 +12,7 @@ import { getUncroppedWidthAndHeight, } from "../../element/cropElement"; import { mutateElement } from "../../element/mutateElement"; -import { clamp, round } from "../../../math"; +import { clamp, round } from "@excalidraw/math"; interface DimensionDragInputProps { property: "width" | "height"; diff --git a/packages/excalidraw/components/Stats/DragInput.tsx b/packages/excalidraw/components/Stats/DragInput.tsx index 77cc942cf5..82d6419c0b 100644 --- a/packages/excalidraw/components/Stats/DragInput.tsx +++ b/packages/excalidraw/components/Stats/DragInput.tsx @@ -8,7 +8,7 @@ import { useApp } from "../App"; import { InlineIcon } from "../InlineIcon"; import type { StatsInputProperty } from "./utils"; import { SMALLEST_DELTA } from "./utils"; -import { StoreAction } from "../../store"; +import { CaptureUpdateAction } from "../../store"; import type Scene from "../../scene/Scene"; import "./DragInput.scss"; @@ -132,7 +132,9 @@ const StatsDragInput = < originalAppState: appState, setInputValue: (value) => setInputValue(String(value)), }); - app.syncActionResult({ storeAction: StoreAction.CAPTURE }); + app.syncActionResult({ + captureUpdate: CaptureUpdateAction.IMMEDIATELY, + }); } }; @@ -276,7 +278,9 @@ const StatsDragInput = < false, ); - app.syncActionResult({ storeAction: StoreAction.CAPTURE }); + app.syncActionResult({ + captureUpdate: CaptureUpdateAction.IMMEDIATELY, + }); lastPointer = null; accumulatedChange = 0; diff --git a/packages/excalidraw/components/Stats/MultiAngle.tsx b/packages/excalidraw/components/Stats/MultiAngle.tsx index 6297cfe16e..d9a78825a4 100644 --- a/packages/excalidraw/components/Stats/MultiAngle.tsx +++ b/packages/excalidraw/components/Stats/MultiAngle.tsx @@ -9,8 +9,8 @@ import DragInput from "./DragInput"; import type { DragInputCallbackType } from "./DragInput"; import { getStepSizedValue, isPropertyEditable } from "./utils"; import type { AppState } from "../../types"; -import type { Degrees } from "../../../math"; -import { degreesToRadians, radiansToDegrees } from "../../../math"; +import type { Degrees } from "@excalidraw/math"; +import { degreesToRadians, radiansToDegrees } from "@excalidraw/math"; interface MultiAngleProps { elements: readonly ExcalidrawElement[]; diff --git a/packages/excalidraw/components/Stats/MultiDimension.tsx b/packages/excalidraw/components/Stats/MultiDimension.tsx index c02e870896..04f1937478 100644 --- a/packages/excalidraw/components/Stats/MultiDimension.tsx +++ b/packages/excalidraw/components/Stats/MultiDimension.tsx @@ -23,7 +23,7 @@ import { getAtomicUnits, getStepSizedValue, isPropertyEditable } from "./utils"; import { getElementsInAtomicUnit } from "./utils"; import type { AtomicUnit } from "./utils"; import { MIN_WIDTH_OR_HEIGHT } from "../../constants"; -import { pointFrom, type GlobalPoint } from "../../../math"; +import { pointFrom, type GlobalPoint } from "@excalidraw/math"; interface MultiDimensionProps { property: "width" | "height"; diff --git a/packages/excalidraw/components/Stats/MultiPosition.tsx b/packages/excalidraw/components/Stats/MultiPosition.tsx index 3b5db064e4..8a29aa66dc 100644 --- a/packages/excalidraw/components/Stats/MultiPosition.tsx +++ b/packages/excalidraw/components/Stats/MultiPosition.tsx @@ -13,7 +13,7 @@ import { useMemo } from "react"; import { getElementsInAtomicUnit, moveElement } from "./utils"; import type { AtomicUnit } from "./utils"; import type { AppState } from "../../types"; -import { pointFrom, pointRotateRads } from "../../../math"; +import { pointFrom, pointRotateRads } from "@excalidraw/math"; interface MultiPositionProps { property: "x" | "y"; diff --git a/packages/excalidraw/components/Stats/Position.tsx b/packages/excalidraw/components/Stats/Position.tsx index c2307cd6db..038e58ebc2 100644 --- a/packages/excalidraw/components/Stats/Position.tsx +++ b/packages/excalidraw/components/Stats/Position.tsx @@ -4,7 +4,7 @@ import type { DragInputCallbackType } from "./DragInput"; import { getStepSizedValue, moveElement } from "./utils"; import type Scene from "../../scene/Scene"; import type { AppState } from "../../types"; -import { clamp, pointFrom, pointRotateRads, round } from "../../../math"; +import { clamp, pointFrom, pointRotateRads, round } from "@excalidraw/math"; import { isImageElement } from "../../element/typeChecks"; import { getFlipAdjustedCropPosition, diff --git a/packages/excalidraw/components/Stats/index.tsx b/packages/excalidraw/components/Stats/index.tsx index 88a05f7df2..2ccd93ca26 100644 --- a/packages/excalidraw/components/Stats/index.tsx +++ b/packages/excalidraw/components/Stats/index.tsx @@ -9,7 +9,7 @@ import type { } from "../../types"; import { CloseIcon } from "../icons"; import { Island } from "../Island"; -import { throttle } from "lodash"; +import throttle from "lodash.throttle"; import Dimension from "./Dimension"; import Angle from "./Angle"; import FontSize from "./FontSize"; @@ -30,7 +30,7 @@ import clsx from "clsx"; import "./Stats.scss"; import { isGridModeEnabled } from "../../snapping"; import { getUncroppedWidthAndHeight } from "../../element/cropElement"; -import { round } from "../../../math"; +import { round } from "@excalidraw/math"; import { frameAndChildrenSelectedTogether } from "../../frame"; interface StatsProps { diff --git a/packages/excalidraw/components/Stats/stats.test.tsx b/packages/excalidraw/components/Stats/stats.test.tsx index fc981ce6c6..49d6a625f9 100644 --- a/packages/excalidraw/components/Stats/stats.test.tsx +++ b/packages/excalidraw/components/Stats/stats.test.tsx @@ -24,8 +24,8 @@ import { getCommonBounds, isTextElement } from "../../element"; import { API } from "../../tests/helpers/api"; import { actionGroup } from "../../actions"; import { isInGroup } from "../../groups"; -import type { Degrees } from "../../../math"; -import { degreesToRadians, pointFrom, pointRotateRads } from "../../../math"; +import type { Degrees } from "@excalidraw/math"; +import { degreesToRadians, pointFrom, pointRotateRads } from "@excalidraw/math"; const { h } = window; const mouse = new Pointer("mouse"); diff --git a/packages/excalidraw/components/Stats/utils.ts b/packages/excalidraw/components/Stats/utils.ts index 46c8cb9826..61555baeb8 100644 --- a/packages/excalidraw/components/Stats/utils.ts +++ b/packages/excalidraw/components/Stats/utils.ts @@ -1,5 +1,5 @@ -import type { Radians } from "../../../math"; -import { pointFrom, pointRotateRads } from "../../../math"; +import type { Radians } from "@excalidraw/math"; +import { pointFrom, pointRotateRads } from "@excalidraw/math"; import { bindOrUnbindLinearElements, updateBoundElements, diff --git a/packages/excalidraw/components/TTDDialog/TTDDialog.tsx b/packages/excalidraw/components/TTDDialog/TTDDialog.tsx index a683d80ce6..c77dfbf682 100644 --- a/packages/excalidraw/components/TTDDialog/TTDDialog.tsx +++ b/packages/excalidraw/components/TTDDialog/TTDDialog.tsx @@ -29,7 +29,7 @@ import { atom, useAtom } from "../../editor-jotai"; import { trackEvent } from "../../analytics"; import { InlineIcon } from "../InlineIcon"; import { TTDDialogSubmitShortcut } from "./TTDDialogSubmitShortcut"; -import { isFiniteNumber } from "../../../math"; +import { isFiniteNumber } from "@excalidraw/math"; const MIN_PROMPT_LENGTH = 3; const MAX_PROMPT_LENGTH = 1000; diff --git a/packages/excalidraw/components/hyperlink/Hyperlink.tsx b/packages/excalidraw/components/hyperlink/Hyperlink.tsx index da187ef8da..4d3dce640c 100644 --- a/packages/excalidraw/components/hyperlink/Hyperlink.tsx +++ b/packages/excalidraw/components/hyperlink/Hyperlink.tsx @@ -34,7 +34,7 @@ import { trackEvent } from "../../analytics"; import { useAppProps, useDevice, useExcalidrawAppState } from "../App"; import { isEmbeddableElement } from "../../element/typeChecks"; import { getLinkHandleFromCoords } from "./helpers"; -import { pointFrom, type GlobalPoint } from "../../../math"; +import { pointFrom, type GlobalPoint } from "@excalidraw/math"; import { isElementLink } from "../../element/elementLink"; import "./Hyperlink.scss"; diff --git a/packages/excalidraw/components/hyperlink/helpers.ts b/packages/excalidraw/components/hyperlink/helpers.ts index 15c06a9f4e..75c5dad9c0 100644 --- a/packages/excalidraw/components/hyperlink/helpers.ts +++ b/packages/excalidraw/components/hyperlink/helpers.ts @@ -1,5 +1,5 @@ -import type { GlobalPoint, Radians } from "../../../math"; -import { pointFrom, pointRotateRads } from "../../../math"; +import type { GlobalPoint, Radians } from "@excalidraw/math"; +import { pointFrom, pointRotateRads } from "@excalidraw/math"; import { MIME_TYPES } from "../../constants"; import type { Bounds } from "../../element/bounds"; import { getElementAbsoluteCoords } from "../../element/bounds"; diff --git a/packages/excalidraw/constants.ts b/packages/excalidraw/constants.ts index b01dc98ee8..616ced1a76 100644 --- a/packages/excalidraw/constants.ts +++ b/packages/excalidraw/constants.ts @@ -1,4 +1,3 @@ -import cssVariables from "./css/variables.module.scss"; import type { AppProps, AppState } from "./types"; import type { ExcalidrawElement, FontFamilyValues } from "./element/types"; import { COLOR_PALETTE } from "./colors"; @@ -269,7 +268,8 @@ export const IDLE_THRESHOLD = 60_000; // Report a user active each ACTIVE_THRESHOLD milliseconds export const ACTIVE_THRESHOLD = 3_000; -export const THEME_FILTER = cssVariables.themeFilter; +// duplicates --theme-filter, should be removed soon +export const THEME_FILTER = "invert(93%) hue-rotate(180deg)"; export const URL_QUERY_KEYS = { addLibrary: "addLibrary", @@ -304,8 +304,6 @@ export const MQ_MAX_HEIGHT_LANDSCAPE = 500; export const MQ_RIGHT_SIDEBAR_MIN_WIDTH = 1229; // ----------------------------------------------------------------------------- -export const LIBRARY_SIDEBAR_WIDTH = parseInt(cssVariables.rightSidebarWidth); - export const MAX_DECIMALS_FOR_SVG_EXPORT = 2; export const EXPORT_SCALES = [1, 2, 3]; @@ -461,3 +459,9 @@ export const ELEMENT_LINK_KEY = "element"; /** used in tests */ export const ORIG_ID = Symbol.for("__test__originalId__"); + +export enum UserIdleState { + ACTIVE = "active", + AWAY = "away", + IDLE = "idle", +} diff --git a/packages/excalidraw/css/theme.scss b/packages/excalidraw/css/theme.scss index a531d5bb74..fd6a8dacb5 100644 --- a/packages/excalidraw/css/theme.scss +++ b/packages/excalidraw/css/theme.scss @@ -170,7 +170,7 @@ } &.theme--dark { - --theme-filter: #{$theme-filter}; + --theme-filter: invert(93%) hue-rotate(180deg); --button-destructive-bg-color: #5a0000; --button-destructive-color: #{$oc-red-3}; diff --git a/packages/excalidraw/css/variables.module.scss b/packages/excalidraw/css/variables.module.scss index 42e325a4cf..c360c0dc6b 100644 --- a/packages/excalidraw/css/variables.module.scss +++ b/packages/excalidraw/css/variables.module.scss @@ -188,11 +188,3 @@ box-shadow: 0 0 0 1px var(--color-brand-active); } } - -$theme-filter: "invert(93%) hue-rotate(180deg)"; -$right-sidebar-width: "302px"; - -:export { - themeFilter: unquote($theme-filter); - rightSidebarWidth: unquote($right-sidebar-width); -} diff --git a/packages/excalidraw/data/restore.ts b/packages/excalidraw/data/restore.ts index 550b88071a..837ca27def 100644 --- a/packages/excalidraw/data/restore.ts +++ b/packages/excalidraw/data/restore.ts @@ -57,8 +57,8 @@ import { getNormalizedGridStep, getNormalizedZoom, } from "../scene"; -import type { LocalPoint, Radians } from "../../math"; -import { isFiniteNumber, pointFrom } from "../../math"; +import type { LocalPoint, Radians } from "@excalidraw/math"; +import { isFiniteNumber, pointFrom } from "@excalidraw/math"; import { detectLineHeight } from "../element/textMeasurements"; type RestoredAppState = Omit< diff --git a/packages/excalidraw/data/transform.test.ts b/packages/excalidraw/data/transform.test.ts index 98a62daf7e..a36af0c352 100644 --- a/packages/excalidraw/data/transform.test.ts +++ b/packages/excalidraw/data/transform.test.ts @@ -2,7 +2,7 @@ import { vi } from "vitest"; import type { ExcalidrawElementSkeleton } from "./transform"; import { convertToExcalidrawElements } from "./transform"; import type { ExcalidrawArrowElement } from "../element/types"; -import { pointFrom } from "../../math"; +import { pointFrom } from "@excalidraw/math"; const opts = { regenerateIds: false }; diff --git a/packages/excalidraw/data/transform.ts b/packages/excalidraw/data/transform.ts index f15de763c3..023740cf16 100644 --- a/packages/excalidraw/data/transform.ts +++ b/packages/excalidraw/data/transform.ts @@ -53,7 +53,7 @@ import { randomId } from "../random"; import { syncInvalidIndices } from "../fractionalIndex"; import { getLineHeight } from "../fonts"; import { isArrowElement } from "../element/typeChecks"; -import { pointFrom, type LocalPoint } from "../../math"; +import { pointFrom, type LocalPoint } from "@excalidraw/math"; import { measureText, normalizeText } from "../element/textMeasurements"; export type ValidLinearElement = { diff --git a/packages/excalidraw/element/binding.ts b/packages/excalidraw/element/binding.ts index 2ac8b7c698..d72b846d9a 100644 --- a/packages/excalidraw/element/binding.ts +++ b/packages/excalidraw/element/binding.ts @@ -19,7 +19,7 @@ import type { import type { Bounds } from "./bounds"; import { getCenterForBounds } from "./bounds"; import type { AppState } from "../types"; -import { isPointOnShape } from "../../utils/collision"; +import { isPointOnShape } from "@excalidraw/utils/collision"; import { isArrowElement, isBindableElement, @@ -53,7 +53,7 @@ import { vectorToHeading, type Heading, } from "./heading"; -import type { LocalPoint, Radians } from "../../math"; +import type { LocalPoint, Radians } from "@excalidraw/math"; import { lineSegment, pointFrom, @@ -69,7 +69,7 @@ import { vectorCross, pointsEqual, lineSegmentIntersectionPoints, -} from "../../math"; +} from "@excalidraw/math"; import { intersectElementWithLineSegment } from "./collision"; import { distanceToBindableElement } from "./distance"; diff --git a/packages/excalidraw/element/bounds.test.ts b/packages/excalidraw/element/bounds.test.ts index ffa89bb3e8..9d91d09255 100644 --- a/packages/excalidraw/element/bounds.test.ts +++ b/packages/excalidraw/element/bounds.test.ts @@ -1,5 +1,5 @@ -import type { LocalPoint } from "../../math"; -import { pointFrom } from "../../math"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; import { ROUNDNESS } from "../constants"; import { arrayToMap } from "../utils"; import { getElementAbsoluteCoords, getElementBounds } from "./bounds"; diff --git a/packages/excalidraw/element/bounds.ts b/packages/excalidraw/element/bounds.ts index 19cde12d5b..6b50103701 100644 --- a/packages/excalidraw/element/bounds.ts +++ b/packages/excalidraw/element/bounds.ts @@ -30,7 +30,7 @@ import type { LineSegment, LocalPoint, Radians, -} from "../../math"; +} from "@excalidraw/math"; import { degreesToRadians, lineSegment, @@ -38,7 +38,7 @@ import { pointDistance, pointFromArray, pointRotateRads, -} from "../../math"; +} from "@excalidraw/math"; import type { Mutable } from "../utility-types"; export type RectangleBox = { diff --git a/packages/excalidraw/element/collision.ts b/packages/excalidraw/element/collision.ts index bbd89cfa5d..b0a2ce9a53 100644 --- a/packages/excalidraw/element/collision.ts +++ b/packages/excalidraw/element/collision.ts @@ -8,9 +8,9 @@ import type { } from "./types"; import { getElementBounds } from "./bounds"; import type { FrameNameBounds } from "../types"; -import type { GeometricShape } from "../../utils/geometry/shape"; -import { getPolygonShape } from "../../utils/geometry/shape"; -import { isPointInShape, isPointOnShape } from "../../utils/collision"; +import type { GeometricShape } from "@excalidraw/utils/geometry/shape"; +import { getPolygonShape } from "@excalidraw/utils/geometry/shape"; +import { isPointInShape, isPointOnShape } from "@excalidraw/utils/collision"; import { isTransparent } from "../utils"; import { hasBoundTextElement, @@ -25,7 +25,7 @@ import type { LocalPoint, Polygon, Radians, -} from "../../math"; +} from "@excalidraw/math"; import { curveIntersectLineSegment, isPointWithinBounds, @@ -35,8 +35,11 @@ import { pointFrom, pointRotateRads, pointsEqual, -} from "../../math"; -import { ellipse, ellipseLineIntersectionPoints } from "../../math/ellipse"; +} from "@excalidraw/math"; +import { + ellipse, + ellipseLineIntersectionPoints, +} from "@excalidraw/math/ellipse"; import { deconstructDiamondElement, deconstructRectanguloidElement, diff --git a/packages/excalidraw/element/cropElement.ts b/packages/excalidraw/element/cropElement.ts index 20ebb8d794..b109802093 100644 --- a/packages/excalidraw/element/cropElement.ts +++ b/packages/excalidraw/element/cropElement.ts @@ -12,7 +12,7 @@ import { pointFromVector, clamp, isCloseTo, -} from "../../math"; +} from "@excalidraw/math"; import type { TransformHandleType } from "./transformHandles"; import type { ElementsMap, diff --git a/packages/excalidraw/element/distance.ts b/packages/excalidraw/element/distance.ts index d23bf7ee87..0010ab9530 100644 --- a/packages/excalidraw/element/distance.ts +++ b/packages/excalidraw/element/distance.ts @@ -1,11 +1,11 @@ -import type { GlobalPoint, Radians } from "../../math"; +import type { GlobalPoint, Radians } from "@excalidraw/math"; import { curvePointDistance, distanceToLineSegment, pointFrom, pointRotateRads, -} from "../../math"; -import { ellipse, ellipseDistanceFromPoint } from "../../math/ellipse"; +} from "@excalidraw/math"; +import { ellipse, ellipseDistanceFromPoint } from "@excalidraw/math/ellipse"; import type { ExcalidrawBindableElement, ExcalidrawDiamondElement, diff --git a/packages/excalidraw/element/elbowArrow.test.tsx b/packages/excalidraw/element/elbowArrow.test.tsx index 2dd82e7c9c..1839e978c8 100644 --- a/packages/excalidraw/element/elbowArrow.test.tsx +++ b/packages/excalidraw/element/elbowArrow.test.tsx @@ -16,9 +16,9 @@ import type { ExcalidrawElbowArrowElement, } from "./types"; import { ARROW_TYPE } from "../constants"; -import type { LocalPoint } from "../../math"; -import { pointFrom } from "../../math"; import "../../utils/test-utils"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; const { h } = window; diff --git a/packages/excalidraw/element/elbowArrow.ts b/packages/excalidraw/element/elbowArrow.ts index b990fb93b6..703cea0d58 100644 --- a/packages/excalidraw/element/elbowArrow.ts +++ b/packages/excalidraw/element/elbowArrow.ts @@ -11,7 +11,7 @@ import { vectorScale, type GlobalPoint, type LocalPoint, -} from "../../math"; +} from "@excalidraw/math"; import BinaryHeap from "../binaryheap"; import { getSizeFromPoints } from "../points"; import { aabbForElement, pointInsideBounds } from "../shapes"; diff --git a/packages/excalidraw/element/embeddable.ts b/packages/excalidraw/element/embeddable.ts index b83953c2f8..8265a0b13d 100644 --- a/packages/excalidraw/element/embeddable.ts +++ b/packages/excalidraw/element/embeddable.ts @@ -12,7 +12,7 @@ import type { IframeData, } from "./types"; import type { MarkRequired } from "../utility-types"; -import { StoreAction } from "../store"; +import { CaptureUpdateAction } from "../store"; type IframeDataWithSandbox = MarkRequired; @@ -340,7 +340,7 @@ export const actionSetEmbeddableAsActiveTool = register({ type: "embeddable", }), }, - storeAction: StoreAction.NONE, + captureUpdate: CaptureUpdateAction.EVENTUALLY, }; }, }); diff --git a/packages/excalidraw/element/flowchart.ts b/packages/excalidraw/element/flowchart.ts index d2b220c456..02ee1ff29f 100644 --- a/packages/excalidraw/element/flowchart.ts +++ b/packages/excalidraw/element/flowchart.ts @@ -31,7 +31,7 @@ import { isFlowchartNodeElement, } from "./typeChecks"; import { invariant, toBrandedType } from "../utils"; -import { pointFrom, type LocalPoint } from "../../math"; +import { pointFrom, type LocalPoint } from "@excalidraw/math"; import { aabbForElement } from "../shapes"; import { updateElbowArrowPoints } from "./elbowArrow"; diff --git a/packages/excalidraw/element/heading.ts b/packages/excalidraw/element/heading.ts index ef54ac77d7..94e86339db 100644 --- a/packages/excalidraw/element/heading.ts +++ b/packages/excalidraw/element/heading.ts @@ -4,7 +4,7 @@ import type { Triangle, Vector, Radians, -} from "../../math"; +} from "@excalidraw/math"; import { pointFrom, pointRotateRads, @@ -12,7 +12,7 @@ import { radiansToDegrees, triangleIncludesPoint, vectorFromPoint, -} from "../../math"; +} from "@excalidraw/math"; import { getCenterForBounds, type Bounds } from "./bounds"; import type { ExcalidrawBindableElement } from "./types"; diff --git a/packages/excalidraw/element/linearElementEditor.ts b/packages/excalidraw/element/linearElementEditor.ts index 380313067e..1fcbe5fdea 100644 --- a/packages/excalidraw/element/linearElementEditor.ts +++ b/packages/excalidraw/element/linearElementEditor.ts @@ -47,7 +47,7 @@ import type { Mutable } from "../utility-types"; import { ShapeCache } from "../scene/ShapeCache"; import type { Store } from "../store"; import type Scene from "../scene/Scene"; -import type { Radians } from "../../math"; +import type { Radians } from "@excalidraw/math"; import { pointCenter, pointFrom, @@ -59,7 +59,7 @@ import { pointDistance, pointTranslate, vectorFromPoint, -} from "../../math"; +} from "@excalidraw/math"; import { getBezierCurveLength, getBezierXY, diff --git a/packages/excalidraw/element/mutateElement.ts b/packages/excalidraw/element/mutateElement.ts index 2f2a5d47f9..b64366be9f 100644 --- a/packages/excalidraw/element/mutateElement.ts +++ b/packages/excalidraw/element/mutateElement.ts @@ -7,7 +7,7 @@ import type { Mutable } from "../utility-types"; import { ShapeCache } from "../scene/ShapeCache"; import { isElbowArrow } from "./typeChecks"; import { updateElbowArrowPoints } from "./elbowArrow"; -import type { Radians } from "../../math"; +import type { Radians } from "@excalidraw/math"; export type ElementUpdate = Omit< Partial, diff --git a/packages/excalidraw/element/newElement.test.ts b/packages/excalidraw/element/newElement.test.ts index 6a74e58f05..9c9006b6c4 100644 --- a/packages/excalidraw/element/newElement.test.ts +++ b/packages/excalidraw/element/newElement.test.ts @@ -4,8 +4,8 @@ import { API } from "../tests/helpers/api"; import { FONT_FAMILY, ROUNDNESS } from "../constants"; import { isPrimitive } from "../utils"; import type { ExcalidrawLinearElement } from "./types"; -import type { LocalPoint } from "../../math"; -import { pointFrom } from "../../math"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; const assertCloneObjects = (source: any, clone: any) => { for (const key in clone) { diff --git a/packages/excalidraw/element/newElement.ts b/packages/excalidraw/element/newElement.ts index 464641288b..7d1f149107 100644 --- a/packages/excalidraw/element/newElement.ts +++ b/packages/excalidraw/element/newElement.ts @@ -46,7 +46,7 @@ import { } from "../constants"; import type { MarkOptional, Merge, Mutable } from "../utility-types"; import { getLineHeight } from "../fonts"; -import type { Radians } from "../../math"; +import type { Radians } from "@excalidraw/math"; import { normalizeText, measureText } from "./textMeasurements"; export type ElementConstructorOpts = MarkOptional< diff --git a/packages/excalidraw/element/resizeElements.ts b/packages/excalidraw/element/resizeElements.ts index 63923c5d83..f71a0bc7a9 100644 --- a/packages/excalidraw/element/resizeElements.ts +++ b/packages/excalidraw/element/resizeElements.ts @@ -50,7 +50,7 @@ import { import { wrapText } from "./textWrapping"; import { LinearElementEditor } from "./linearElementEditor"; import { isInGroup } from "../groups"; -import type { GlobalPoint } from "../../math"; +import type { GlobalPoint } from "@excalidraw/math"; import { pointCenter, normalizeRadians, @@ -59,7 +59,7 @@ import { pointRotateRads, type Radians, type LocalPoint, -} from "../../math"; +} from "@excalidraw/math"; import { getMinTextElementWidth, measureText, diff --git a/packages/excalidraw/element/resizeTest.ts b/packages/excalidraw/element/resizeTest.ts index c00586db32..375ff980bf 100644 --- a/packages/excalidraw/element/resizeTest.ts +++ b/packages/excalidraw/element/resizeTest.ts @@ -21,13 +21,13 @@ import type { Bounds } from "./bounds"; import { getElementAbsoluteCoords } from "./bounds"; import { SIDE_RESIZING_THRESHOLD } from "../constants"; import { isImageElement, isLinearElement } from "./typeChecks"; -import type { GlobalPoint, LineSegment, LocalPoint } from "../../math"; +import type { GlobalPoint, LineSegment, LocalPoint } from "@excalidraw/math"; import { pointFrom, pointOnLineSegment, pointRotateRads, type Radians, -} from "../../math"; +} from "@excalidraw/math"; const isInsideTransformHandle = ( transformHandle: TransformHandle, diff --git a/packages/excalidraw/element/textWysiwyg.test.tsx b/packages/excalidraw/element/textWysiwyg.test.tsx index 80469d9e32..0842e30fd3 100644 --- a/packages/excalidraw/element/textWysiwyg.test.tsx +++ b/packages/excalidraw/element/textWysiwyg.test.tsx @@ -23,7 +23,7 @@ import type { import { API } from "../tests/helpers/api"; import { getOriginalContainerHeightFromCache } from "./containerCache"; import { getTextEditor, updateTextEditor } from "../tests/queries/dom"; -import { pointFrom } from "../../math"; +import { pointFrom } from "@excalidraw/math"; unmountComponent(); diff --git a/packages/excalidraw/element/transformHandles.ts b/packages/excalidraw/element/transformHandles.ts index 77a83e3e1e..d34eb32797 100644 --- a/packages/excalidraw/element/transformHandles.ts +++ b/packages/excalidraw/element/transformHandles.ts @@ -19,8 +19,8 @@ import { isAndroid, isIOS, } from "../constants"; -import type { Radians } from "../../math"; -import { pointFrom, pointRotateRads } from "../../math"; +import type { Radians } from "@excalidraw/math"; +import { pointFrom, pointRotateRads } from "@excalidraw/math"; export type TransformHandleDirection = | "n" diff --git a/packages/excalidraw/element/types.ts b/packages/excalidraw/element/types.ts index ecd5ffecdd..5965867434 100644 --- a/packages/excalidraw/element/types.ts +++ b/packages/excalidraw/element/types.ts @@ -1,4 +1,4 @@ -import type { LocalPoint, Radians } from "../../math"; +import type { LocalPoint, Radians } from "@excalidraw/math"; import type { FONT_FAMILY, ROUNDNESS, diff --git a/packages/excalidraw/element/utils.ts b/packages/excalidraw/element/utils.ts index 68717ac8c2..d85cd78c67 100644 --- a/packages/excalidraw/element/utils.ts +++ b/packages/excalidraw/element/utils.ts @@ -1,5 +1,5 @@ import { getDiamondPoints } from "."; -import type { Curve, LineSegment } from "../../math"; +import type { Curve, LineSegment } from "@excalidraw/math"; import { curve, lineSegment, @@ -10,7 +10,7 @@ import { vectorNormalize, vectorScale, type GlobalPoint, -} from "../../math"; +} from "@excalidraw/math"; import { getCornerRadius } from "../shapes"; import type { ExcalidrawDiamondElement, diff --git a/packages/excalidraw/fonts/ExcalidrawFontFace.ts b/packages/excalidraw/fonts/ExcalidrawFontFace.ts index d2cf7d4b47..816ed88bd4 100644 --- a/packages/excalidraw/fonts/ExcalidrawFontFace.ts +++ b/packages/excalidraw/fonts/ExcalidrawFontFace.ts @@ -8,7 +8,7 @@ export class ExcalidrawFontFace { public readonly urls: URL[] | DataURL[]; public readonly fontFace: FontFace; - private static readonly UNPKG_FALLBACK_URL = `https://unpkg.com/${ + private static readonly ASSETS_FALLBACK_URL = `https://esm.sh/${ import.meta.env.VITE_PKG_NAME ? `${import.meta.env.VITE_PKG_NAME}@${import.meta.env.PKG_VERSION}` // should be provided by vite during package build : "@excalidraw/excalidraw" // fallback to latest package version (i.e. for app) @@ -164,7 +164,7 @@ export class ExcalidrawFontFace { } // fallback url for bundled fonts - urls.push(new URL(assetUrl, ExcalidrawFontFace.UNPKG_FALLBACK_URL)); + urls.push(new URL(assetUrl, ExcalidrawFontFace.ASSETS_FALLBACK_URL)); return urls; } diff --git a/packages/excalidraw/frame.ts b/packages/excalidraw/frame.ts index 952521d3ef..4659a34a00 100644 --- a/packages/excalidraw/frame.ts +++ b/packages/excalidraw/frame.ts @@ -26,10 +26,13 @@ import { getElementsWithinSelection, getSelectedElements } from "./scene"; import { getElementsInGroup, selectGroupsFromGivenElements } from "./groups"; import type { ExcalidrawElementsIncludingDeleted } from "./scene/Scene"; import { getElementLineSegments } from "./element/bounds"; -import { doLineSegmentsIntersect, elementsOverlappingBBox } from "../utils/"; +import { + doLineSegmentsIntersect, + elementsOverlappingBBox, +} from "@excalidraw/utils"; import { isFrameElement, isFrameLikeElement } from "./element/typeChecks"; import type { ReadonlySetLike } from "./utility-types"; -import { isPointWithinBounds, pointFrom } from "../math"; +import { isPointWithinBounds, pointFrom } from "@excalidraw/math"; // --------------------------- Frame State ------------------------------------ export const bindElementsToFramesAfterDuplication = ( diff --git a/packages/excalidraw/hooks/useLibraryItemSvg.ts b/packages/excalidraw/hooks/useLibraryItemSvg.ts index b2ee746e47..72b648d112 100644 --- a/packages/excalidraw/hooks/useLibraryItemSvg.ts +++ b/packages/excalidraw/hooks/useLibraryItemSvg.ts @@ -1,7 +1,7 @@ import { useEffect, useState } from "react"; import { COLOR_PALETTE } from "../colors"; import { atom, useAtom } from "../editor-jotai"; -import { exportToSvg } from "../../utils/export"; +import { exportToSvg } from "@excalidraw/utils/export"; import type { LibraryItem } from "../types"; export type SvgCache = Map; diff --git a/packages/excalidraw/index.tsx b/packages/excalidraw/index.tsx index bd3d0f148c..b4b8574bd3 100644 --- a/packages/excalidraw/index.tsx +++ b/packages/excalidraw/index.tsx @@ -233,7 +233,7 @@ export { exportToBlob, exportToSvg, exportToClipboard, -} from "../utils/export"; +} from "@excalidraw/utils/export"; export { serializeAsJSON, serializeLibraryAsJSON } from "./data/json"; export { @@ -251,6 +251,7 @@ export { MIME_TYPES, ROUNDNESS, DEFAULT_LASER_COLOR, + UserIdleState, } from "./constants"; export { @@ -259,7 +260,7 @@ export { bumpVersion, } from "./element/mutateElement"; -export { StoreAction } from "./store"; +export { CaptureUpdateAction } from "./store"; export { parseLibraryTokensFromUrl, useHandleLibrary } from "./data/library"; @@ -290,7 +291,7 @@ export { elementsOverlappingBBox, isElementInsideBBox, elementPartiallyOverlapsWithOrContainsBBox, -} from "../utils/withinBounds"; +} from "@excalidraw/utils/withinBounds"; export { DiagramToCodePlugin } from "./components/DiagramToCodePlugin/DiagramToCodePlugin"; export { getDataURL } from "./data/blob"; diff --git a/packages/excalidraw/package.json b/packages/excalidraw/package.json index c6e9d6575c..82e5c4373e 100644 --- a/packages/excalidraw/package.json +++ b/packages/excalidraw/package.json @@ -1,21 +1,25 @@ { "name": "@excalidraw/excalidraw", - "version": "0.17.1", - "main": "./dist/prod/index.js", + "version": "0.18.0", "type": "module", + "types": "./dist/types/excalidraw/index.d.ts", + "main": "./dist/prod/index.js", "module": "./dist/prod/index.js", "exports": { - ".": { - "development": "./dist/dev/index.js", - "types": "./dist/excalidraw/index.d.ts", - "default": "./dist/prod/index.js" + "./*": { + "types": "./dist/types/excalidraw/*.d.ts" }, "./index.css": { "development": "./dist/dev/index.css", - "default": "./dist/prod/index.css" + "production": "./dist/prod/index.css" + }, + ".": { + "types": "./dist/types/excalidraw/index.d.ts", + "development": "./dist/dev/index.js", + "production": "./dist/prod/index.js", + "default": "./dist/prod/index.js" } }, - "types": "./dist/excalidraw/index.d.ts", "files": [ "dist/*" ], @@ -23,7 +27,6 @@ "access": "public" }, "description": "Excalidraw as a React component", - "repository": "https://github.com/excalidraw/excalidraw", "license": "MIT", "keywords": [ "excalidraw", @@ -73,9 +76,10 @@ "jotai": "2.11.0", "jotai-scope": "0.7.2", "lodash.throttle": "4.1.1", + "lodash.debounce": "4.0.8", "nanoid": "3.3.3", "open-color": "1.9.1", - "pako": "1.0.11", + "pako": "2.0.3", "perfect-freehand": "1.2.0", "pica": "7.1.1", "png-chunk-text": "1.0.0", @@ -88,53 +92,32 @@ "tunnel-rat": "0.1.2" }, "devDependencies": { - "@babel/core": "7.24.5", - "@babel/plugin-transform-arrow-functions": "7.24.1", - "@babel/plugin-transform-async-to-generator": "7.24.1", - "@babel/plugin-transform-runtime": "7.24.3", - "@babel/plugin-transform-typescript": "7.24.5", - "@babel/preset-env": "7.24.5", - "@babel/preset-react": "7.24.1", - "@babel/preset-typescript": "7.24.1", "@size-limit/preset-big-lib": "9.0.0", "@testing-library/dom": "10.4.0", "@testing-library/jest-dom": "6.6.3", "@testing-library/react": "16.2.0", - "@types/pako": "1.0.3", + "@types/lodash.debounce": "4.0.8", + "@types/pako": "2.0.3", "@types/pica": "5.1.3", "@types/resize-observer-browser": "0.1.7", "ansicolor": "2.0.3", "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", "esbuild": "0.19.10", - "esbuild-plugin-external-global": "1.0.1", "esbuild-sass-plugin": "2.16.0", "eslint-plugin-react": "7.32.2", "fake-indexeddb": "3.1.7", "fonteditor-core": "2.4.1", "harfbuzzjs": "0.3.6", - "import-meta-loader": "1.1.0", "jest-diff": "29.7.0", - "mini-css-extract-plugin": "2.6.1", - "postcss-loader": "7.0.1", - "sass-loader": "13.0.2", - "size-limit": "9.0.0", - "style-loader": "3.3.3", - "ts-loader": "9.3.1", "typescript": "4.9.4" }, + "repository": "https://github.com/excalidraw/excalidraw", "bugs": "https://github.com/excalidraw/excalidraw/issues", "homepage": "https://github.com/excalidraw/excalidraw/tree/master/packages/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:esm": "rm -rf dist && node ../../scripts/buildPackage.js && yarn gen:types", - "pack": "yarn build:umd && yarn pack", - "start": "node ../../scripts/buildExample.mjs && vite", - "build:example": "node ../../scripts/buildExample.mjs", - "size": "yarn build:umd && size-limit" + "build:esm": "rm -rf dist && node ../../scripts/buildPackage.js && yarn gen:types" } } diff --git a/packages/excalidraw/points.ts b/packages/excalidraw/points.ts index 5f9480120c..9d48857db0 100644 --- a/packages/excalidraw/points.ts +++ b/packages/excalidraw/points.ts @@ -1,4 +1,8 @@ -import { pointFromPair, type GlobalPoint, type LocalPoint } from "../math"; +import { + pointFromPair, + type GlobalPoint, + type LocalPoint, +} from "@excalidraw/math"; export const getSizeFromPoints = ( points: readonly (GlobalPoint | LocalPoint)[], diff --git a/packages/excalidraw/renderer/interactiveScene.ts b/packages/excalidraw/renderer/interactiveScene.ts index 3a070e667a..9aa832770d 100644 --- a/packages/excalidraw/renderer/interactiveScene.ts +++ b/packages/excalidraw/renderer/interactiveScene.ts @@ -83,7 +83,7 @@ import { type GlobalPoint, type LocalPoint, type Radians, -} from "../../math"; +} from "@excalidraw/math"; import { getCornerRadius } from "../shapes"; const renderElbowArrowMidPointHighlight = ( diff --git a/packages/excalidraw/renderer/renderElement.ts b/packages/excalidraw/renderer/renderElement.ts index 3e87ebaf5e..d93469c2d3 100644 --- a/packages/excalidraw/renderer/renderElement.ts +++ b/packages/excalidraw/renderer/renderElement.ts @@ -60,7 +60,7 @@ import { LinearElementEditor } from "../element/linearElementEditor"; import { getContainingFrame } from "../frame"; import { ShapeCache } from "../scene/ShapeCache"; import { getVerticalOffset } from "../fonts"; -import { isRightAngleRads } from "../../math"; +import { isRightAngleRads } from "@excalidraw/math"; import { getCornerRadius } from "../shapes"; import { getUncroppedImageElement } from "../element/cropElement"; import { getLineHeightInPx } from "../element/textMeasurements"; diff --git a/packages/excalidraw/renderer/renderSnaps.ts b/packages/excalidraw/renderer/renderSnaps.ts index 57b57c570a..878e8e523f 100644 --- a/packages/excalidraw/renderer/renderSnaps.ts +++ b/packages/excalidraw/renderer/renderSnaps.ts @@ -1,4 +1,4 @@ -import { pointFrom, type GlobalPoint, type LocalPoint } from "../../math"; +import { pointFrom, type GlobalPoint, type LocalPoint } from "@excalidraw/math"; import { THEME } from "../constants"; import type { PointSnapLine, PointerSnapLine } from "../snapping"; import type { InteractiveCanvasAppState } from "../types"; diff --git a/packages/excalidraw/scene/Shape.ts b/packages/excalidraw/scene/Shape.ts index ba55b2f606..0fef0b2b2b 100644 --- a/packages/excalidraw/scene/Shape.ts +++ b/packages/excalidraw/scene/Shape.ts @@ -23,7 +23,7 @@ import { } from "../element/typeChecks"; import { canChangeRoundness } from "./comparisons"; import type { EmbedsValidationStatus } from "../types"; -import { pointFrom, pointDistance, type LocalPoint } from "../../math"; +import { pointFrom, pointDistance, type LocalPoint } from "@excalidraw/math"; import { getCornerRadius, isPathALoop } from "../shapes"; import { headingForPointIsHorizontal } from "../element/heading"; diff --git a/packages/excalidraw/scene/normalize.ts b/packages/excalidraw/scene/normalize.ts index a6980c91dc..2a025fc27c 100644 --- a/packages/excalidraw/scene/normalize.ts +++ b/packages/excalidraw/scene/normalize.ts @@ -1,4 +1,4 @@ -import { clamp, round } from "../../math"; +import { clamp, round } from "@excalidraw/math"; import { MAX_ZOOM, MIN_ZOOM } from "../constants"; import type { NormalizedZoomValue } from "../types"; diff --git a/packages/excalidraw/scene/types.ts b/packages/excalidraw/scene/types.ts index 46ee26b742..c0bfd1bba5 100644 --- a/packages/excalidraw/scene/types.ts +++ b/packages/excalidraw/scene/types.ts @@ -14,11 +14,11 @@ import type { InteractiveCanvasAppState, StaticCanvasAppState, SocketId, - UserIdleState, Device, PendingExcalidrawElements, } from "../types"; import type { MakeBrand } from "../utility-types"; +import type { UserIdleState } from "../constants"; export type RenderableElementsMap = NonDeletedElementsMap & MakeBrand<"RenderableElementsMap">; diff --git a/packages/excalidraw/shapes.tsx b/packages/excalidraw/shapes.tsx index 3f1855c631..cfd639f2d2 100644 --- a/packages/excalidraw/shapes.tsx +++ b/packages/excalidraw/shapes.tsx @@ -7,7 +7,7 @@ import { pointsEqual, type GlobalPoint, type LocalPoint, -} from "../math"; +} from "@excalidraw/math"; import { getClosedCurveShape, getCurvePathOps, @@ -16,7 +16,7 @@ import { getFreedrawShape, getPolygonShape, type GeometricShape, -} from "../utils/geometry/shape"; +} from "@excalidraw/utils/geometry/shape"; import { ArrowIcon, DiamondIcon, diff --git a/packages/excalidraw/snapping.ts b/packages/excalidraw/snapping.ts index 1f2451b337..1b661516e7 100644 --- a/packages/excalidraw/snapping.ts +++ b/packages/excalidraw/snapping.ts @@ -1,4 +1,4 @@ -import type { InclusiveRange } from "../math"; +import type { InclusiveRange } from "@excalidraw/math"; import { pointFrom, pointRotateRads, @@ -6,7 +6,7 @@ import { rangeIntersection, rangesOverlap, type GlobalPoint, -} from "../math"; +} from "@excalidraw/math"; import { TOOL_TYPE } from "./constants"; import type { Bounds } from "./element/bounds"; import { diff --git a/packages/excalidraw/store.ts b/packages/excalidraw/store.ts index b3e2713c42..1343347c4b 100644 --- a/packages/excalidraw/store.ts +++ b/packages/excalidraw/store.ts @@ -37,7 +37,7 @@ const isObservedAppState = ( ): appState is ObservedAppState => !!Reflect.get(appState, hiddenObservedAppStateProp); -export const StoreAction = { +export const CaptureUpdateAction = { /** * Immediately undoable. * @@ -46,7 +46,7 @@ export const StoreAction = { * * These updates will _immediately_ make it to the local undo / redo stacks. */ - CAPTURE: "capture", + IMMEDIATELY: "IMMEDIATELY", /** * Never undoable. * @@ -55,22 +55,22 @@ export const StoreAction = { * * These updates will _never_ make it to the local undo / redo stacks. */ - UPDATE: "update", + NEVER: "NEVER", /** * Eventually undoable. * * Use for updates which should not be captured immediately - likely * exceptions which are part of some async multi-step process. Otherwise, all * such updates would end up being captured with the next - * `StoreAction.CAPTURE` - triggered either by the next `updateScene` + * `CaptureUpdateAction.IMMEDIATELY` - triggered either by the next `updateScene` * or internally by the editor. * * These updates will _eventually_ make it to the local undo / redo stacks. */ - NONE: "none", + EVENTUALLY: "EVENTUALLY", } as const; -export type StoreActionType = ValueOf; +export type CaptureUpdateActionType = ValueOf; /** * Represent an increment to the Store. @@ -133,7 +133,7 @@ export class Store implements IStore { [StoreIncrementEvent] >(); - private scheduledActions: Set = new Set(); + private scheduledActions: Set = new Set(); private _snapshot = Snapshot.empty(); public get snapshot() { @@ -146,14 +146,14 @@ export class Store implements IStore { // TODO: Suspicious that this is called so many places. Seems error-prone. public shouldCaptureIncrement = () => { - this.scheduleAction(StoreAction.CAPTURE); + this.scheduleAction(CaptureUpdateAction.IMMEDIATELY); }; public shouldUpdateSnapshot = () => { - this.scheduleAction(StoreAction.UPDATE); + this.scheduleAction(CaptureUpdateAction.NEVER); }; - private scheduleAction = (action: StoreActionType) => { + private scheduleAction = (action: CaptureUpdateActionType) => { this.scheduledActions.add(action); this.satisfiesScheduledActionsInvariant(); }; @@ -164,9 +164,9 @@ export class Store implements IStore { ): void => { try { // Capture has precedence since it also performs update - if (this.scheduledActions.has(StoreAction.CAPTURE)) { + if (this.scheduledActions.has(CaptureUpdateAction.IMMEDIATELY)) { this.captureIncrement(elements, appState); - } else if (this.scheduledActions.has(StoreAction.UPDATE)) { + } else if (this.scheduledActions.has(CaptureUpdateAction.NEVER)) { this.updateSnapshot(elements, appState); } } finally { diff --git a/packages/excalidraw/tests/binding.test.tsx b/packages/excalidraw/tests/binding.test.tsx index dff4d3347d..905a44e704 100644 --- a/packages/excalidraw/tests/binding.test.tsx +++ b/packages/excalidraw/tests/binding.test.tsx @@ -7,7 +7,7 @@ import { API } from "./helpers/api"; import { KEYS } from "../keys"; import { actionWrapTextInContainer } from "../actions/actionBoundText"; import { arrayToMap } from "../utils"; -import { pointFrom } from "../../math"; +import { pointFrom } from "@excalidraw/math"; const { h } = window; diff --git a/packages/excalidraw/tests/cropElement.test.tsx b/packages/excalidraw/tests/cropElement.test.tsx index 1fa33137c5..a508f5d645 100644 --- a/packages/excalidraw/tests/cropElement.test.tsx +++ b/packages/excalidraw/tests/cropElement.test.tsx @@ -314,6 +314,7 @@ describe("Cropping and other features", async () => { const canvas = await exportToCanvas({ elements: [image], + // @ts-ignore appState: h.state, files: h.app.files, exportPadding: 0, @@ -324,6 +325,7 @@ describe("Cropping and other features", async () => { const svg = await exportToSvg({ elements: [image], + // @ts-ignore appState: h.state, files: h.app.files, exportPadding: 0, diff --git a/packages/excalidraw/tests/data/restore.test.ts b/packages/excalidraw/tests/data/restore.test.ts index a3d6d73506..37a27ac6a5 100644 --- a/packages/excalidraw/tests/data/restore.test.ts +++ b/packages/excalidraw/tests/data/restore.test.ts @@ -13,7 +13,7 @@ import type { NormalizedZoomValue } from "../../types"; import { DEFAULT_SIDEBAR, FONT_FAMILY, ROUNDNESS } from "../../constants"; import { newElementWith } from "../../element/mutateElement"; import { vi } from "vitest"; -import { pointFrom } from "../../../math"; +import { pointFrom } from "@excalidraw/math"; describe("restoreElements", () => { const mockSizeHelper = vi.spyOn(sizeHelpers, "isInvisiblySmallElement"); diff --git a/packages/excalidraw/tests/fixtures/elementFixture.ts b/packages/excalidraw/tests/fixtures/elementFixture.ts index 3f93f0713a..f0470ec864 100644 --- a/packages/excalidraw/tests/fixtures/elementFixture.ts +++ b/packages/excalidraw/tests/fixtures/elementFixture.ts @@ -1,4 +1,4 @@ -import type { Radians } from "../../../math"; +import type { Radians } from "@excalidraw/math"; import { DEFAULT_FONT_FAMILY } from "../../constants"; import type { ExcalidrawElement } from "../../element/types"; diff --git a/packages/excalidraw/tests/flip.test.tsx b/packages/excalidraw/tests/flip.test.tsx index 2cd617ebb1..e3f44b3334 100644 --- a/packages/excalidraw/tests/flip.test.tsx +++ b/packages/excalidraw/tests/flip.test.tsx @@ -27,8 +27,8 @@ import { KEYS } from "../keys"; import { getBoundTextElementPosition } from "../element/textElement"; import { createPasteEvent } from "../clipboard"; import { arrayToMap, cloneJSON } from "../utils"; -import type { LocalPoint } from "../../math"; -import { pointFrom, type Radians } from "../../math"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom, type Radians } from "@excalidraw/math"; const { h } = window; const mouse = new Pointer("mouse"); diff --git a/packages/excalidraw/tests/helpers/api.ts b/packages/excalidraw/tests/helpers/api.ts index 405bce396c..218f371164 100644 --- a/packages/excalidraw/tests/helpers/api.ts +++ b/packages/excalidraw/tests/helpers/api.ts @@ -39,7 +39,7 @@ import type App from "../../components/App"; import { createTestHook } from "../../components/App"; import type { Action } from "../../actions/types"; import { mutateElement } from "../../element/mutateElement"; -import { pointFrom, type LocalPoint, type Radians } from "../../../math"; +import { pointFrom, type LocalPoint, type Radians } from "@excalidraw/math"; import { selectGroupsForSelectedElements } from "../../groups"; const readFile = util.promisify(fs.readFile); diff --git a/packages/excalidraw/tests/helpers/ui.ts b/packages/excalidraw/tests/helpers/ui.ts index 05144011cf..b9b7023c10 100644 --- a/packages/excalidraw/tests/helpers/ui.ts +++ b/packages/excalidraw/tests/helpers/ui.ts @@ -33,8 +33,8 @@ import { getCommonBounds, getElementPointsCoords } from "../../element/bounds"; import { getTextEditor } from "../queries/dom"; import { arrayToMap } from "../../utils"; import { createTestHook } from "../../components/App"; -import type { GlobalPoint, LocalPoint, Radians } from "../../../math"; -import { pointFrom, pointRotateRads } from "../../../math"; +import type { GlobalPoint, LocalPoint, Radians } from "@excalidraw/math"; +import { pointFrom, pointRotateRads } from "@excalidraw/math"; import { cropElement } from "../../element/cropElement"; import type { ToolType } from "../../types"; diff --git a/packages/excalidraw/tests/history.test.tsx b/packages/excalidraw/tests/history.test.tsx index 4942fb2b3c..ffddec49f6 100644 --- a/packages/excalidraw/tests/history.test.tsx +++ b/packages/excalidraw/tests/history.test.tsx @@ -46,9 +46,9 @@ import { vi } from "vitest"; import { queryByText } from "@testing-library/react"; import { HistoryEntry } from "../history"; import { AppStateChange, ElementsChange } from "../change"; -import { Snapshot, StoreAction } from "../store"; -import type { LocalPoint, Radians } from "../../math"; -import { pointFrom } from "../../math"; +import { Snapshot, CaptureUpdateAction } from "../store"; +import type { LocalPoint, Radians } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; const { h } = window; @@ -182,7 +182,7 @@ describe("history", () => { API.updateScene({ elements: [rect1, rect2], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); expect(API.getUndoStack().length).toBe(1); @@ -194,7 +194,7 @@ describe("history", () => { API.updateScene({ elements: [rect1, rect2], - storeAction: StoreAction.CAPTURE, // even though the flag is on, same elements are passed, nothing to commit + captureUpdate: CaptureUpdateAction.IMMEDIATELY, // even though the flag is on, same elements are passed, nothing to commit }); expect(API.getUndoStack().length).toBe(1); expect(API.getRedoStack().length).toBe(0); @@ -562,7 +562,7 @@ describe("history", () => { appState: { name: "New name", }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); expect(API.getUndoStack().length).toBe(1); @@ -573,7 +573,7 @@ describe("history", () => { appState: { viewBackgroundColor: "#000", }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); expect(API.getUndoStack().length).toBe(2); expect(API.getRedoStack().length).toBe(0); @@ -586,7 +586,7 @@ describe("history", () => { name: "New name", viewBackgroundColor: "#000", }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); expect(API.getUndoStack().length).toBe(2); expect(API.getRedoStack().length).toBe(0); @@ -1293,7 +1293,7 @@ describe("history", () => { API.updateScene({ elements: [rect1, text, rect2], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // bind text1 to rect1 @@ -1847,7 +1847,7 @@ describe("history", () => { strokeColor: blue, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -1885,7 +1885,7 @@ describe("history", () => { strokeColor: yellow, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -1933,7 +1933,7 @@ describe("history", () => { backgroundColor: yellow, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // At this point our entry gets updated from `red` -> `blue` into `red` -> `yellow` @@ -1949,7 +1949,7 @@ describe("history", () => { backgroundColor: violet, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // At this point our (inversed) entry gets updated from `red` -> `yellow` into `violet` -> `yellow` @@ -1994,7 +1994,7 @@ describe("history", () => { API.updateScene({ elements: [rect, diamond], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Connect the arrow @@ -2043,7 +2043,7 @@ describe("history", () => { } as FixedPointBinding, }, ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -2058,7 +2058,7 @@ describe("history", () => { } : el, ), - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2082,7 +2082,7 @@ describe("history", () => { // Initialize scene API.updateScene({ elements: [rect1, rect2], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -2091,7 +2091,7 @@ describe("history", () => { newElementWith(h.elements[0], { groupIds: ["A"] }), newElementWith(h.elements[1], { groupIds: ["A"] }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); const rect3 = API.createElement({ type: "rectangle", groupIds: ["B"] }); @@ -2105,7 +2105,7 @@ describe("history", () => { rect3, rect4, ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2151,7 +2151,7 @@ describe("history", () => { ] as LocalPoint[], }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); // undo `actionFinalize` @@ -2246,7 +2246,7 @@ describe("history", () => { isDeleted: false, // undeletion might happen due to concurrency between clients }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(API.getSelectedElements()).toEqual([]); @@ -2323,7 +2323,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(h.elements).toEqual([ @@ -2385,7 +2385,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2461,7 +2461,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2500,7 +2500,7 @@ describe("history", () => { isDeleted: false, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.redo(); @@ -2546,7 +2546,7 @@ describe("history", () => { // Simulate remote update API.updateScene({ elements: [rect1, rect2], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.withModifierKeys({ ctrl: true }, () => { @@ -2556,7 +2556,7 @@ describe("history", () => { // Simulate remote update API.updateScene({ elements: [h.elements[0], h.elements[1], rect3, rect4], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.withModifierKeys({ ctrl: true }, () => { @@ -2577,7 +2577,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2602,7 +2602,7 @@ describe("history", () => { isDeleted: false, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.redo(); @@ -2613,7 +2613,7 @@ describe("history", () => { // Simulate remote update API.updateScene({ elements: [h.elements[0], h.elements[1], rect3, rect4], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.redo(); @@ -2659,7 +2659,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2680,7 +2680,7 @@ describe("history", () => { }), h.elements[1], ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2723,7 +2723,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2766,7 +2766,7 @@ describe("history", () => { h.elements[0], h.elements[1], ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(API.getUndoStack().length).toBe(2); @@ -2805,7 +2805,7 @@ describe("history", () => { h.elements[0], h.elements[1], ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(API.getUndoStack().length).toBe(2); @@ -2856,7 +2856,7 @@ describe("history", () => { h.elements[0], // rect2 h.elements[1], // rect1 ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2886,7 +2886,7 @@ describe("history", () => { h.elements[0], // rect3 h.elements[2], // rect1 ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -2916,7 +2916,7 @@ describe("history", () => { // Simulate remote update API.updateScene({ elements: [...h.elements, rect], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); mouse.moveTo(60, 60); @@ -2968,7 +2968,7 @@ describe("history", () => { // // Simulate remote update API.updateScene({ elements: [...h.elements, rect3], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); mouse.moveTo(100, 100); @@ -3058,7 +3058,7 @@ describe("history", () => { // Simulate remote update API.updateScene({ elements: [...h.elements, rect3], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); mouse.moveTo(100, 100); @@ -3235,7 +3235,7 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [container, text], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -3248,7 +3248,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -3279,7 +3279,7 @@ describe("history", () => { x: h.elements[1].x + 10, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3322,7 +3322,7 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [container, text], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -3335,7 +3335,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -3369,7 +3369,7 @@ describe("history", () => { remoteText, h.elements[1], ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3425,7 +3425,7 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [container, text], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -3438,7 +3438,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -3475,7 +3475,7 @@ describe("history", () => { containerId: remoteContainer.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3533,7 +3533,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [container], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3544,7 +3544,7 @@ describe("history", () => { }), newElementWith(text, { containerId: container.id }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3594,7 +3594,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [text], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3605,7 +3605,7 @@ describe("history", () => { }), newElementWith(text, { containerId: container.id }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3654,7 +3654,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [container], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3667,7 +3667,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -3704,7 +3704,7 @@ describe("history", () => { // rebinding the container with a new text element! remoteText, ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3761,7 +3761,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [text], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3774,7 +3774,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.undo(); @@ -3811,7 +3811,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3867,7 +3867,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [container], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3881,7 +3881,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3924,7 +3924,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [text], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -3938,7 +3938,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -3981,7 +3981,7 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [container], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -3993,7 +3993,7 @@ describe("history", () => { angle: 90 as Radians, }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -4006,7 +4006,7 @@ describe("history", () => { }), newElementWith(text, { containerId: container.id }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(h.elements).toEqual([ @@ -4099,7 +4099,7 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [text], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update @@ -4111,7 +4111,7 @@ describe("history", () => { angle: 90 as Radians, }), ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -4126,7 +4126,7 @@ describe("history", () => { containerId: container.id, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); expect(API.getUndoStack().length).toBe(0); @@ -4217,7 +4217,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [rect1, rect2], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); mouse.reset(); @@ -4304,7 +4304,7 @@ describe("history", () => { x: h.elements[1].x + 50, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -4444,7 +4444,7 @@ describe("history", () => { }), remoteContainer, ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -4549,7 +4549,7 @@ describe("history", () => { boundElements: [{ id: arrow.id, type: "arrow" }], }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -4626,7 +4626,7 @@ describe("history", () => { // Simulate local update API.updateScene({ elements: [arrow], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate remote update @@ -4653,7 +4653,7 @@ describe("history", () => { boundElements: [{ id: arrow.id, type: "arrow" }], }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); runTwice(() => { @@ -4783,7 +4783,7 @@ describe("history", () => { newElementWith(h.elements[1], { x: 500, y: -500 }), h.elements[2], ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.redo(); @@ -4853,13 +4853,13 @@ describe("history", () => { // Initialize the scene API.updateScene({ elements: [frame], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); // Simulate local update API.updateScene({ elements: [rect, h.elements[0]], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); // Simulate local update @@ -4870,7 +4870,7 @@ describe("history", () => { }), h.elements[1], ], - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); Keyboard.undo(); @@ -4914,7 +4914,7 @@ describe("history", () => { isDeleted: true, }), ], - storeAction: StoreAction.UPDATE, + captureUpdate: CaptureUpdateAction.NEVER, }); Keyboard.redo(); diff --git a/packages/excalidraw/tests/linearElementEditor.test.tsx b/packages/excalidraw/tests/linearElementEditor.test.tsx index 986a63512f..98d6058c23 100644 --- a/packages/excalidraw/tests/linearElementEditor.test.tsx +++ b/packages/excalidraw/tests/linearElementEditor.test.tsx @@ -30,8 +30,8 @@ import * as textElementUtils from "../element/textElement"; import { ROUNDNESS, VERTICAL_ALIGN } from "../constants"; import { vi } from "vitest"; import { arrayToMap } from "../utils"; -import type { GlobalPoint } from "../../math"; -import { pointCenter, pointFrom } from "../../math"; +import type { GlobalPoint } from "@excalidraw/math"; +import { pointCenter, pointFrom } from "@excalidraw/math"; import { wrapText } from "../element/textWrapping"; const renderInteractiveScene = vi.spyOn( diff --git a/packages/excalidraw/tests/packages/events.test.tsx b/packages/excalidraw/tests/packages/events.test.tsx index 34a1cc062c..ad8b3c6d93 100644 --- a/packages/excalidraw/tests/packages/events.test.tsx +++ b/packages/excalidraw/tests/packages/events.test.tsx @@ -1,6 +1,6 @@ import React from "react"; import { vi } from "vitest"; -import { Excalidraw, StoreAction } from "../../index"; +import { Excalidraw, CaptureUpdateAction } from "../../index"; import type { ExcalidrawImperativeAPI } from "../../types"; import { resolvablePromise } from "../../utils"; import { render } from "../test-utils"; @@ -31,7 +31,7 @@ describe("event callbacks", () => { excalidrawAPI.onChange(onChange); API.updateScene({ appState: { viewBackgroundColor: "red" }, - storeAction: StoreAction.CAPTURE, + captureUpdate: CaptureUpdateAction.IMMEDIATELY, }); expect(onChange).toHaveBeenCalledWith( // elements diff --git a/packages/excalidraw/tests/resize.test.tsx b/packages/excalidraw/tests/resize.test.tsx index eca7b7e500..a12d310487 100644 --- a/packages/excalidraw/tests/resize.test.tsx +++ b/packages/excalidraw/tests/resize.test.tsx @@ -15,8 +15,8 @@ import { KEYS } from "../keys"; import { isLinearElement } from "../element/typeChecks"; import { LinearElementEditor } from "../element/linearElementEditor"; import { arrayToMap } from "../utils"; -import type { LocalPoint } from "../../math"; -import { pointFrom } from "../../math"; +import type { LocalPoint } from "@excalidraw/math"; +import { pointFrom } from "@excalidraw/math"; import { resizeSingleElement } from "../element/resizeElements"; import { getSizeFromPoints } from "../points"; diff --git a/packages/excalidraw/tests/scene/export.test.ts b/packages/excalidraw/tests/scene/export.test.ts index 33a554f1ed..6fd8a8b85d 100644 --- a/packages/excalidraw/tests/scene/export.test.ts +++ b/packages/excalidraw/tests/scene/export.test.ts @@ -11,7 +11,7 @@ import { textFixture, } from "../fixtures/elementFixture"; import { API } from "../helpers/api"; -import { exportToCanvas, exportToSvg } from "../../../utils"; +import { exportToCanvas, exportToSvg } from "@excalidraw/utils"; import { FONT_FAMILY, FRAME_STYLE } from "../../constants"; import { prepareElementsForExport } from "../../data"; @@ -114,7 +114,7 @@ describe("exportToSvg", () => { ); expect(svgElement.getAttribute("filter")).toMatchInlineSnapshot( - `"_themeFilter_1883f3"`, + `"invert(93%) hue-rotate(180deg)"`, ); }); diff --git a/packages/excalidraw/tsconfig.json b/packages/excalidraw/tsconfig.json index 4d7d4b3c15..f61b8d0af4 100644 --- a/packages/excalidraw/tsconfig.json +++ b/packages/excalidraw/tsconfig.json @@ -1,15 +1,24 @@ { - "exclude": ["**/*.test.*", "tests", "types", "examples", "dist"], "compilerOptions": { + "outDir": "./dist/types", "target": "ESNext", "strict": true, - "outDir": "dist", "skipLibCheck": true, "declaration": true, "allowSyntheticDefaultImports": true, "module": "ESNext", "moduleResolution": "Node", "resolveJsonModule": true, - "jsx": "react-jsx" - } + "jsx": "react-jsx", + "emitDeclarationOnly": true, + "paths": { + "@excalidraw/excalidraw": ["../excalidraw/index.tsx"], + "@excalidraw/utils": ["../utils/index.ts"], + "@excalidraw/math": ["../math/index.ts"], + "@excalidraw/excalidraw/*": ["../excalidraw/*"], + "@excalidraw/utils/*": ["../utils/*"], + "@excalidraw/math/*": ["../math/*"] + } + }, + "exclude": ["**/*.test.*", "tests", "types", "examples", "dist"] } diff --git a/packages/excalidraw/types.ts b/packages/excalidraw/types.ts index 7dbb2d314c..0562736cd0 100644 --- a/packages/excalidraw/types.ts +++ b/packages/excalidraw/types.ts @@ -41,7 +41,8 @@ import type { IMAGE_MIME_TYPES, MIME_TYPES } from "./constants"; import type { ContextMenuItems } from "./components/ContextMenu"; import type { SnapLine } from "./snapping"; import type { Merge, MaybePromise, ValueOf, MakeBrand } from "./utility-types"; -import type { StoreActionType } from "./store"; +import type { CaptureUpdateActionType } from "./store"; +import type { UserIdleState } from "./constants"; export type SocketId = string & { _brand: "SocketId" }; @@ -588,15 +589,9 @@ export type SceneData = { elements?: ImportedDataState["elements"]; appState?: ImportedDataState["appState"]; collaborators?: Map; - storeAction?: StoreActionType; + captureUpdate?: CaptureUpdateActionType; }; -export enum UserIdleState { - ACTIVE = "active", - AWAY = "away", - IDLE = "idle", -} - export type ExportOpts = { saveFileToDisk?: boolean; onExportToBackend?: ( diff --git a/packages/excalidraw/utils.ts b/packages/excalidraw/utils.ts index 6a682e9cfa..e3e18eb935 100644 --- a/packages/excalidraw/utils.ts +++ b/packages/excalidraw/utils.ts @@ -1,5 +1,5 @@ import Pool from "es6-promise-pool"; -import { average } from "../math"; +import { average } from "@excalidraw/math"; import { COLOR_PALETTE } from "./colors"; import type { EVENT } from "./constants"; import { diff --git a/packages/excalidraw/visualdebug.ts b/packages/excalidraw/visualdebug.ts index 49dacc916e..862f2cf204 100644 --- a/packages/excalidraw/visualdebug.ts +++ b/packages/excalidraw/visualdebug.ts @@ -1,12 +1,12 @@ -import type { Curve } from "../math"; +import type { Curve } from "@excalidraw/math"; import { isLineSegment, lineSegment, pointFrom, type GlobalPoint, type LocalPoint, -} from "../math"; -import type { LineSegment } from "../utils"; +} from "@excalidraw/math"; +import type { LineSegment } from "@excalidraw/utils"; import type { Bounds } from "./element/bounds"; import { isBounds } from "./element/typeChecks"; diff --git a/packages/math/global.d.ts b/packages/math/global.d.ts new file mode 100644 index 0000000000..16ade7a7df --- /dev/null +++ b/packages/math/global.d.ts @@ -0,0 +1,3 @@ +/// +import "@excalidraw/excalidraw/global"; +import "@excalidraw/excalidraw/css"; diff --git a/packages/math/package.json b/packages/math/package.json index b6c87e8f30..a60c971191 100644 --- a/packages/math/package.json +++ b/packages/math/package.json @@ -1,16 +1,20 @@ { "name": "@excalidraw/math", "version": "0.1.0", - "main": "./dist/prod/index.js", "type": "module", + "types": "./dist/types/math/index.d.ts", + "main": "./dist/prod/index.js", "module": "./dist/prod/index.js", "exports": { ".": { "development": "./dist/dev/index.js", + "production": "./dist/prod/index.js", "default": "./dist/prod/index.js" + }, + "./*": { + "types": "./../math/dist/types/math/*" } }, - "types": "./dist/utils/index.d.ts", "files": [ "dist/*" ], @@ -48,14 +52,8 @@ }, "bugs": "https://github.com/excalidraw/excalidraw/issues", "repository": "https://github.com/excalidraw/excalidraw", - "dependencies": { - "@excalidraw/utils": "*" - }, "scripts": { "gen:types": "rm -rf types && tsc", - "build:umd": "cross-env NODE_ENV=production webpack --config webpack.prod.config.js", - "build:esm": "rm -rf dist && node ../../scripts/buildUtils.js && yarn gen:types", - "build:umd:withAnalyzer": "cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js", - "pack": "yarn build:umd && yarn pack" + "build:esm": "rm -rf dist && node ../../scripts/buildMath.js && yarn gen:types" } } diff --git a/packages/math/range.ts b/packages/math/range.ts index 314d1c8aef..d90530cbad 100644 --- a/packages/math/range.ts +++ b/packages/math/range.ts @@ -1,4 +1,4 @@ -import { toBrandedType } from "../excalidraw/utils"; +import { toBrandedType } from "@excalidraw/excalidraw/utils"; import type { InclusiveRange } from "./types"; /** diff --git a/packages/math/tsconfig.json b/packages/math/tsconfig.json new file mode 100644 index 0000000000..f61b8d0af4 --- /dev/null +++ b/packages/math/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "outDir": "./dist/types", + "target": "ESNext", + "strict": true, + "skipLibCheck": true, + "declaration": true, + "allowSyntheticDefaultImports": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "jsx": "react-jsx", + "emitDeclarationOnly": true, + "paths": { + "@excalidraw/excalidraw": ["../excalidraw/index.tsx"], + "@excalidraw/utils": ["../utils/index.ts"], + "@excalidraw/math": ["../math/index.ts"], + "@excalidraw/excalidraw/*": ["../excalidraw/*"], + "@excalidraw/utils/*": ["../utils/*"], + "@excalidraw/math/*": ["../math/*"] + } + }, + "exclude": ["**/*.test.*", "tests", "types", "examples", "dist"] +} diff --git a/packages/math/webpack.prod.config.js b/packages/math/webpack.prod.config.js deleted file mode 100644 index 410d675108..0000000000 --- a/packages/math/webpack.prod.config.js +++ /dev/null @@ -1,55 +0,0 @@ -const webpack = require("webpack"); -const path = require("path"); -const BundleAnalyzerPlugin = - require("webpack-bundle-analyzer").BundleAnalyzerPlugin; - -module.exports = { - mode: "production", - entry: { "excalidraw-math.min": "./index.js" }, - output: { - path: path.resolve(__dirname, "dist"), - filename: "[name].js", - library: "ExcalidrawMath", - libraryTarget: "umd", - }, - resolve: { - extensions: [".tsx", ".ts", ".js", ".css", ".scss"], - }, - optimization: { - runtimeChunk: false, - }, - module: { - rules: [ - { - test: /\.(ts|tsx|js)$/, - use: [ - { - loader: "ts-loader", - options: { - transpileOnly: true, - configFile: path.resolve(__dirname, "../tsconfig.prod.json"), - }, - }, - { - loader: "babel-loader", - - options: { - presets: [ - "@babel/preset-env", - ["@babel/preset-react", { runtime: "automatic" }], - "@babel/preset-typescript", - ], - plugins: [["@babel/plugin-transform-runtime"]], - }, - }, - ], - }, - ], - }, - plugins: [ - new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 1, - }), - ...(process.env.ANALYZER === "true" ? [new BundleAnalyzerPlugin()] : []), - ], -}; diff --git a/packages/tsconfig.dev.json b/packages/tsconfig.dev.json deleted file mode 100644 index 6462aaba3f..0000000000 --- a/packages/tsconfig.dev.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "esNext", - "moduleResolution": "node", - "resolveJsonModule": true, - "jsx": "react-jsx", - "sourceMap": true, - "allowJs": true - } -} diff --git a/packages/tsconfig.prod.json b/packages/tsconfig.prod.json deleted file mode 100644 index 974b46318f..0000000000 --- a/packages/tsconfig.prod.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "target": "es2017", - "module": "es2015", - "moduleResolution": "node", - "resolveJsonModule": true, - "jsx": "react" - } -} diff --git a/packages/utils/bbox.ts b/packages/utils/bbox.ts index 933c630c89..19a1a54300 100644 --- a/packages/utils/bbox.ts +++ b/packages/utils/bbox.ts @@ -3,8 +3,8 @@ import { vectorFromPoint, type GlobalPoint, type LocalPoint, -} from "../math"; -import type { Bounds } from "../excalidraw/element/bounds"; +} from "@excalidraw/math"; +import type { Bounds } from "@excalidraw/excalidraw/element/bounds"; export type LineSegment

= [P, P]; diff --git a/packages/utils/collision.test.ts b/packages/utils/collision.test.ts index 300b5acc58..744bea3677 100644 --- a/packages/utils/collision.test.ts +++ b/packages/utils/collision.test.ts @@ -1,4 +1,4 @@ -import type { Curve, Degrees, GlobalPoint } from "../math"; +import type { Curve, Degrees, GlobalPoint } from "@excalidraw/math"; import { curve, degreesToRadians, @@ -6,7 +6,7 @@ import { lineSegmentRotate, pointFrom, pointRotateDegs, -} from "../math"; +} from "@excalidraw/math"; import { pointOnCurve, pointOnPolyline } from "./collision"; import type { Polyline } from "./geometry/shape"; diff --git a/packages/utils/collision.ts b/packages/utils/collision.ts index 5af742b508..fb48f4e45b 100644 --- a/packages/utils/collision.ts +++ b/packages/utils/collision.ts @@ -4,7 +4,7 @@ import { pointOnEllipse, type GeometricShape, } from "./geometry/shape"; -import type { Curve } from "../math"; +import type { Curve } from "@excalidraw/math"; import { lineSegment, pointFrom, @@ -15,7 +15,7 @@ import { type GlobalPoint, type LocalPoint, type Polygon, -} from "../math"; +} from "@excalidraw/math"; // check if the given point is considered on the given shape's border export const isPointOnShape = ( diff --git a/packages/utils/export.test.ts b/packages/utils/export.test.ts index b04ec44e24..e2af763b55 100644 --- a/packages/utils/export.test.ts +++ b/packages/utils/export.test.ts @@ -1,9 +1,9 @@ import * as utils from "."; -import { diagramFactory } from "../excalidraw/tests/fixtures/diagramFixture"; +import { diagramFactory } from "@excalidraw/excalidraw/tests/fixtures/diagramFixture"; import { vi } from "vitest"; -import * as mockedSceneExportUtils from "../excalidraw/scene/export"; +import * as mockedSceneExportUtils from "@excalidraw/excalidraw/scene/export"; -import { MIME_TYPES } from "../excalidraw/constants"; +import { MIME_TYPES } from "@excalidraw/excalidraw/constants"; const exportToSvgSpy = vi.spyOn(mockedSceneExportUtils, "exportToSvg"); diff --git a/packages/utils/export.ts b/packages/utils/export.ts index a82ef66e62..22287ce7e6 100644 --- a/packages/utils/export.ts +++ b/packages/utils/export.ts @@ -1,23 +1,23 @@ import { exportToCanvas as _exportToCanvas, exportToSvg as _exportToSvg, -} from "../excalidraw/scene/export"; -import { getDefaultAppState } from "../excalidraw/appState"; -import type { AppState, BinaryFiles } from "../excalidraw/types"; +} from "@excalidraw/excalidraw/scene/export"; +import { getDefaultAppState } from "@excalidraw/excalidraw/appState"; +import type { AppState, BinaryFiles } from "@excalidraw/excalidraw/types"; import type { ExcalidrawElement, ExcalidrawFrameLikeElement, NonDeleted, -} from "../excalidraw/element/types"; -import { restore } from "../excalidraw/data/restore"; -import { MIME_TYPES } from "../excalidraw/constants"; -import { encodePngMetadata } from "../excalidraw/data/image"; -import { serializeAsJSON } from "../excalidraw/data/json"; +} from "@excalidraw/excalidraw/element/types"; +import { restore } from "@excalidraw/excalidraw/data/restore"; +import { MIME_TYPES } from "@excalidraw/excalidraw/constants"; +import { encodePngMetadata } from "@excalidraw/excalidraw/data/image"; +import { serializeAsJSON } from "@excalidraw/excalidraw/data/json"; import { copyBlobToClipboardAsPng, copyTextToSystemClipboard, copyToClipboard, -} from "../excalidraw/clipboard"; +} from "@excalidraw/excalidraw/clipboard"; export { MIME_TYPES }; diff --git a/packages/utils/geometry/geometry.test.ts b/packages/utils/geometry/geometry.test.ts index 3f425d0564..e9ad067fe2 100644 --- a/packages/utils/geometry/geometry.test.ts +++ b/packages/utils/geometry/geometry.test.ts @@ -1,4 +1,9 @@ -import type { GlobalPoint, LineSegment, Polygon, Radians } from "../../math"; +import type { + GlobalPoint, + LineSegment, + Polygon, + Radians, +} from "@excalidraw/math"; import { pointFrom, lineSegment, @@ -7,7 +12,7 @@ import { pointOnPolygon, polygonIncludesPoint, segmentsIntersectAt, -} from "../../math"; +} from "@excalidraw/math"; import { pointInEllipse, pointOnEllipse, type Ellipse } from "./shape"; describe("point and line", () => { diff --git a/packages/utils/geometry/shape.ts b/packages/utils/geometry/shape.ts index 4670b23ab1..2ba04a2b2f 100644 --- a/packages/utils/geometry/shape.ts +++ b/packages/utils/geometry/shape.ts @@ -12,7 +12,7 @@ * to pure shapes */ -import type { Curve, LineSegment, Polygon, Radians } from "../../math"; +import type { Curve, LineSegment, Polygon, Radians } from "@excalidraw/math"; import { curve, lineSegment, @@ -31,8 +31,8 @@ import { vectorScale, type GlobalPoint, type LocalPoint, -} from "../../math"; -import { getElementAbsoluteCoords } from "../../excalidraw/element"; +} from "@excalidraw/math"; +import { getElementAbsoluteCoords } from "@excalidraw/excalidraw/element"; import type { ElementsMap, ExcalidrawBindableElement, @@ -48,10 +48,10 @@ import type { ExcalidrawRectangleElement, ExcalidrawSelectionElement, ExcalidrawTextElement, -} from "../../excalidraw/element/types"; +} from "@excalidraw/excalidraw/element/types"; import { pointsOnBezierCurves } from "points-on-curve"; import type { Drawable, Op } from "roughjs/bin/core"; -import { invariant } from "../../excalidraw/utils"; +import { invariant } from "@excalidraw/excalidraw/utils"; // a polyline (made up term here) is a line consisting of other line segments // this corresponds to a straight line element in the editor but it could also diff --git a/packages/utils/global.d.ts b/packages/utils/global.d.ts index faf1d18785..16ade7a7df 100644 --- a/packages/utils/global.d.ts +++ b/packages/utils/global.d.ts @@ -1,3 +1,3 @@ /// -import "../excalidraw/global"; -import "../excalidraw/css"; +import "@excalidraw/excalidraw/global"; +import "@excalidraw/excalidraw/css"; diff --git a/packages/utils/index.ts b/packages/utils/index.ts index 9ba56da871..2a929134e4 100644 --- a/packages/utils/index.ts +++ b/packages/utils/index.ts @@ -1,4 +1,4 @@ export * from "./export"; export * from "./withinBounds"; export * from "./bbox"; -export { getCommonBounds } from "../excalidraw/element/bounds"; +export { getCommonBounds } from "@excalidraw/excalidraw/element/bounds"; diff --git a/packages/utils/package.json b/packages/utils/package.json index b739eddc74..ddda1e7d61 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,20 +1,25 @@ { "name": "@excalidraw/utils", "version": "0.1.2", - "main": "./dist/prod/index.js", "type": "module", + "types": "./dist/types/utils/index.d.ts", + "main": "./dist/prod/index.js", "module": "./dist/prod/index.js", "exports": { ".": { + "types": "./dist/types/utils/index.d.ts", "development": "./dist/dev/index.js", + "production": "./dist/prod/index.js", "default": "./dist/prod/index.js" + }, + "./*": { + "types": "./../utils/dist/types/utils/*" } }, - "types": "./dist/utils/index.d.ts", "files": [ "dist/*" ], - "description": "Excalidraw utilities functions", + "description": "Excalidraw utility functions", "publishConfig": { "access": "public" }, @@ -47,7 +52,7 @@ "@excalidraw/laser-pointer": "1.3.1", "browser-fs-access": "0.29.1", "open-color": "1.9.1", - "pako": "1.0.11", + "pako": "2.0.3", "perfect-freehand": "1.2.0", "png-chunk-text": "1.0.0", "png-chunks-encode": "1.0.0", @@ -55,35 +60,16 @@ "roughjs": "4.6.4" }, "devDependencies": { - "@babel/core": "7.24.5", - "@babel/plugin-transform-arrow-functions": "7.24.1", - "@babel/plugin-transform-async-to-generator": "7.24.1", - "@babel/plugin-transform-runtime": "7.24.3", - "@babel/plugin-transform-typescript": "7.24.5", - "@babel/preset-env": "7.24.5", - "@babel/preset-typescript": "7.24.1", - "babel-loader": "8.2.5", - "babel-plugin-transform-class-properties": "6.24.1", "cross-env": "7.0.3", - "css-loader": "6.7.1", - "file-loader": "6.2.0", "fonteditor-core": "2.4.0", - "sass-loader": "13.0.2", - "ts-loader": "9.3.1", "typescript": "4.9.4", "wawoff2": "2.0.1", - "webpack": "5.76.0", - "webpack-bundle-analyzer": "4.5.0", - "webpack-cli": "4.10.0", "which": "4.0.0" }, "bugs": "https://github.com/excalidraw/excalidraw/issues", "repository": "https://github.com/excalidraw/excalidraw", "scripts": { "gen:types": "rm -rf types && tsc", - "build:umd": "cross-env NODE_ENV=production webpack --config webpack.prod.config.js", - "build:esm": "rm -rf dist && node ../../scripts/buildUtils.js && yarn gen:types", - "build:umd:withAnalyzer": "cross-env NODE_ENV=production ANALYZER=true webpack --config webpack.prod.config.js", - "pack": "yarn build:umd && yarn pack" + "build:esm": "rm -rf dist && node ../../scripts/buildUtils.js && yarn gen:types" } } diff --git a/packages/utils/tsconfig.json b/packages/utils/tsconfig.json index f8aa631e90..f61b8d0af4 100644 --- a/packages/utils/tsconfig.json +++ b/packages/utils/tsconfig.json @@ -1,16 +1,24 @@ { "compilerOptions": { + "outDir": "./dist/types", "target": "ESNext", "strict": true, - "outDir": "dist", "skipLibCheck": true, "declaration": true, - "emitDeclarationOnly": true, "allowSyntheticDefaultImports": true, "module": "ESNext", "moduleResolution": "Node", "resolveJsonModule": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "emitDeclarationOnly": true, + "paths": { + "@excalidraw/excalidraw": ["../excalidraw/index.tsx"], + "@excalidraw/utils": ["../utils/index.ts"], + "@excalidraw/math": ["../math/index.ts"], + "@excalidraw/excalidraw/*": ["../excalidraw/*"], + "@excalidraw/utils/*": ["../utils/*"], + "@excalidraw/math/*": ["../math/*"] + } }, - "exclude": ["**/*.test.*", "**/tests/*", "types", "dist"] + "exclude": ["**/*.test.*", "tests", "types", "examples", "dist"] } diff --git a/packages/utils/utils.unmocked.test.ts b/packages/utils/utils.unmocked.test.ts index e79a981c43..341adef95d 100644 --- a/packages/utils/utils.unmocked.test.ts +++ b/packages/utils/utils.unmocked.test.ts @@ -1,8 +1,8 @@ -import type { ImportedDataState } from "../excalidraw/data/types"; -import * as utils from "../utils"; -import { API } from "../excalidraw/tests/helpers/api"; -import { decodeSvgBase64Payload } from "../excalidraw/scene/export"; -import { decodePngMetadata } from "../excalidraw/data/image"; +import type { ImportedDataState } from "@excalidraw/excalidraw/data/types"; +import * as utils from "./index"; +import { API } from "@excalidraw/excalidraw/tests/helpers/api"; +import { decodeSvgBase64Payload } from "@excalidraw/excalidraw/scene/export"; +import { decodePngMetadata } from "@excalidraw/excalidraw/data/image"; // 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 diff --git a/packages/utils/webpack.prod.config.js b/packages/utils/webpack.prod.config.js deleted file mode 100644 index 7238ad0295..0000000000 --- a/packages/utils/webpack.prod.config.js +++ /dev/null @@ -1,60 +0,0 @@ -const webpack = require("webpack"); -const path = require("path"); -const BundleAnalyzerPlugin = - require("webpack-bundle-analyzer").BundleAnalyzerPlugin; - -module.exports = { - mode: "production", - entry: { "excalidraw-utils.min": "./index.js" }, - output: { - path: path.resolve(__dirname, "dist"), - filename: "[name].js", - library: "ExcalidrawUtils", - libraryTarget: "umd", - }, - resolve: { - extensions: [".tsx", ".ts", ".js", ".css", ".scss"], - }, - optimization: { - runtimeChunk: false, - }, - module: { - rules: [ - { - test: /\.(sa|sc|c)ss$/, - exclude: /node_modules/, - use: ["style-loader", { loader: "css-loader" }, "sass-loader"], - }, - { - test: /\.(ts|tsx|js)$/, - use: [ - { - loader: "ts-loader", - options: { - transpileOnly: true, - configFile: path.resolve(__dirname, "../tsconfig.prod.json"), - }, - }, - { - loader: "babel-loader", - - options: { - presets: [ - "@babel/preset-env", - ["@babel/preset-react", { runtime: "automatic" }], - "@babel/preset-typescript", - ], - plugins: [["@babel/plugin-transform-runtime"]], - }, - }, - ], - }, - ], - }, - plugins: [ - new webpack.optimize.LimitChunkCountPlugin({ - maxChunks: 1, - }), - ...(process.env.ANALYZER === "true" ? [new BundleAnalyzerPlugin()] : []), - ], -}; diff --git a/packages/utils/withinBounds.test.ts b/packages/utils/withinBounds.test.ts index d0cc5e339e..85354d7426 100644 --- a/packages/utils/withinBounds.test.ts +++ b/packages/utils/withinBounds.test.ts @@ -1,5 +1,5 @@ -import type { Bounds } from "../excalidraw/element/bounds"; -import { API } from "../excalidraw/tests/helpers/api"; +import type { Bounds } from "@excalidraw/excalidraw/element/bounds"; +import { API } from "@excalidraw/excalidraw/tests/helpers/api"; import { elementPartiallyOverlapsWithOrContainsBBox, elementsOverlappingBBox, diff --git a/packages/utils/withinBounds.ts b/packages/utils/withinBounds.ts index 72c53aedfb..8d52eb3adc 100644 --- a/packages/utils/withinBounds.ts +++ b/packages/utils/withinBounds.ts @@ -3,24 +3,24 @@ import type { ExcalidrawFreeDrawElement, ExcalidrawLinearElement, NonDeletedExcalidrawElement, -} from "../excalidraw/element/types"; +} from "@excalidraw/excalidraw/element/types"; import { isArrowElement, isExcalidrawElement, isFreeDrawElement, isLinearElement, isTextElement, -} from "../excalidraw/element/typeChecks"; -import type { Bounds } from "../excalidraw/element/bounds"; -import { getElementBounds } from "../excalidraw/element/bounds"; -import { arrayToMap } from "../excalidraw/utils"; -import type { LocalPoint } from "../math"; +} from "@excalidraw/excalidraw/element/typeChecks"; +import type { Bounds } from "@excalidraw/excalidraw/element/bounds"; +import { getElementBounds } from "@excalidraw/excalidraw/element/bounds"; +import { arrayToMap } from "@excalidraw/excalidraw/utils"; +import type { LocalPoint } from "@excalidraw/math"; import { rangeIncludesValue, pointFrom, pointRotateRads, rangeInclusive, -} from "../math"; +} from "@excalidraw/math"; type Element = NonDeletedExcalidrawElement; type Elements = readonly NonDeletedExcalidrawElement[]; diff --git a/scripts/buildExample.mjs b/scripts/buildExample.mjs deleted file mode 100644 index 5cc50c6c63..0000000000 --- a/scripts/buildExample.mjs +++ /dev/null @@ -1,36 +0,0 @@ -import * as esbuild from "esbuild"; -import { sassPlugin } from "esbuild-sass-plugin"; -import { execSync } from "child_process"; - -const createDevBuild = async () => { - return await esbuild.build({ - entryPoints: ["../../examples/excalidraw/with-script-in-browser/index.tsx"], - outfile: - "../../examples/excalidraw/with-script-in-browser/public/bundle.js", - define: { - "import.meta.env": "{}", - }, - bundle: true, - format: "esm", - plugins: [sassPlugin()], - loader: { - ".woff2": "dataurl", - ".html": "copy", - }, - }); -}; - -const startServer = async (ctx) => { - await ctx.serve({ - servedir: "example/public", - port: 5001, - }); -}; -execSync( - `rm -rf ../../examples/excalidraw/with-script-in-browser/public/dist && yarn build:esm && cp -r dist ../../examples/excalidraw/with-script-in-browser/public`, -); - -const ctx = await createDevBuild(); - -// await startServer(ctx); -// console.info("Hosted at port http://localhost:5001!!"); diff --git a/scripts/buildMath.js b/scripts/buildMath.js index 47c191af54..fd2f820eaa 100644 --- a/scripts/buildMath.js +++ b/scripts/buildMath.js @@ -1,108 +1,52 @@ -const fs = require("fs"); +const path = require("path"); const { build } = require("esbuild"); +const { sassPlugin } = require("esbuild-sass-plugin"); -const browserConfig = { - entryPoints: ["index.ts"], +// contains all dependencies bundled inside +const getConfig = (outdir) => ({ + outdir, bundle: true, format: "esm", -}; + entryPoints: ["index.ts"], + entryNames: "[name]", + assetNames: "[dir]/[name]", + alias: { + "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), + "@excalidraw/utils": path.resolve(__dirname, "../packages/utils"), + "@excalidraw/math": path.resolve(__dirname, "../packages/math"), + }, +}); -// Will be used later for treeshaking - -// function getFiles(dir, files = []) { -// const fileList = fs.readdirSync(dir); -// for (const file of fileList) { -// const name = `${dir}/${file}`; -// if ( -// name.includes("node_modules") || -// name.includes("config") || -// name.includes("package.json") || -// name.includes("main.js") || -// name.includes("index-node.ts") || -// name.endsWith(".d.ts") || -// name.endsWith(".md") -// ) { -// continue; -// } - -// if (fs.statSync(name).isDirectory()) { -// getFiles(name, files); -// } else if ( -// name.match(/\.(sa|sc|c)ss$/) || -// name.match(/\.(woff|woff2|eot|ttf|otf)$/) || -// name.match(/locales\/[^/]+\.json$/) -// ) { -// continue; -// } else { -// files.push(name); -// } -// } -// return files; -// } -const createESMBrowserBuild = async () => { - // Development unminified build with source maps - const browserDev = await build({ - ...browserConfig, - outdir: "dist/browser/dev", +function buildDev(config) { + return build({ + ...config, + plugins: [sassPlugin()], sourcemap: true, - metafile: true, define: { "import.meta.env": JSON.stringify({ DEV: true }), }, }); - fs.writeFileSync( - "meta-browser-dev.json", - JSON.stringify(browserDev.metafile), - ); +} - // production minified build without sourcemaps - const browserProd = await build({ - ...browserConfig, - outdir: "dist/browser/prod", +function buildProd(config) { + return build({ + ...config, + plugins: [sassPlugin()], minify: true, - metafile: true, define: { "import.meta.env": JSON.stringify({ PROD: true }), }, }); - fs.writeFileSync( - "meta-browser-prod.json", - JSON.stringify(browserProd.metafile), - ); -}; - -const rawConfig = { - entryPoints: ["index.ts"], - bundle: true, - format: "esm", - packages: "external", -}; +} const createESMRawBuild = async () => { - // Development unminified build with source maps - const rawDev = await build({ - ...rawConfig, - outdir: "dist/dev", - sourcemap: true, - metafile: true, - define: { - "import.meta.env": JSON.stringify({ DEV: true }), - }, - }); - fs.writeFileSync("meta-raw-dev.json", JSON.stringify(rawDev.metafile)); + // development unminified build with source maps + buildDev(getConfig("dist/dev")); // production minified build without sourcemaps - const rawProd = await build({ - ...rawConfig, - outdir: "dist/prod", - minify: true, - metafile: true, - define: { - "import.meta.env": JSON.stringify({ PROD: true }), - }, - }); - fs.writeFileSync("meta-raw-prod.json", JSON.stringify(rawProd.metafile)); + buildProd(getConfig("dist/prod")); }; -createESMRawBuild(); -createESMBrowserBuild(); +(async () => { + await createESMRawBuild(); +})(); diff --git a/scripts/buildPackage.js b/scripts/buildPackage.js index 0dd925ed57..e00eb96cb3 100644 --- a/scripts/buildPackage.js +++ b/scripts/buildPackage.js @@ -1,165 +1,67 @@ +const path = require("path"); const { build } = require("esbuild"); const { sassPlugin } = require("esbuild-sass-plugin"); -const { externalGlobalPlugin } = require("esbuild-plugin-external-global"); -// Will be used later for treeshaking -//const fs = require("fs"); -// const path = require("path"); - -// function getFiles(dir, files = []) { -// const fileList = fs.readdirSync(dir); -// for (const file of fileList) { -// const name = `${dir}/${file}`; -// if ( -// name.includes("node_modules") || -// name.includes("config") || -// name.includes("package.json") || -// name.includes("main.js") || -// name.includes("index-node.ts") || -// name.endsWith(".d.ts") -// ) { -// continue; -// } - -// if (fs.statSync(name).isDirectory()) { -// getFiles(name, files); -// } else if ( -// !( -// name.match(/\.(sa|sc|c)ss$/) || -// name.match(/\.(woff|woff2|eot|ttf|otf)$/) || -// name.match(/locales\/[^/]+\.json$/) -// ) -// ) { -// continue; -// } else { -// files.push(name); -// } -// } -// return files; -// } - -const browserConfig = { - entryPoints: ["index.tsx"], +// excludes all external dependencies and bundles only the source code +const getConfig = (outdir) => ({ + outdir, bundle: true, - format: "esm", - plugins: [ - sassPlugin(), - externalGlobalPlugin({ - react: "React", - "react-dom": "ReactDOM", - }), - ], splitting: true, - loader: { - ".woff2": "file", - }, -}; -const createESMBrowserBuild = async () => { - // Development unminified build with source maps - await build({ - ...browserConfig, - outdir: "dist/browser/dev", - sourcemap: true, - chunkNames: "excalidraw-assets-dev/[name]-[hash]", - assetNames: "excalidraw-assets-dev/[name]-[hash]", - define: { - "import.meta.env": JSON.stringify({ DEV: true }), - }, - }); - - // production minified build without sourcemaps - await build({ - ...browserConfig, - outdir: "dist/browser/prod", - minify: true, - chunkNames: "excalidraw-assets/[name]-[hash]", - assetNames: "excalidraw-assets/[name]-[hash]", - define: { - "import.meta.env": JSON.stringify({ PROD: true }), - }, - }); -}; - -// const BASE_PATH = `${path.resolve(`${__dirname}/..`)}`; -// const filesinExcalidrawPackage = [ -// ...getFiles(`${BASE_PATH}/packages/excalidraw`), -// `${BASE_PATH}/packages/utils/export.ts`, -// `${BASE_PATH}/packages/utils/bbox.ts`, -// ...getFiles(`${BASE_PATH}/public/fonts`), -// ]; - -// const filesToTransform = filesinExcalidrawPackage.filter((file) => { -// return !( -// file.includes("/__tests__/") || -// file.includes(".test.") || -// file.includes("/tests/") || -// file.includes("example") -// ); -// }); - -const rawConfigCommon = { - bundle: true, format: "esm", + packages: "external", plugins: [sassPlugin()], - assetNames: "[dir]/[name]-[hash]", + target: "es2020", + assetNames: "[dir]/[name]", + chunkNames: "[dir]/[name]-[hash]", + alias: { + "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), + "@excalidraw/utils": path.resolve(__dirname, "../packages/utils"), + "@excalidraw/math": path.resolve(__dirname, "../packages/math"), + }, loader: { - ".json": "copy", ".woff2": "file", }, - packages: "external", - // chunks are always external, so they are not bundled within and get build separately - external: ["*.chunk"], -}; +}); -const rawConfigIndex = { - ...rawConfigCommon, - entryPoints: ["index.tsx"], -}; - -const rawConfigChunks = { - ...rawConfigCommon, - // create a separate chunk for each - entryPoints: ["**/*.chunk.ts"], -}; - -function buildDev(chunkConfig) { - const config = { - ...chunkConfig, +function buildDev(config) { + return build({ + ...config, sourcemap: true, define: { "import.meta.env": JSON.stringify({ DEV: true }), }, - outdir: "dist/dev", - }; - - return build(config); + }); } -function buildProd(chunkConfig) { - const config = { - ...chunkConfig, +function buildProd(config) { + return build({ + ...config, minify: true, define: { "import.meta.env": JSON.stringify({ PROD: true }), }, - outdir: "dist/prod", - }; - - return build(config); + }); } const createESMRawBuild = async () => { + const chunksConfig = { + entryPoints: ["index.tsx", "**/*.chunk.ts"], + entryNames: "[name]", + }; + // development unminified build with source maps - await buildDev(rawConfigIndex); - await buildDev(rawConfigChunks); + await buildDev({ + ...getConfig("dist/dev"), + ...chunksConfig, + }); // production minified buld without sourcemaps - await buildProd(rawConfigIndex); - await buildProd(rawConfigChunks); + await buildProd({ + ...getConfig("dist/prod"), + ...chunksConfig, + }); }; -// otherwise throws "ERROR: Could not resolve "./subset-worker.chunk" (async () => { await createESMRawBuild(); - await createESMBrowserBuild(); })(); diff --git a/scripts/buildUtils.js b/scripts/buildUtils.js index 6e4780a816..65b947385d 100644 --- a/scripts/buildUtils.js +++ b/scripts/buildUtils.js @@ -1,130 +1,58 @@ -const fs = require("fs"); +const path = require("path"); const { build } = require("esbuild"); const { sassPlugin } = require("esbuild-sass-plugin"); const { woff2ServerPlugin } = require("./woff2/woff2-esbuild-plugins"); -const browserConfig = { - entryPoints: ["index.ts"], +// contains all dependencies bundled inside +const getConfig = (outdir) => ({ + outdir, bundle: true, format: "esm", - plugins: [sassPlugin()], - assetNames: "assets/[name]", - loader: { - ".woff2": "file", + entryPoints: ["index.ts"], + entryNames: "[name]", + assetNames: "[dir]/[name]", + alias: { + "@excalidraw/excalidraw": path.resolve(__dirname, "../packages/excalidraw"), + "@excalidraw/utils": path.resolve(__dirname, "../packages/utils"), + "@excalidraw/math": path.resolve(__dirname, "../packages/math"), }, -}; +}); -// Will be used later for treeshaking - -// function getFiles(dir, files = []) { -// const fileList = fs.readdirSync(dir); -// for (const file of fileList) { -// const name = `${dir}/${file}`; -// if ( -// name.includes("node_modules") || -// name.includes("config") || -// name.includes("package.json") || -// name.includes("main.js") || -// name.includes("index-node.ts") || -// name.endsWith(".d.ts") || -// name.endsWith(".md") -// ) { -// continue; -// } - -// if (fs.statSync(name).isDirectory()) { -// getFiles(name, files); -// } else if ( -// name.match(/\.(sa|sc|c)ss$/) || -// name.match(/\.(woff|woff2|eot|ttf|otf)$/) || -// name.match(/locales\/[^/]+\.json$/) -// ) { -// continue; -// } else { -// files.push(name); -// } -// } -// return files; -// } -const createESMBrowserBuild = async () => { - // Development unminified build with source maps - const browserDev = await build({ - ...browserConfig, - outdir: "dist/browser/dev", +function buildDev(config) { + return build({ + ...config, sourcemap: true, - metafile: true, + plugins: [sassPlugin(), woff2ServerPlugin()], define: { "import.meta.env": JSON.stringify({ DEV: true }), }, }); - fs.writeFileSync( - "meta-browser-dev.json", - JSON.stringify(browserDev.metafile), - ); +} - // production minified build without sourcemaps - const browserProd = await build({ - ...browserConfig, - outdir: "dist/browser/prod", +function buildProd(config) { + return build({ + ...config, minify: true, - metafile: true, - define: { - "import.meta.env": JSON.stringify({ PROD: true }), - }, - }); - fs.writeFileSync( - "meta-browser-prod.json", - JSON.stringify(browserProd.metafile), - ); -}; - -const rawConfig = { - entryPoints: ["index.ts"], - bundle: true, - format: "esm", -}; - -// const BASE_PATH = `${path.resolve(`${__dirname}/..`)}`; -// const filesinExcalidrawPackage = getFiles(`${BASE_PATH}/packages/utils`); - -// const filesToTransform = filesinExcalidrawPackage.filter((file) => { -// return !( -// file.includes("/__tests__/") || -// file.includes(".test.") || -// file.includes("/tests/") || -// file.includes("example") -// ); -// }); -const createESMRawBuild = async () => { - // Development unminified build with source maps - const rawDev = await build({ - ...rawConfig, - outdir: "dist/dev", - sourcemap: true, - metafile: true, - plugins: [sassPlugin(), woff2ServerPlugin({ outdir: "dist/dev/assets" })], - define: { - "import.meta.env": JSON.stringify({ DEV: true }), - }, - }); - fs.writeFileSync("meta-raw-dev.json", JSON.stringify(rawDev.metafile)); - - // production minified build without sourcemaps - const rawProd = await build({ - ...rawConfig, - outdir: "dist/prod", - minify: true, - metafile: true, plugins: [ sassPlugin(), - woff2ServerPlugin({ outdir: "dist/prod/assets", generateTtf: true }), + woff2ServerPlugin({ + outdir: `${config.outdir}/assets`, + }), ], define: { "import.meta.env": JSON.stringify({ PROD: true }), }, }); - fs.writeFileSync("meta-raw-prod.json", JSON.stringify(rawProd.metafile)); +} + +const createESMRawBuild = async () => { + // development unminified build with source maps + buildDev(getConfig("dist/dev")); + + // production minified build without sourcemaps + buildProd(getConfig("dist/prod")); }; -createESMRawBuild(); -createESMBrowserBuild(); +(async () => { + await createESMRawBuild(); +})(); diff --git a/scripts/prerelease.js b/scripts/prerelease.js index 1641f99e19..3b8080d338 100644 --- a/scripts/prerelease.js +++ b/scripts/prerelease.js @@ -3,7 +3,7 @@ const util = require("util"); const exec = util.promisify(require("child_process").exec); const updateChangelog = require("./updateChangelog"); -const excalidrawDir = `${__dirname}/../packages/excalidraw/packages/excalidraw`; +const excalidrawDir = `${__dirname}/../packages/excalidraw/`; const excalidrawPackage = `${excalidrawDir}/package.json`; const updatePackageVersion = (nextVersion) => { diff --git a/scripts/woff2/woff2-esbuild-plugins.js b/scripts/woff2/woff2-esbuild-plugins.js index e53dd0299e..19ebafc93b 100644 --- a/scripts/woff2/woff2-esbuild-plugins.js +++ b/scripts/woff2/woff2-esbuild-plugins.js @@ -20,8 +20,6 @@ module.exports.woff2ServerPlugin = (options = {}) => { return { name: "woff2ServerPlugin", setup(build) { - const { outdir, generateTtf } = options; - const outputDir = path.resolve(outdir); const fonts = new Map(); build.onResolve({ filter: /\.woff2$/ }, (args) => { @@ -94,9 +92,12 @@ module.exports.woff2ServerPlugin = (options = {}) => { ); build.onEnd(async () => { - if (!generateTtf) { + const { outdir } = options; + + if (!outdir) { return; } + const outputDir = path.resolve(outdir); const isFontToolsInstalled = await which("fonttools", { nothrow: true, diff --git a/tsconfig.json b/tsconfig.json index 617b3531cf..3eded705f5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,9 @@ { "compilerOptions": { - "types": ["vitest/globals", "@testing-library/jest-dom"], + "rootDir": "./", "target": "ESNext", "lib": ["dom", "dom.iterable", "esnext"], + "types": ["vitest/globals", "@testing-library/jest-dom"], "allowJs": true, "skipLibCheck": true, "esModuleInterop": true, @@ -15,8 +16,17 @@ "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, - "jsx": "react-jsx" + "jsx": "react-jsx", + "baseUrl": ".", + "paths": { + "@excalidraw/excalidraw": ["./packages/excalidraw/index.tsx"], + "@excalidraw/utils": ["./packages/utils/index.ts"], + "@excalidraw/math": ["./packages/math/index.ts"], + "@excalidraw/excalidraw/*": ["./packages/excalidraw/*"], + "@excalidraw/utils/*": ["./packages/utils/*"], + "@excalidraw/math/*": ["./packages/math/*"] + } }, "include": ["packages", "excalidraw-app"], - "exclude": ["packages/excalidraw/types", "examples"] + "exclude": ["examples", "dist", "types", "tests"] } diff --git a/vitest.config.mts b/vitest.config.mts index 99098eb915..f9d7d255ee 100644 --- a/vitest.config.mts +++ b/vitest.config.mts @@ -1,6 +1,36 @@ +import path from "path"; + import { defineConfig } from "vitest/config"; export default defineConfig({ + resolve: { + alias: [ + { + find: /^@excalidraw\/excalidraw$/, + replacement: path.resolve(__dirname, "./packages/excalidraw/index.tsx"), + }, + { + find: /^@excalidraw\/excalidraw\/(.*?)/, + replacement: path.resolve(__dirname, "./packages/excalidraw/$1"), + }, + { + find: /^@excalidraw\/utils$/, + replacement: path.resolve(__dirname, "./packages/utils/index.ts"), + }, + { + find: /^@excalidraw\/utils\/(.*?)/, + replacement: path.resolve(__dirname, "./packages/utils/$1"), + }, + { + find: /^@excalidraw\/math$/, + replacement: path.resolve(__dirname, "./packages/math/index.ts"), + }, + { + find: /^@excalidraw\/math\/(.*?)/, + replacement: path.resolve(__dirname, "./packages/math/$1"), + }, + ], + }, //@ts-ignore test: { // Since hooks are running in stack in v2, which means all hooks run serially whereas diff --git a/yarn.lock b/yarn.lock index 5c1197d306..043db6da06 100644 --- a/yarn.lock +++ b/yarn.lock @@ -31,7 +31,7 @@ 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.24.2", "@babel/code-frame@^7.26.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -40,32 +40,11 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.24.4", "@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== -"@babel/core@7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" - integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== - dependencies: - "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.24.5" - "@babel/helpers" "^7.24.5" - "@babel/parser" "^7.24.5" - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.5" - "@babel/types" "^7.24.5" - convert-source-map "^2.0.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.3" - semver "^6.3.1" - "@babel/core@^7.16.0", "@babel/core@^7.20.12", "@babel/core@^7.21.3", "@babel/core@^7.24.4": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.9.tgz#71838542a4b1e49dfed353d7acbc6eb89f4a76f2" @@ -96,7 +75,7 @@ eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.24.5", "@babel/generator@^7.26.9": +"@babel/generator@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.9.tgz#75a9482ad3d0cc7188a537aa4910bc59db67cbca" integrity sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg== @@ -107,14 +86,14 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.22.5", "@babel/helper-annotate-as-pure@^7.25.9": +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== dependencies: "@babel/types" "^7.25.9" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== @@ -125,7 +104,7 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.24.5", "@babel/helper-create-class-features-plugin@^7.25.9": +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0", "@babel/helper-create-class-features-plugin@^7.25.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz#d6f83e3039547fbb39967e78043cd3c8b7820c71" integrity sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg== @@ -166,7 +145,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3", "@babel/helper-module-imports@^7.25.9": +"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== @@ -174,7 +153,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helper-module-transforms@^7.24.5", "@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": +"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== @@ -190,12 +169,12 @@ dependencies: "@babel/types" "^7.25.9" -"@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.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.24.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== -"@babel/helper-remap-async-to-generator@^7.22.20", "@babel/helper-remap-async-to-generator@^7.25.9": +"@babel/helper-remap-async-to-generator@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== @@ -231,7 +210,7 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== -"@babel/helper-validator-option@^7.23.5", "@babel/helper-validator-option@^7.25.9": +"@babel/helper-validator-option@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== @@ -245,7 +224,7 @@ "@babel/traverse" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/helpers@^7.24.5", "@babel/helpers@^7.26.9": +"@babel/helpers@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.9.tgz#28f3fb45252fc88ef2dc547c8a911c255fc9fef6" integrity sha512-Mz/4+y8udxBKdmzt/UjPACs4G3j5SshJJEFFKxlCGPydG4JAHXxjWjAwjd09tf6oINvl1VfMJo+nB7H2YKQ0dA== @@ -263,14 +242,14 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.24.5", "@babel/parser@^7.25.4", "@babel/parser@^7.26.9": +"@babel/parser@^7.25.4", "@babel/parser@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.9.tgz#d9e78bee6dc80f9efd8f2349dcfbbcdace280fd5" integrity sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A== dependencies: "@babel/types" "^7.26.9" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5", "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== @@ -285,14 +264,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== @@ -301,7 +280,7 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" "@babel/plugin-transform-optional-chaining" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== @@ -364,7 +343,7 @@ resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-proposal-private-property-in-object@7.21.11", "@babel/plugin-proposal-private-property-in-object@^7.16.7": +"@babel/plugin-proposal-private-property-in-object@^7.16.7": version "7.21.11" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== @@ -374,27 +353,6 @@ "@babel/helper-plugin-utils" "^7.20.2" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@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== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-decorators@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz#986b4ca8b7b5df3f67cee889cedeffc2e2bf14b3" @@ -402,20 +360,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - "@babel/plugin-syntax-flow@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz#96507595c21b45fccfc2bc758d5c45452e6164fa" @@ -423,48 +367,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-assertions@^7.24.1", "@babel/plugin-syntax-import-assertions@^7.26.0": +"@babel/plugin-syntax-import-assertions@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.1", "@babel/plugin-syntax-import-attributes@^7.26.0": +"@babel/plugin-syntax-import-attributes@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-meta@^7.10.4": - 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" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.25.9": +"@babel/plugin-syntax-jsx@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@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== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" @@ -479,20 +402,6 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - "@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" @@ -507,14 +416,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@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.24.1", "@babel/plugin-syntax-typescript@^7.25.9": +"@babel/plugin-syntax-typescript@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== @@ -529,21 +431,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-arrow-functions@^7.24.1", "@babel/plugin-transform-arrow-functions@^7.25.9": +"@babel/plugin-transform-arrow-functions@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-generator-functions@^7.24.3", "@babel/plugin-transform-async-generator-functions@^7.26.8": +"@babel/plugin-transform-async-generator-functions@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== @@ -552,16 +447,7 @@ "@babel/helper-remap-async-to-generator" "^7.25.9" "@babel/traverse" "^7.26.8" -"@babel/plugin-transform-async-to-generator@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== - dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - -"@babel/plugin-transform-async-to-generator@^7.24.1", "@babel/plugin-transform-async-to-generator@^7.25.9": +"@babel/plugin-transform-async-to-generator@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== @@ -570,21 +456,21 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.24.1", "@babel/plugin-transform-block-scoped-functions@^7.26.5": +"@babel/plugin-transform-block-scoped-functions@^7.26.5": version "7.26.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-block-scoping@^7.24.5", "@babel/plugin-transform-block-scoping@^7.25.9": +"@babel/plugin-transform-block-scoping@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-properties@^7.24.1", "@babel/plugin-transform-class-properties@^7.25.9": +"@babel/plugin-transform-class-properties@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== @@ -592,7 +478,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-class-static-block@^7.24.4", "@babel/plugin-transform-class-static-block@^7.26.0": +"@babel/plugin-transform-class-static-block@^7.26.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== @@ -600,7 +486,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-classes@^7.24.5", "@babel/plugin-transform-classes@^7.25.9": +"@babel/plugin-transform-classes@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== @@ -612,7 +498,7 @@ "@babel/traverse" "^7.25.9" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.24.1", "@babel/plugin-transform-computed-properties@^7.25.9": +"@babel/plugin-transform-computed-properties@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== @@ -620,14 +506,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/template" "^7.25.9" -"@babel/plugin-transform-destructuring@^7.24.5", "@babel/plugin-transform-destructuring@^7.25.9": +"@babel/plugin-transform-destructuring@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.1", "@babel/plugin-transform-dotall-regex@^7.25.9": +"@babel/plugin-transform-dotall-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== @@ -635,7 +521,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.1", "@babel/plugin-transform-duplicate-keys@^7.25.9": +"@babel/plugin-transform-duplicate-keys@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== @@ -650,21 +536,21 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.1", "@babel/plugin-transform-dynamic-import@^7.25.9": +"@babel/plugin-transform-dynamic-import@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.1", "@babel/plugin-transform-exponentiation-operator@^7.26.3": +"@babel/plugin-transform-exponentiation-operator@^7.26.3": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.24.1", "@babel/plugin-transform-export-namespace-from@^7.25.9": +"@babel/plugin-transform-export-namespace-from@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== @@ -679,7 +565,7 @@ "@babel/helper-plugin-utils" "^7.26.5" "@babel/plugin-syntax-flow" "^7.26.0" -"@babel/plugin-transform-for-of@^7.24.1", "@babel/plugin-transform-for-of@^7.26.9": +"@babel/plugin-transform-for-of@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== @@ -687,7 +573,7 @@ "@babel/helper-plugin-utils" "^7.26.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.24.1", "@babel/plugin-transform-function-name@^7.25.9": +"@babel/plugin-transform-function-name@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== @@ -696,35 +582,35 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.1", "@babel/plugin-transform-json-strings@^7.25.9": +"@babel/plugin-transform-json-strings@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.24.1", "@babel/plugin-transform-literals@^7.25.9": +"@babel/plugin-transform-literals@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1", "@babel/plugin-transform-logical-assignment-operators@^7.25.9": +"@babel/plugin-transform-logical-assignment-operators@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.1", "@babel/plugin-transform-member-expression-literals@^7.25.9": +"@babel/plugin-transform-member-expression-literals@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.1", "@babel/plugin-transform-modules-amd@^7.25.9": +"@babel/plugin-transform-modules-amd@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== @@ -732,7 +618,7 @@ "@babel/helper-module-transforms" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.24.1", "@babel/plugin-transform-modules-commonjs@^7.25.9", "@babel/plugin-transform-modules-commonjs@^7.26.3": +"@babel/plugin-transform-modules-commonjs@^7.25.9", "@babel/plugin-transform-modules-commonjs@^7.26.3": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== @@ -740,7 +626,7 @@ "@babel/helper-module-transforms" "^7.26.0" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-systemjs@^7.24.1", "@babel/plugin-transform-modules-systemjs@^7.25.9": +"@babel/plugin-transform-modules-systemjs@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== @@ -750,7 +636,7 @@ "@babel/helper-validator-identifier" "^7.25.9" "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.1", "@babel/plugin-transform-modules-umd@^7.25.9": +"@babel/plugin-transform-modules-umd@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== @@ -758,7 +644,7 @@ "@babel/helper-module-transforms" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.22.5", "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": +"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== @@ -766,28 +652,28 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.1", "@babel/plugin-transform-new-target@^7.25.9": +"@babel/plugin-transform-new-target@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1", "@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": +"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": version "7.26.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-numeric-separator@^7.24.1", "@babel/plugin-transform-numeric-separator@^7.25.9": +"@babel/plugin-transform-numeric-separator@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.5", "@babel/plugin-transform-object-rest-spread@^7.25.9": +"@babel/plugin-transform-object-rest-spread@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== @@ -796,7 +682,7 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.1", "@babel/plugin-transform-object-super@^7.25.9": +"@babel/plugin-transform-object-super@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== @@ -804,14 +690,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-optional-catch-binding@^7.24.1", "@babel/plugin-transform-optional-catch-binding@^7.25.9": +"@babel/plugin-transform-optional-catch-binding@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.24.5", "@babel/plugin-transform-optional-chaining@^7.25.9": +"@babel/plugin-transform-optional-chaining@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== @@ -819,14 +705,14 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-parameters@^7.24.5", "@babel/plugin-transform-parameters@^7.25.9": +"@babel/plugin-transform-parameters@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-methods@^7.24.1", "@babel/plugin-transform-private-methods@^7.25.9": +"@babel/plugin-transform-private-methods@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== @@ -834,7 +720,7 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.24.5", "@babel/plugin-transform-private-property-in-object@^7.25.9": +"@babel/plugin-transform-private-property-in-object@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== @@ -843,21 +729,21 @@ "@babel/helper-create-class-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.1", "@babel/plugin-transform-property-literals@^7.25.9": +"@babel/plugin-transform-property-literals@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.1", "@babel/plugin-transform-react-display-name@^7.25.9": +"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-development@^7.22.5", "@babel/plugin-transform-react-jsx-development@^7.25.9": +"@babel/plugin-transform-react-jsx-development@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz#8fd220a77dd139c07e25225a903b8be8c829e0d7" integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw== @@ -878,7 +764,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.23.4", "@babel/plugin-transform-react-jsx@^7.25.9": +"@babel/plugin-transform-react-jsx@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== @@ -889,7 +775,7 @@ "@babel/plugin-syntax-jsx" "^7.25.9" "@babel/types" "^7.25.9" -"@babel/plugin-transform-react-pure-annotations@^7.24.1", "@babel/plugin-transform-react-pure-annotations@^7.25.9": +"@babel/plugin-transform-react-pure-annotations@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz#ea1c11b2f9dbb8e2d97025f43a3b5bc47e18ae62" integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg== @@ -897,7 +783,7 @@ "@babel/helper-annotate-as-pure" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.24.1", "@babel/plugin-transform-regenerator@^7.25.9": +"@babel/plugin-transform-regenerator@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== @@ -913,25 +799,13 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-reserved-words@^7.24.1", "@babel/plugin-transform-reserved-words@^7.25.9": +"@babel/plugin-transform-reserved-words@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-runtime@7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== - dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" - babel-plugin-polyfill-regenerator "^0.6.1" - semver "^6.3.1" - "@babel/plugin-transform-runtime@^7.16.4": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.9.tgz#ea8be19ef134668e98f7b54daf7c4f853859dc44" @@ -944,14 +818,14 @@ babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.24.1", "@babel/plugin-transform-shorthand-properties@^7.25.9": +"@babel/plugin-transform-shorthand-properties@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-spread@^7.24.1", "@babel/plugin-transform-spread@^7.25.9": +"@babel/plugin-transform-spread@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== @@ -959,38 +833,28 @@ "@babel/helper-plugin-utils" "^7.25.9" "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.24.1", "@babel/plugin-transform-sticky-regex@^7.25.9": +"@babel/plugin-transform-sticky-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-template-literals@^7.24.1", "@babel/plugin-transform-template-literals@^7.26.8": +"@babel/plugin-transform-template-literals@^7.26.8": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-typeof-symbol@^7.24.5", "@babel/plugin-transform-typeof-symbol@^7.26.7": +"@babel/plugin-transform-typeof-symbol@^7.26.7": version "7.26.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz#d0e33acd9223744c1e857dbd6fa17bd0a3786937" integrity sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw== dependencies: "@babel/helper-plugin-utils" "^7.26.5" -"@babel/plugin-transform-typescript@7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" - integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.5" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/plugin-syntax-typescript" "^7.24.1" - -"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.25.9": +"@babel/plugin-transform-typescript@^7.25.9": version "7.26.8" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz#2e9caa870aa102f50d7125240d9dbf91334b0950" integrity sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw== @@ -1001,14 +865,14 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" "@babel/plugin-syntax-typescript" "^7.25.9" -"@babel/plugin-transform-unicode-escapes@^7.24.1", "@babel/plugin-transform-unicode-escapes@^7.25.9": +"@babel/plugin-transform-unicode-escapes@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.1", "@babel/plugin-transform-unicode-property-regex@^7.25.9": +"@babel/plugin-transform-unicode-property-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== @@ -1016,7 +880,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.24.1", "@babel/plugin-transform-unicode-regex@^7.25.9": +"@babel/plugin-transform-unicode-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== @@ -1024,7 +888,7 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1", "@babel/plugin-transform-unicode-sets-regex@^7.25.9": +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": version "7.25.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== @@ -1032,93 +896,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.25.9" "@babel/helper-plugin-utils" "^7.25.9" -"@babel/preset-env@7.24.5": - version "7.24.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" - integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.5" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" - "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@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.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@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-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.5" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.5" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.5" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@babel/plugin-transform-parameters" "^7.24.5" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.5" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.5" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" - "@babel/preset-modules" "0.1.6-no-external-plugins" - babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" - babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" - semver "^6.3.1" - "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.16.4": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" @@ -1203,18 +980,6 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/preset-react@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" - integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-transform-react-display-name" "^7.24.1" - "@babel/plugin-transform-react-jsx" "^7.23.4" - "@babel/plugin-transform-react-jsx-development" "^7.22.5" - "@babel/plugin-transform-react-pure-annotations" "^7.24.1" - "@babel/preset-react@^7.16.0": version "7.26.3" resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.26.3.tgz#7c5e028d623b4683c1f83a0bd4713b9100560caa" @@ -1227,17 +992,6 @@ "@babel/plugin-transform-react-jsx-development" "^7.25.9" "@babel/plugin-transform-react-pure-annotations" "^7.25.9" -"@babel/preset-typescript@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" - integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-syntax-jsx" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-typescript" "^7.24.1" - "@babel/preset-typescript@^7.16.0": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz#4a570f1b8d104a242d923957ffa1eaff142a106d" @@ -1256,7 +1010,7 @@ dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.24.0", "@babel/template@^7.25.9", "@babel/template@^7.26.9": +"@babel/template@^7.25.9", "@babel/template@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== @@ -1265,7 +1019,7 @@ "@babel/parser" "^7.26.9" "@babel/types" "^7.26.9" -"@babel/traverse@^7.24.5", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.26.9": +"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.26.9": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.9.tgz#4398f2394ba66d05d988b2ad13c219a2c857461a" integrity sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg== @@ -1278,7 +1032,7 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.21.3", "@babel/types@^7.24.5", "@babel/types@^7.25.4", "@babel/types@^7.25.9", "@babel/types@^7.26.9", "@babel/types@^7.4.4": +"@babel/types@^7.21.3", "@babel/types@^7.25.4", "@babel/types@^7.25.9", "@babel/types@^7.26.9", "@babel/types@^7.4.4": version "7.26.9" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.9.tgz#08b43dec79ee8e682c2ac631c010bdcac54a21ce" integrity sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw== @@ -1301,11 +1055,6 @@ resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz#923ca57e173c6b232bbbb07347b1be982f03e783" integrity sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A== -"@discoveryjs/json-ext@^0.5.0": - version "0.5.7" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" - integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== - "@esbuild/aix-ppc64@0.19.10": version "0.19.10" resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz#fb3922a0183d27446de00cf60d4f7baaadf98d84" @@ -1693,6 +1442,43 @@ resolved "https://registry.yarnpkg.com/@excalidraw/eslint-config/-/eslint-config-1.0.3.tgz#2122ef7413ae77874ae9848ce0f1c6b3f0d8bbbd" integrity sha512-GemHNF5Z6ga0BWBSX7GJaNBUchLu6RwTcAB84eX1MeckRNhNasAsPCdelDlFalz27iS4RuYEQh0bPE8SRxJgbQ== +"@excalidraw/excalidraw@0.18.0-rc.5": + version "0.18.0-rc.5" + resolved "https://registry.yarnpkg.com/@excalidraw/excalidraw/-/excalidraw-0.18.0-rc.5.tgz#c55598e01808693702251322e59bf9dba931b6e0" + integrity sha512-f6Z6cWlx+FWl1nxCu5F6OdKm9ooV/FPjndjIfFhGLVyERKATXhuNwZUHWwqsEW+SIGmiPG2515NG9KIOhjGd5g== + dependencies: + "@braintree/sanitize-url" "6.0.2" + "@excalidraw/laser-pointer" "1.3.1" + "@excalidraw/mermaid-to-excalidraw" "1.1.2" + "@excalidraw/random-username" "1.1.0" + "@radix-ui/react-popover" "1.0.3" + "@radix-ui/react-tabs" "1.0.2" + browser-fs-access "0.29.1" + canvas-roundrect-polyfill "0.0.1" + clsx "1.1.1" + cross-env "7.0.3" + es6-promise-pool "2.5.0" + fractional-indexing "3.2.0" + fuzzy "0.1.3" + image-blob-reduce "3.0.1" + jotai "2.11.0" + jotai-scope "0.7.2" + lodash.debounce "4.0.8" + lodash.throttle "4.1.1" + nanoid "3.3.3" + open-color "1.9.1" + pako "2.0.3" + perfect-freehand "1.2.0" + pica "7.1.1" + png-chunk-text "1.0.0" + png-chunks-encode "1.0.0" + png-chunks-extract "1.0.0" + points-on-curve "1.0.1" + pwacompat "2.0.17" + roughjs "4.6.4" + sass "1.51.0" + tunnel-rat "0.1.2" + "@excalidraw/laser-pointer@1.3.1": version "1.3.1" resolved "https://registry.yarnpkg.com/@excalidraw/laser-pointer/-/laser-pointer-1.3.1.tgz#7c40836598e8e6ad91f01057883ed8b88fb9266c" @@ -2406,7 +2192,7 @@ resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@polka/url@^1.0.0-next.20", "@polka/url@^1.0.0-next.24": +"@polka/url@^1.0.0-next.24": version "1.0.0-next.28" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.28.tgz#d45e01c4a56f143ee69c54dd6b12eade9e270a73" integrity sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw== @@ -3139,7 +2925,7 @@ dependencies: "@types/ms" "*" -"@types/eslint-scope@^3.7.3", "@types/eslint-scope@^3.7.7": +"@types/eslint-scope@^3.7.7": version "3.7.7" resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== @@ -3165,11 +2951,6 @@ 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/jest@27.4.0": version "27.4.0" resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.0.tgz#037ab8b872067cae842a320841693080f9cb84ed" @@ -3178,7 +2959,7 @@ jest-diff "^27.0.0" pretty-format "^27.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": +"@types/json-schema@*", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -3188,6 +2969,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/lodash.debounce@4.0.8": + version "4.0.8" + resolved "https://registry.yarnpkg.com/@types/lodash.debounce/-/lodash.debounce-4.0.8.tgz#d5fe36a35aa57773e05d960b3e3c703fd9ffb8b3" + integrity sha512-REumepIJjQFSOaBUoj81U5ZzF9YIhovzE2Lm6ejUbycmwx597k2ivG1cVfPtAj4eVuSbGoZDkJR0sRIahsE6/Q== + dependencies: + "@types/lodash" "*" + "@types/lodash.throttle@4.1.7": version "4.1.7" resolved "https://registry.yarnpkg.com/@types/lodash.throttle/-/lodash.throttle-4.1.7.tgz#4ef379eb4f778068022310ef166625f420b6ba58" @@ -3226,10 +3014,10 @@ dependencies: undici-types "~6.19.2" -"@types/pako@1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.3.tgz#2e61c2b02020b5f44e2e5e946dfac74f4ec33c58" - integrity sha512-EDxOsHAD5dqjbjEUM1xwa7rpKPFb8ECBE5irONTQU7/OsO3thI5YrNEWSPNMvYmvFM0l/OLQJ6Mgw7PEdXSjhg== +"@types/pako@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-2.0.3.tgz#b6993334f3af27c158f3fe0dfeeba987c578afb1" + integrity sha512-bq0hMV9opAcrmE0Byyo0fY3Ew4tgOevJmQ9grUhpXQhYfyLJ1Kqg3P33JT5fdbT2AjeAjR51zqqVjAL/HMkx7Q== "@types/parse-json@^4.0.0": version "4.0.2" @@ -3501,14 +3289,6 @@ loupe "^3.1.3" tinyrainbow "^2.0.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== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.1" - "@webassemblyjs/helper-wasm-bytecode" "1.11.1" - "@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" @@ -3517,45 +3297,21 @@ "@webassemblyjs/helper-numbers" "1.13.2" "@webassemblyjs/helper-wasm-bytecode" "1.13.2" -"@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.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz#fcca1eeddb1cc4e7b6eed4fc7956d6813b21b9fb" integrity sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA== -"@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.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz#e0a16152248bc38daee76dd7e21f15c5ef3ab1e7" integrity sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ== -"@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.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz#822a9bc603166531f7d5df84e67b5bf99b72b96b" integrity sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA== -"@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== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.1" - "@webassemblyjs/helper-api-error" "1.11.1" - "@xtuc/long" "4.2.2" - "@webassemblyjs/helper-numbers@1.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz#dbd932548e7119f4b8a7877fd5a8d20e63490b2d" @@ -3565,26 +3321,11 @@ "@webassemblyjs/helper-api-error" "1.13.2" "@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.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz#e556108758f448aae84c850e593ce18a0eb31e0b" integrity sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA== -"@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== - 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" - "@webassemblyjs/helper-wasm-section@1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz#9629dda9c4430eab54b591053d6dc6f3ba050348" @@ -3595,13 +3336,6 @@ "@webassemblyjs/helper-wasm-bytecode" "1.13.2" "@webassemblyjs/wasm-gen" "1.14.1" -"@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== - dependencies: - "@xtuc/ieee754" "^1.2.0" - "@webassemblyjs/ieee754@1.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz#1c5eaace1d606ada2c7fd7045ea9356c59ee0dba" @@ -3609,13 +3343,6 @@ 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" - integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== - dependencies: - "@xtuc/long" "4.2.2" - "@webassemblyjs/leb128@1.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.13.2.tgz#57c5c3deb0105d02ce25fa3fd74f4ebc9fd0bbb0" @@ -3623,30 +3350,11 @@ 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.13.2": version "1.13.2" resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== -"@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== - 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" - "@webassemblyjs/wasm-edit@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" @@ -3661,17 +3369,6 @@ "@webassemblyjs/wasm-parser" "1.14.1" "@webassemblyjs/wast-printer" "1.14.1" -"@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== - 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" - "@webassemblyjs/wasm-gen@1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz#991e7f0c090cb0bb62bbac882076e3d219da9570" @@ -3683,16 +3380,6 @@ "@webassemblyjs/leb128" "1.13.2" "@webassemblyjs/utf8" "1.13.2" -"@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-opt@1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz#e6f71ed7ccae46781c206017d3c14c50efa8106b" @@ -3703,18 +3390,6 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.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/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" @@ -3727,14 +3402,6 @@ "@webassemblyjs/leb128" "1.13.2" "@webassemblyjs/utf8" "1.13.2" -"@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" - "@webassemblyjs/wast-printer@1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz#3bb3e9638a8ae5fdaf9610e7a06b4d9f9aa6fe07" @@ -3743,23 +3410,6 @@ "@webassemblyjs/ast" "1.14.1" "@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" - integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg== - -"@webpack-cli/info@^1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1" - integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1" - integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q== - "@xmldom/xmldom@^0.8.3": version "0.8.10" resolved "https://registry.yarnpkg.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" @@ -3780,29 +3430,17 @@ abab@^2.0.6: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -acorn-import-assertions@^1.7.6: - 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-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-walk@^8.0.0: - version "8.3.4" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== - dependencies: - acorn "^8.11.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.0.4, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.7.1, acorn@^8.8.2: +acorn@^8.14.0, acorn@^8.8.2: version "8.14.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.0.tgz#063e2c70cac5fb4f6467f0b11152e04c682795b0" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -3829,11 +3467,6 @@ ajv-formats@^2.1.1: dependencies: ajv "^8.0.0" -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.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" @@ -3841,7 +3474,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.10.0, 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== @@ -3873,21 +3506,11 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.21.3" -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== - ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -4125,51 +3748,6 @@ axobject-query@^4.1.0: resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-4.1.0.tgz#28768c76d0e3cff21bc62a9e2d0b6ac30042a1ee" integrity sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ== -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g== - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -babel-helper-function-name@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" - integrity sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q== - dependencies: - babel-helper-get-function-arity "^6.24.1" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-traverse "^6.24.1" - babel-types "^6.24.1" - -babel-helper-get-function-arity@^6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" - integrity sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng== - dependencies: - babel-runtime "^6.22.0" - babel-types "^6.24.1" - -babel-loader@8.2.5: - version "8.2.5" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" - integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== - dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" - -babel-messages@^6.23.0: - version "6.23.0" - resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" - integrity sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w== - dependencies: - babel-runtime "^6.22.0" - babel-plugin-macros@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz#9ef6dc74deb934b4db344dc973ee851d148c50c1" @@ -4188,7 +3766,7 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.3" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4, babel-plugin-polyfill-corejs3@^0.10.6: +babel-plugin-polyfill-corejs3@^0.10.6: version "0.10.6" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== @@ -4211,21 +3789,6 @@ babel-plugin-polyfill-regenerator@^0.6.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.6.3" -babel-plugin-syntax-class-properties@^6.8.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" - integrity sha512-chI3Rt9T1AbrQD1s+vxw3KcwC9yHtF621/MacuItITfZX344uhQoANjpoSJZleAmW2tjlolqB/f+h7jIqXa7pA== - -babel-plugin-transform-class-properties@6.24.1: - version "6.24.1" - resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" - integrity sha512-n4jtBA3OYBdvG5PRMKsMXJXHfLYw/ZOmtxCLOOwz6Ro5XlrColkStLnz1AS1L2yfPA9BKJ1ZNlmVCLjAL9DSIg== - dependencies: - babel-helper-function-name "^6.24.1" - babel-plugin-syntax-class-properties "^6.8.0" - babel-runtime "^6.22.0" - babel-template "^6.24.1" - babel-plugin-transform-react-remove-prop-types@^0.4.24: version "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" @@ -4254,55 +3817,6 @@ babel-preset-react-app@^10.0.1: babel-plugin-macros "^3.1.0" babel-plugin-transform-react-remove-prop-types "^0.4.24" -babel-runtime@^6.22.0, babel-runtime@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" - integrity sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g== - dependencies: - core-js "^2.4.0" - regenerator-runtime "^0.11.0" - -babel-template@^6.24.1: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" - integrity sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg== - dependencies: - babel-runtime "^6.26.0" - babel-traverse "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - lodash "^4.17.4" - -babel-traverse@^6.24.1, babel-traverse@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" - integrity sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA== - dependencies: - babel-code-frame "^6.26.0" - babel-messages "^6.23.0" - babel-runtime "^6.26.0" - babel-types "^6.26.0" - babylon "^6.18.0" - debug "^2.6.8" - globals "^9.18.0" - invariant "^2.2.2" - lodash "^4.17.4" - -babel-types@^6.24.1, babel-types@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" - integrity sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g== - dependencies: - babel-runtime "^6.26.0" - esutils "^2.0.2" - lodash "^4.17.4" - to-fast-properties "^1.0.3" - -babylon@^6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" - integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" @@ -4325,11 +3839,6 @@ basic-auth@^2.0.1: dependencies: safe-buffer "5.1.2" -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== - binary-extensions@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" @@ -4376,7 +3885,7 @@ 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== -browserslist@^4.14.5, browserslist@^4.20.3, browserslist@^4.24.0, browserslist@^4.24.3: +browserslist@^4.20.3, browserslist@^4.24.0, browserslist@^4.24.3: version "4.24.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== @@ -4504,17 +4013,6 @@ chai@^5.2.0: loupe "^3.1.0" pathval "^2.0.0" -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -4638,15 +4136,6 @@ cliui@^8.0.1: strip-ansi "^6.0.1" wrap-ansi "^7.0.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - clsx@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" @@ -4676,7 +4165,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== -colorette@^2.0.14, colorette@^2.0.16: +colorette@^2.0.16: version "2.0.20" resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== @@ -4688,7 +4177,7 @@ combined-stream@^1.0.8: dependencies: delayed-stream "~1.0.0" -commander@7, commander@^7.0.0, commander@^7.2.0: +commander@7: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== @@ -4713,11 +4202,6 @@ common-tags@^1.8.0: 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== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -4743,18 +4227,13 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0, core-js-compat@^3.38.0, core-js-compat@^3.40.0: +core-js-compat@^3.38.0, core-js-compat@^3.40.0: version "3.40.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.40.0.tgz#7485912a5a4a4315c2fdb2cbdc623e6881c88b38" integrity sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ== dependencies: browserslist "^4.24.3" -core-js@^2.4.0: - version "2.6.12" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" - integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== - core-js@^3.4: version "3.40.0" resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.40.0.tgz#2773f6b06877d8eda102fc42f828176437062476" @@ -4826,20 +4305,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-loader@6.7.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" - integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== - dependencies: - icss-utils "^5.1.0" - postcss "^8.4.7" - 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.5" - css-select@^4.2.1: version "4.3.0" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" @@ -4861,11 +4326,6 @@ css.escape@^1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg== -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" @@ -5234,13 +4694,6 @@ debug@4.3.4: dependencies: ms "2.1.2" -debug@^2.6.8: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -5466,11 +4919,6 @@ dunder-proto@^1.0.0, dunder-proto@^1.0.1: es-errors "^1.3.0" gopd "^1.2.0" -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" @@ -5503,11 +4951,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== - 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" @@ -5542,7 +4985,7 @@ engine.io-parser@~5.2.1: resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== -enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0, enhanced-resolve@^5.17.1: +enhanced-resolve@^5.17.1: version "5.18.1" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz#728ab082f8b7b6836de51f1637aab5d3b9568faf" integrity sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg== @@ -5568,11 +5011,6 @@ entities@^4.4.0, entities@^4.5.0: resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== -envinfo@^7.7.3: - version "7.14.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.14.0.tgz#26dac5db54418f2a4c1159153a0b2ae980838aae" - integrity sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg== - error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -5669,11 +5107,6 @@ es-iterator-helpers@^1.2.1: iterator.prototype "^1.1.4" safe-array-concat "^1.1.3" -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-module-lexer@^1.2.1, es-module-lexer@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.6.0.tgz#da49f587fd9e68ee2404fe4e256c0c7d3a81be21" @@ -5717,11 +5150,6 @@ es6-promise-pool@2.5.0: resolved "https://registry.yarnpkg.com/es6-promise-pool/-/es6-promise-pool-2.5.0.tgz#147c612b36b47f105027f9d2bf54a598a99d9ccb" integrity sha512-VHErXfzR/6r/+yyzPKeBvO0lgjfC5cbDCQWjWwMZWSb6YU39TGIl51OUmCfWCq4ylMdJSB8zkz2vIuIeIxXApA== -esbuild-plugin-external-global@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/esbuild-plugin-external-global/-/esbuild-plugin-external-global-1.0.1.tgz#e3bba0e3a561f61b395bec0984a90ed0de06c4ce" - integrity sha512-NDzYHRoShpvLqNcrgV8ZQh61sMIFAry5KLTQV83BPG5iTXCCu7h72SCfJ97bW0GqtuqDD/1aqLbKinI/rNgUsg== - esbuild-sass-plugin@2.16.0: version "2.16.0" resolved "https://registry.yarnpkg.com/esbuild-sass-plugin/-/esbuild-sass-plugin-2.16.0.tgz#2908ab5e104cfc980118c46d0b409cbab8aa32dd" @@ -5824,7 +5252,7 @@ escalade@^3.1.1, escalade@^3.2.0: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== -escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: +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" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== @@ -6231,11 +5659,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== -fastest-levenshtein@^1.0.12: - version "1.0.16" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" - integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== - fastq@^1.6.0: version "1.19.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.0.tgz#a82c6b7c2bb4e44766d865f07997785fecfdcb89" @@ -6274,14 +5697,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.4: version "1.0.4" resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" @@ -6296,15 +5711,6 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" -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-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" @@ -6361,11 +5767,6 @@ flat-cache@^3.0.4: keyv "^4.5.3" rimraf "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== - flatted@^3.2.9, flatted@^3.3.1: version "3.3.3" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" @@ -6618,11 +6019,6 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" -globals@^9.18.0: - version "9.18.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" - integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== - globalthis@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" @@ -6653,7 +6049,7 @@ gopd@^1.0.1, gopd@^1.2.0: resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4: 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== @@ -6663,13 +6059,6 @@ graphemer@^1.4.0: resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== -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" - hachure-fill@^0.5.2: version "0.5.2" resolved "https://registry.yarnpkg.com/hachure-fill/-/hachure-fill-0.5.2.tgz#d19bc4cc8750a5962b47fb1300557a85fcf934cc" @@ -6680,13 +6069,6 @@ harfbuzzjs@0.3.6: resolved "https://registry.yarnpkg.com/harfbuzzjs/-/harfbuzzjs-0.3.6.tgz#97865c861aa7734af5bd1904570712e9d753fda9" integrity sha512-dzf7y6NS8fiAIvPAL/VKwY8wx2HCzUB0vUfOo6h1J5UilFEEf7iYqFsvgwjHwvM3whbjfOMadNvQekU3KuRnWQ== -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== - dependencies: - ansi-regex "^2.0.0" - has-bigints@^1.0.2: version "1.1.0" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" @@ -6839,11 +6221,6 @@ iconv-lite@0.6, iconv-lite@0.6.3: 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" @@ -6896,19 +6273,6 @@ import-fresh@^3.0.0, import-fresh@^3.2.1, import-fresh@^3.3.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-local@^3.0.2: - version "3.2.0" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" - integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== - dependencies: - 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== - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -6951,18 +6315,6 @@ internmap@^1.0.0: resolved "https://registry.yarnpkg.com/internmap/-/internmap-1.0.1.tgz#0017cc8a3b99605f0302f2b198d272e015e5df95" integrity sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -invariant@^2.2.2: - 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" - is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: version "3.0.5" resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" @@ -7106,13 +6458,6 @@ 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-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - 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" @@ -7209,11 +6554,6 @@ isexe@^3.1.1: resolved "https://registry.yarnpkg.com/isexe/-/isexe-3.1.1.tgz#4a407e2bd78ddfb14bea0c27c6f7072dde775f0d" integrity sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ== -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== - istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.2: version "3.2.2" resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" @@ -7338,11 +6678,6 @@ jotai@2.11.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg== - js-yaml@^3.13.1: version "3.14.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" @@ -7434,7 +6769,7 @@ json5@^1.0.2: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0, json5@^2.2.3: +json5@^2.2.0, json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -7482,21 +6817,11 @@ khroma@^2.0.0: resolved "https://registry.yarnpkg.com/khroma/-/khroma-2.1.0.tgz#45f2ce94ce231a437cf5b63c2e886e6eb42bbbb1" integrity sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw== -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@^4.0.3: version "4.1.5" resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.5.tgz#95106101795f7050c6c650f350c683febddb1780" integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ== -klona@^2.0.4, klona@^2.0.5: - version "2.0.6" - resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" - integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== - language-subtag-registry@^0.3.20: version "0.3.23" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" @@ -7581,15 +6906,6 @@ loader-runner@^4.2.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.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" - locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -7607,7 +6923,7 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash.debounce@^4.0.8: +lodash.debounce@4.0.8, lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== @@ -7632,7 +6948,7 @@ lodash.truncate@^4.4.2: resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== -lodash@^4.17.14, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@^4.17.14, 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== @@ -7652,7 +6968,7 @@ long@^5.0.0: resolved "https://registry.yarnpkg.com/long/-/long-5.3.1.tgz#9d4222d3213f38a5ec809674834e0f0ab21abe96" integrity sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng== -loose-envify@^1.0.0, loose-envify@^1.4.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== @@ -7732,13 +7048,6 @@ magicast@^0.3.5: "@babel/types" "^7.25.4" source-map-js "^1.2.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== - dependencies: - semver "^6.0.0" - make-dir@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" @@ -8006,7 +7315,7 @@ micromark@^3.0.0: micromark-util-types "^1.0.1" uvu "^0.5.0" -micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: +micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== @@ -8041,13 +7350,6 @@ 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.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" - integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== - dependencies: - schema-utils "^4.0.0" - 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" @@ -8103,21 +7405,11 @@ mri@^1.1.0: resolved "https://registry.yarnpkg.com/mri/-/mri-1.2.0.tgz#6721480fec2a11a4889861115a48b6cbe7cc8f0b" integrity sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA== -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== - mrmime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/mrmime/-/mrmime-2.0.1.tgz#bc3e87f7987853a54c9850eeb1f1078cd44adddc" integrity sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ== -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -8356,7 +7648,7 @@ open-color@1.9.1: resolved "https://registry.yarnpkg.com/open-color/-/open-color-1.9.1.tgz#a6e6328f60eff7aa60e3e8fcfa50f53ff3eece35" integrity sha512-vCseG/EQ6/RcvxhUcGJiHViOgrtz4x0XbZepXvKik66TMGkvbmjeJrKFyBEx6daG5rNyyd14zYXhz0hZVwQFOw== -opener@^1.5.1, opener@^1.5.2: +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== @@ -8413,10 +7705,10 @@ package-json-from-dist@^1.0.0: resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== -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== +pako@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.3.tgz#cdf475e31b678565251406de9e759196a0ea7a43" + integrity sha512-WjR1hOeg+kki3ZIOjaf4b5WVcay1jaliKSYiEaB1XzwhMQZJxRdQRv0V31EKBYlxb4T7SK3hjfc/jxyU64BoSw== param-case@^3.0.4: version "3.0.4" @@ -8572,7 +7864,7 @@ pidtree@^0.5.0: resolved "https://registry.yarnpkg.com/pidtree/-/pidtree-0.5.0.tgz#ad5fbc1de78b8a5f99d6fbdd4f6e4eee21d1aca1" integrity sha512-9nxspIM7OpZuhBxPg73Zvyq7j1QMPMPsGKTqRc2XOaFQauDvoNz9fM1Wdkjmeo7l9GXOZiRs97sPkuayl39wjA== -pkg-dir@4.2.0, pkg-dir@^4.1.0, pkg-dir@^4.2.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== @@ -8631,52 +7923,7 @@ possible-typed-array-names@^1.0.0: resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== -postcss-loader@7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" - integrity sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ== - dependencies: - cosmiconfig "^7.0.0" - klona "^2.0.5" - semver "^7.3.7" - -postcss-modules-extract-imports@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" - integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== - -postcss-modules-local-by-default@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" - integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== - dependencies: - icss-utils "^5.0.0" - postcss-selector-parser "^7.0.0" - postcss-value-parser "^4.1.0" - -postcss-modules-scope@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" - integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== - dependencies: - postcss-selector-parser "^7.0.0" - -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-selector-parser@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" - integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.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== @@ -8690,7 +7937,7 @@ postcss@8.4.31: picocolors "^1.0.0" source-map-js "^1.0.2" -postcss@^8.4.32, postcss@^8.4.7, postcss@^8.5.2: +postcss@^8.4.32, postcss@^8.5.2: version "8.5.3" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.3.tgz#1463b6f1c7fb16fe258736cba29a2de35237eafb" integrity sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A== @@ -8938,13 +8185,6 @@ realistic-structured-clone@^2.0.1: typeson "^6.1.0" typeson-registry "^1.0.0-alpha.20" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== - dependencies: - resolve "^1.9.0" - redent@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" @@ -8979,11 +8219,6 @@ 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.11.0: - version "0.11.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" - integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== - regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" @@ -9057,24 +8292,12 @@ 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@^1.14.2, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.6, resolve@^1.9.0: +resolve@^1.14.2, resolve@^1.19.0, resolve@^1.22.1, resolve@^1.22.4, resolve@^1.22.6: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -9253,14 +8476,6 @@ safe-regex-test@^1.0.3, safe-regex-test@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@13.0.2: - version "13.0.2" - resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.0.2.tgz#e81a909048e06520e9f2ff25113a801065adb3fe" - integrity sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q== - 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" @@ -9293,25 +8508,7 @@ scheduler@^0.25.0: resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.25.0.tgz#336cd9768e8cceebf52d3c80e3dcf5de23e7e015" integrity sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA== -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: - 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, schema-utils@^4.3.0: +schema-utils@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.0.tgz#3b669f04f71ff2dfb5aba7ce2d5a9d79b35622c0" integrity sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g== @@ -9333,12 +8530,12 @@ semver@7.5.4: dependencies: lru-cache "^6.0.0" -semver@^6.0.0, semver@^6.3.0, semver@^6.3.1: +semver@^6.3.0, semver@^6.3.1: version "6.3.1" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.2.1, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3: +semver@^7.2.1, semver@^7.3.4, semver@^7.3.7, semver@^7.5.3: version "7.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== @@ -9381,13 +8578,6 @@ set-proto@^1.0.0: es-errors "^1.3.0" es-object-atoms "^1.0.0" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -9455,15 +8645,6 @@ signal-exit@^4.0.1: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sirv@^1.0.7: - version "1.0.19" - resolved "https://registry.yarnpkg.com/sirv/-/sirv-1.0.19.tgz#1d73979b38c7fe91fcba49c85280daa9c2363b49" - integrity sha512-JuLThK3TnZG1TAKDwNIqNq6QA2afLOCcm+iE8D1Kj3GA40pSPsxQjjJl0J8X3tsR7T+CP1GavpzLwYkgVLWrZQ== - dependencies: - "@polka/url" "^1.0.0-next.20" - mrmime "^1.0.0" - totalist "^1.0.0" - sirv@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/sirv/-/sirv-2.0.4.tgz#5dd9a725c578e34e449f332703eb2a74e46a29b0" @@ -9740,7 +8921,7 @@ stringify-object@^3.3.0: dependencies: ansi-regex "^5.0.1" -strip-ansi@6.0.1, strip-ansi@^3.0.0, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1: +strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -9774,11 +8955,6 @@ 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.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-3.3.3.tgz#bba8daac19930169c0c9c96706749a597ae3acff" - integrity sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw== - styled-jsx@5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.1.1.tgz#839a1c3aaacc4e735fed0781b8619ea5d0009d1f" @@ -9791,11 +8967,6 @@ stylis@^4.1.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.3.6.tgz#7c7b97191cb4f195f03ecab7d52f7902ed378320" integrity sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ== -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== - supports-color@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -9889,7 +9060,7 @@ tempy@^0.6.0: type-fest "^0.16.0" unique-string "^2.0.0" -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.3.11: +terser-webpack-plugin@^5.3.11: version "5.3.11" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz#93c21f44ca86634257cac176f884f942b7ba3832" integrity sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ== @@ -9972,11 +9143,6 @@ tinyspy@^3.0.2: resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-3.0.2.tgz#86dd3cf3d737b15adcf17d7887c84a75201df20a" integrity sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q== -to-fast-properties@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" - integrity sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og== - to-regex-range@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" @@ -9984,11 +9150,6 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" -totalist@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/totalist/-/totalist-1.1.0.tgz#a4d65a3e546517701e3e5c37a47a70ac97fe56df" - integrity sha512-gduQwd1rOdDMGxFG1gEvhV88Oirdo2p+KjoYFU7k2g+i7n6AFFbDQ5kMPUsW0pNbfQsB/cwXvT1i4Bue0s9g5g== - totalist@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/totalist/-/totalist-3.0.1.tgz#ba3a3d600c915b1a97872348f79c127475f6acf8" @@ -10035,16 +9196,6 @@ ts-dedent@^2.2.0: resolved "https://registry.yarnpkg.com/ts-dedent/-/ts-dedent-2.2.0.tgz#39e4bd297cd036292ae2394eb3412be63f563bb5" integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ== -ts-loader@9.3.1: - version "9.3.1" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4" - integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== - dependencies: - chalk "^4.1.0" - enhanced-resolve "^5.0.0" - micromatch "^4.0.0" - semver "^7.3.4" - tsconfig-paths@^3.15.0: version "3.15.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" @@ -10315,7 +9466,7 @@ use-sync-external-store@^1.2.2: resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz#adbc795d8eeb47029963016cefdf89dc799fcebc" integrity sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw== -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== @@ -10527,7 +9678,7 @@ w3c-xmlserializer@^4.0.0: dependencies: xml-name-validator "^4.0.0" -watchpack@^2.4.0, watchpack@^2.4.1: +watchpack@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== @@ -10572,83 +9723,11 @@ webidl-conversions@^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-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" - integrity sha512-GUMZlM3SKwS8Z+CKeIFx7CVoHn3dXFcUAjT/dcZQQmfSZGvitPfMob2ipjai7ovFFqPvTqkEZ/leL4O0YOdAYQ== - dependencies: - acorn "^8.0.4" - acorn-walk "^8.0.0" - chalk "^4.1.0" - commander "^7.2.0" - gzip-size "^6.0.0" - lodash "^4.17.20" - opener "^1.5.2" - sirv "^1.0.7" - ws "^7.3.1" - -webpack-cli@4.10.0: - version "4.10.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31" - integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.2.0" - "@webpack-cli/info" "^1.5.0" - "@webpack-cli/serve" "^1.7.0" - colorette "^2.0.14" - commander "^7.0.0" - cross-spawn "^7.0.3" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.7.3: - version "5.10.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" - integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== - dependencies: - clone-deep "^4.0.1" - flat "^5.0.2" - wildcard "^2.0.0" - 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.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.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" - webpack@^5.88.2: version "5.98.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.98.0.tgz#44ae19a8f2ba97537978246072fb89d10d1fbd17" @@ -10817,11 +9896,6 @@ why-is-node-running@^2.3.0: siginfo "^2.0.0" stackback "0.0.2" -wildcard@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" - integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== - word-wrap@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" @@ -11031,11 +10105,6 @@ ws@8.5.0: resolved "https://registry.yarnpkg.com/ws/-/ws-8.5.0.tgz#bfb4be96600757fe5382de12c670dab984a1ed4f" integrity sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg== -ws@^7.3.1: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - ws@^8.13.0: version "8.18.1" resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.1.tgz#ea131d3784e1dfdff91adb0a4a116b127515e3cb"