diff --git a/.changeset/clever-onions-flash.md b/.changeset/clever-onions-flash.md new file mode 100644 index 000000000..b5f315f47 --- /dev/null +++ b/.changeset/clever-onions-flash.md @@ -0,0 +1,13 @@ +--- +'@tldraw/electron': minor +'@tldraw/vscode-editor': minor +'tldraw-vscode': minor +'@tldraw/www': minor +'@tldraw/core-example-simple': minor +'@tldraw/core-example-advanced': minor +'@tldraw/tldraw-example': minor +'@tldraw/core': minor +'@tldraw/tldraw': minor +--- + +Bump dependencies, add international support. diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 000000000..32537df0a --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,21 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "@tldraw/electron": "1.6.1", + "@tldraw/vscode-editor": "1.10.2", + "tldraw-vscode": "1.14.1", + "@tldraw/www": "1.6.7", + "@tldraw/core-example-simple": "1.7.0", + "@tldraw/core-example-advanced": "1.6.1", + "@tldraw/tldraw-example": "1.6.1", + "@tldraw/core": "1.13.1", + "@tldraw/curve": "1.7.0", + "@tldraw/intersect": "1.7.1", + "@tldraw/tldraw": "1.15.1", + "@tldraw/vec": "1.7.0" + }, + "changesets": [ + "clever-onions-flash" + ] +} diff --git a/.ignore b/.ignore index 8329eb03b..3e0e9f861 100644 --- a/.ignore +++ b/.ignore @@ -4,4 +4,6 @@ dist node_modules *.d.ts *.js -*.md \ No newline at end of file +*.md +*.lock +*.tsbuildinfo \ No newline at end of file diff --git a/apps/electron/CHANGELOG.md b/apps/electron/CHANGELOG.md new file mode 100644 index 000000000..8e92e8222 --- /dev/null +++ b/apps/electron/CHANGELOG.md @@ -0,0 +1,6 @@ +# @tldraw/electron + +## 1.7.0-next.0 +### Minor Changes + +- Bump dependencies, add international support. diff --git a/apps/electron/package.json b/apps/electron/package.json index 89548abf1..1ac8ca762 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -1,6 +1,6 @@ { "name": "@tldraw/electron", - "version": "1.6.1", + "version": "1.7.0-next.0", "private": true, "description": "An electron app for tldraw.", "author": "@steveruizok", @@ -18,7 +18,7 @@ "package": "electron-builder" }, "devDependencies": { - "@tldraw/tldraw": "^1.6.1", + "@tldraw/tldraw": "^1.16.0-next.0", "@types/node": "^17.0.14", "@types/react": "^17.0.38", "@types/react-dom": "^17.0.11", @@ -32,7 +32,7 @@ "react": "^17.0", "react-dom": "^17.0", "rimraf": "3.0.2", - "typescript": "4.5.5" + "typescript": "^4.7.3" }, "build": { "appId": "io.comp.tldraw-electron", diff --git a/apps/vscode/editor/CHANGELOG.md b/apps/vscode/editor/CHANGELOG.md index 1e362b72a..72b0a3186 100644 --- a/apps/vscode/editor/CHANGELOG.md +++ b/apps/vscode/editor/CHANGELOG.md @@ -1,5 +1,11 @@ # @tldraw/vscode-editor +## 1.11.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + ## 1.10.2 ### Patch Changes diff --git a/apps/vscode/editor/package.json b/apps/vscode/editor/package.json index d3ce50c76..07f2a1c21 100644 --- a/apps/vscode/editor/package.json +++ b/apps/vscode/editor/package.json @@ -1,6 +1,6 @@ { "name": "@tldraw/vscode-editor", - "version": "1.10.2", + "version": "1.11.0-next.0", "private": true, "description": "An an editor for the tldraw vscode extension.", "author": "@steveruizok", @@ -18,18 +18,18 @@ "devDependencies": { "@tldraw/tldraw": "*", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", - "@types/react-dom": "^17.0.11", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", "@types/react-router-dom": "^5.1.8", "concurrently": "7.0.0", "create-serve": "1.0.1", "esbuild": "^0.14.38", "esbuild-serve": "^1.0.1", - "react": "^17.0", - "react-dom": "^17.0", + "react": "^18.1.0", + "react-dom": "^18.1.0", "rimraf": "3.0.2", - "tslib": "^2.3.1", - "typescript": "4.5.5" + "tslib": "^2.4.0", + "typescript": "^4.7.3" }, "gitHead": "a7dac0f83ad998e205c2aab58182cb4ba4e099a6" } \ No newline at end of file diff --git a/apps/vscode/extension/CHANGELOG.md b/apps/vscode/extension/CHANGELOG.md index 9bc8fca0b..8e90d8057 100644 --- a/apps/vscode/extension/CHANGELOG.md +++ b/apps/vscode/extension/CHANGELOG.md @@ -1,5 +1,11 @@ ## 1.2.4 +## 1.15.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + ## 1.14.1 ### Patch Changes diff --git a/apps/vscode/extension/package.json b/apps/vscode/extension/package.json index 778112cd5..397593f4d 100644 --- a/apps/vscode/extension/package.json +++ b/apps/vscode/extension/package.json @@ -2,7 +2,7 @@ "name": "tldraw-vscode", "displayName": "tldraw", "description": "The tldraw Extension for VS Code.", - "version": "1.14.1", + "version": "1.15.0-next.0", "license": "MIT", "publisher": "tldraw-org", "repository": { @@ -128,9 +128,9 @@ "mocha": "^9.1.1", "process": "^0.11.10", "ts-loader": "^9.2.5", - "tslib": "^2.3.1", - "typescript": "^4.4.3", + "tslib": "^2.4.0", + "typescript": "^4.7.3", "vsce": "^2.2.0" }, "gitHead": "4b1137849ad07da36fc8f0f19cb64e7535a79296" -} +} \ No newline at end of file diff --git a/apps/www/CHANGELOG.md b/apps/www/CHANGELOG.md index 4146047ed..51fac2bae 100644 --- a/apps/www/CHANGELOG.md +++ b/apps/www/CHANGELOG.md @@ -1,5 +1,17 @@ # @tldraw/www +## 1.7.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + +### Patch Changes + +- Updated dependencies + - @tldraw/core@1.14.0-next.0 + - @tldraw/tldraw@1.16.0-next.0 + ## 1.6.7 ### Patch Changes diff --git a/apps/www/components/Editor.tsx b/apps/www/components/Editor.tsx index 538f7ee6a..7e4c859a7 100644 --- a/apps/www/components/Editor.tsx +++ b/apps/www/components/Editor.tsx @@ -1,7 +1,7 @@ import { Tldraw, TldrawApp, TldrawProps, useFileSystem } from '@tldraw/tldraw' import { useAccountHandlers } from 'hooks/useAccountHandlers' import { useUploadAssets } from 'hooks/useUploadAssets' -import React, { FC } from 'react' +import * as React from 'react' import * as gtag from 'utils/gtag' declare const window: Window & { app: TldrawApp } @@ -12,7 +12,7 @@ interface EditorProps { isSponsor?: boolean } -const Editor: FC> = ({ +const Editor: React.FC> = ({ id = 'home', isUser = false, isSponsor = false, diff --git a/apps/www/components/MultiplayerEditor.tsx b/apps/www/components/MultiplayerEditor.tsx index fc8a7f235..9afe4aa5b 100644 --- a/apps/www/components/MultiplayerEditor.tsx +++ b/apps/www/components/MultiplayerEditor.tsx @@ -1,6 +1,6 @@ import { createClient } from '@liveblocks/client' import { LiveblocksProvider, RoomProvider } from '@liveblocks/react' -import { Tldraw, TldrawApp, useFileSystem } from '@tldraw/tldraw' +import { Tldraw, useFileSystem } from '@tldraw/tldraw' import { useAccountHandlers } from 'hooks/useAccountHandlers' import { useMultiplayerAssets } from 'hooks/useMultiplayerAssets' import { useMultiplayerState } from 'hooks/useMultiplayerState' diff --git a/apps/www/hooks/useMultiplayerState.ts b/apps/www/hooks/useMultiplayerState.ts index 39153a71c..ebaf2e050 100644 --- a/apps/www/hooks/useMultiplayerState.ts +++ b/apps/www/hooks/useMultiplayerState.ts @@ -3,10 +3,19 @@ import React, { useState, useRef, useCallback } from 'react' import type { TldrawApp, TDUser, TDShape, TDBinding, TDDocument, TDAsset } from '@tldraw/tldraw' import { useRedo, useUndo, useRoom, useUpdateMyPresence } from '@liveblocks/react' -import { LiveMap, LiveObject } from '@liveblocks/client' +import { LiveMap, LiveObject, Lson, LsonObject } from '@liveblocks/client' declare const window: Window & { app: TldrawApp } +type TDLsonShape = TDShape & Lson +type TDLsonBinding = TDBinding & Lson +type TDLsonAsset = TDAsset & Lson +type LsonDoc = { + uuid: string + document: TDDocument + migrated?: boolean +} & LsonObject + export function useMultiplayerState(roomId: string) { const [app, setApp] = useState() const [error, setError] = useState() @@ -17,9 +26,9 @@ export function useMultiplayerState(roomId: string) { const onRedo = useRedo() const updateMyPresence = useUpdateMyPresence() - const rLiveShapes = useRef>() - const rLiveBindings = useRef>() - const rLiveAssets = useRef>() + const rLiveShapes = useRef>() + const rLiveBindings = useRef>() + const rLiveAssets = useRef>() // Callbacks -------------- @@ -53,7 +62,7 @@ export function useMultiplayerState(roomId: string) { if (!shape) { lShapes.delete(id) } else { - lShapes.set(shape.id, shape) + lShapes.set(shape.id, shape as TDLsonShape) } }) @@ -61,7 +70,7 @@ export function useMultiplayerState(roomId: string) { if (!binding) { lBindings.delete(id) } else { - lBindings.set(binding.id, binding) + lBindings.set(binding.id, binding as TDLsonBinding) } }) @@ -69,7 +78,7 @@ export function useMultiplayerState(roomId: string) { if (!asset) { lAssets.delete(id) } else { - lAssets.set(asset.id, asset) + lAssets.set(asset.id, asset as TDLsonAsset) } }) }) @@ -95,7 +104,7 @@ export function useMultiplayerState(roomId: string) { // Handle changes to other users' presence unsubs.push( - room.subscribe('others', (others, event) => { + room.subscribe<{ id: string; user: TDUser }>('others', (others, event) => { if (event.type === 'leave') { if (event.user.presence) { app?.removeUser(event.user.presence.id) @@ -123,23 +132,23 @@ export function useMultiplayerState(roomId: string) { // Initialize (get or create) maps for shapes/bindings/assets - let lShapes: LiveMap = storage.root.get('shapes') + let lShapes: LiveMap = storage.root.get('shapes') if (!lShapes || !('_serialize' in lShapes)) { - storage.root.set('shapes', new LiveMap()) + storage.root.set('shapes', new LiveMap()) lShapes = storage.root.get('shapes') } rLiveShapes.current = lShapes - let lBindings: LiveMap = storage.root.get('bindings') + let lBindings: LiveMap = storage.root.get('bindings') if (!lBindings || !('_serialize' in lBindings)) { - storage.root.set('bindings', new LiveMap()) + storage.root.set('bindings', new LiveMap()) lBindings = storage.root.get('bindings') } rLiveBindings.current = lBindings - let lAssets: LiveMap = storage.root.get('assets') + let lAssets: LiveMap = storage.root.get('assets') if (!lAssets || !('_serialize' in lAssets)) { - storage.root.set('assets', new LiveMap()) + storage.root.set('assets', new LiveMap()) lAssets = storage.root.get('assets') } rLiveAssets.current = lAssets @@ -150,11 +159,7 @@ export function useMultiplayerState(roomId: string) { // document was a single LiveObject named 'doc'. If we find a doc, // then we need to move the shapes and bindings over to the new structures // and then mark the doc as migrated. - const doc = storage.root.get('doc') as LiveObject<{ - uuid: string - document: TDDocument - migrated?: boolean - }> + const doc = storage.root.get('doc') as LiveObject // No doc? No problem. This was likely a newer document if (doc) { @@ -167,9 +172,11 @@ export function useMultiplayerState(roomId: string) { }, } = doc.toObject() - Object.values(shapes).forEach((shape) => lShapes.set(shape.id, shape)) - Object.values(bindings).forEach((binding) => lBindings.set(binding.id, binding)) - Object.values(assets).forEach((asset) => lAssets.set(asset.id, asset)) + Object.values(shapes).forEach((shape) => lShapes.set(shape.id, shape as TDLsonShape)) + Object.values(bindings).forEach((binding) => + lBindings.set(binding.id, binding as TDLsonBinding) + ) + Object.values(assets).forEach((asset) => lAssets.set(asset.id, asset as TDLsonAsset)) } } diff --git a/apps/www/package.json b/apps/www/package.json index 1aaf9382f..dee007ee1 100644 --- a/apps/www/package.json +++ b/apps/www/package.json @@ -1,6 +1,6 @@ { "name": "@tldraw/www", - "version": "1.6.7", + "version": "1.7.0-next.0", "private": true, "description": "A tiny little drawing app (site).", "repository": { @@ -18,33 +18,31 @@ "lint": "next lint" }, "dependencies": { - "@liveblocks/client": "^0.14.0", - "@liveblocks/react": "^0.14.0", + "@sentry/webpack-plugin": "^1.17.1", + "@types/next-auth": "^3.15.0", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", + "eslint": "^8.8.0", + "eslint-config-next": "^12.0.10", + "typescript": "^4.7.3", + "@liveblocks/client": "^0.16.17", + "@liveblocks/react": "^0.16.17", "@sentry/integrations": "^6.13.2", "@sentry/node": "^6.13.2", "@sentry/react": "^6.13.2", "@sentry/tracing": "^6.13.2", - "@stitches/react": "^1.2.5", + "@stitches/react": "^1.2.8", "@tldraw/core": "*", "@tldraw/tldraw": "*", "aws-sdk": "^2.1053.0", "lz-string": "^1.4.4", "nanoid": "^3.3.4", - "next": "^12.0.7", + "next": "^12.1.6", "next-auth": "^4.0.5", - "next-pwa": "^5.4.4", + "next-pwa": "^5.5.4", "next-themes": "^0.0.15", - "react": "^17.0", - "react-dom": "^17.0" - }, - "devDependencies": { - "@types/next-auth": "^3.15.0", - "@sentry/webpack-plugin": "^1.17.1", - "@types/react": "^17.0.19", - "@types/react-dom": "^17.0.9", - "eslint": "^8.8.0", - "eslint-config-next": "^12.0.10", - "typescript": "^4.5.2" + "react": "^18.1.0", + "react-dom": "^18.1.0" }, "gitHead": "838fabdbff1a66d4d7ee8aa5c5d117bc55acbff2" } \ No newline at end of file diff --git a/examples/core-example-advanced/CHANGELOG.md b/examples/core-example-advanced/CHANGELOG.md new file mode 100644 index 000000000..38c3cc895 --- /dev/null +++ b/examples/core-example-advanced/CHANGELOG.md @@ -0,0 +1,6 @@ +# @tldraw/core-example-advanced + +## 1.7.0-next.0 +### Minor Changes + +- Bump dependencies, add international support. diff --git a/examples/core-example-advanced/package.json b/examples/core-example-advanced/package.json index bd6192da2..f4ef9a9bc 100644 --- a/examples/core-example-advanced/package.json +++ b/examples/core-example-advanced/package.json @@ -1,5 +1,5 @@ { - "version": "1.6.1", + "version": "1.7.0-next.0", "name": "@tldraw/core-example-advanced", "description": "An advanced example project for @tldraw/core.", "author": "@steveruizok", @@ -22,8 +22,6 @@ "@tldraw/intersect": "*", "@tldraw/vec": "*", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", - "@types/react-dom": "^17.0.11", "@types/react-router-dom": "^5.3.3", "concurrently": "^7.0.0", "create-serve": "^1.0.1", @@ -33,11 +31,13 @@ "lodash": "^4.17.21", "nanoid": "^3.1.31", "perfect-freehand": "^1.1.0", - "react": "^17.0.2", - "react-dom": "^17.0.2", "react-feather": "^2.0.9", "rimraf": "^3.0.2", - "typescript": "^4.6.4" + "typescript": "^4.7.3", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", + "react": "^18.1.0", + "react-dom": "^18.1.0" }, "gitHead": "a7dac0f83ad998e205c2aab58182cb4ba4e099a6" } \ No newline at end of file diff --git a/examples/core-example-advanced/src/index.tsx b/examples/core-example-advanced/src/index.tsx index 64dd2bde6..4baab8cea 100644 --- a/examples/core-example-advanced/src/index.tsx +++ b/examples/core-example-advanced/src/index.tsx @@ -1,10 +1,13 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import React from 'react' -import ReactDOM from 'react-dom' +import { createRoot } from 'react-dom/client' import App from './app' +import './styles.css' -ReactDOM.render( +const container = document.getElementById('root')! +const root = createRoot(container) +root.render( - , - document.getElementById('root') + ) diff --git a/examples/core-example/CHANGELOG.md b/examples/core-example/CHANGELOG.md index 8a0b42171..5a9ed8b13 100644 --- a/examples/core-example/CHANGELOG.md +++ b/examples/core-example/CHANGELOG.md @@ -1,6 +1,13 @@ # @tldraw/core-example-simple +## 1.8.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + ## 1.7.0 + ### Minor Changes - Fix build error in extension. diff --git a/examples/core-example/package.json b/examples/core-example/package.json index 5a11ed628..aa0ec976a 100644 --- a/examples/core-example/package.json +++ b/examples/core-example/package.json @@ -1,5 +1,5 @@ { - "version": "1.7.0", + "version": "1.8.0-next.0", "name": "@tldraw/core-example-simple", "description": "A simple example project for @tldraw/core.", "author": "@steveruizok", @@ -18,18 +18,18 @@ "@tldraw/core": "*", "@tldraw/vec": "*", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", - "@types/react-dom": "^17.0.11", "@types/react-router-dom": "^5.3.3", "concurrently": "^7.0.0", "esbuild": "^0.14.18", "esbuild-serve": "^1.0.1", "mobx": "^6.3.13", "mobx-react-lite": "^3.2.3", - "react": "^17.0.2", - "react-dom": "^17.0.2", "rimraf": "^3.0.2", - "typescript": "^4.6.4" + "typescript": "^4.7.3", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", + "react": "^18.1.0", + "react-dom": "^18.1.0" }, "gitHead": "a7dac0f83ad998e205c2aab58182cb4ba4e099a6" } \ No newline at end of file diff --git a/examples/core-example/src/index.tsx b/examples/core-example/src/index.tsx index 1977daa08..4baab8cea 100644 --- a/examples/core-example/src/index.tsx +++ b/examples/core-example/src/index.tsx @@ -1,11 +1,13 @@ +/* eslint-disable @typescript-eslint/no-non-null-assertion */ import React from 'react' -import ReactDOM from 'react-dom' +import { createRoot } from 'react-dom/client' import App from './app' import './styles.css' -ReactDOM.render( +const container = document.getElementById('root')! +const root = createRoot(container) +root.render( - , - document.getElementById('root') + ) diff --git a/examples/tldraw-example/CHANGELOG.md b/examples/tldraw-example/CHANGELOG.md new file mode 100644 index 000000000..41e1d6f57 --- /dev/null +++ b/examples/tldraw-example/CHANGELOG.md @@ -0,0 +1,6 @@ +# @tldraw/tldraw-example + +## 1.7.0-next.0 +### Minor Changes + +- Bump dependencies, add international support. diff --git a/examples/tldraw-example/package.json b/examples/tldraw-example/package.json index 7c638da22..5386fc68e 100644 --- a/examples/tldraw-example/package.json +++ b/examples/tldraw-example/package.json @@ -1,6 +1,6 @@ { "name": "@tldraw/tldraw-example", - "version": "1.6.1", + "version": "1.7.0-next.0", "private": true, "description": "An example project for @tldraw/tldraw.", "author": "@steveruizok", @@ -18,8 +18,6 @@ "@liveblocks/client": "^0.14.0", "@liveblocks/react": "^0.14.0", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", - "@types/react-dom": "^17.0.11", "@types/react-router-dom": "^5.3.3", "concurrently": "^7.0.0", "create-serve": "^1.0.1", @@ -27,12 +25,14 @@ "esbuild-envfile-plugin": "^1.0.2", "esbuild-serve": "^1.0.1", "firebase": "^9.6.5", - "react": "^17.0.2", - "react-dom": "^17.0.2", "react-router": "^6.2.1", - "react-router-dom": "^6.2.1", "rimraf": "^3.0.2", - "typescript": "^4.6.4" + "typescript": "^4.7.3", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", + "react": "^18.1.0", + "react-dom": "^18.1.0", + "react-router-dom": "^6.3.0" }, "gitHead": "a7dac0f83ad998e205c2aab58182cb4ba4e099a6" } \ No newline at end of file diff --git a/examples/tldraw-example/src/app.tsx b/examples/tldraw-example/src/app.tsx index 610cd7be1..06c0b9267 100644 --- a/examples/tldraw-example/src/app.tsx +++ b/examples/tldraw-example/src/app.tsx @@ -55,7 +55,9 @@ export default function App() {
{pages.map((page) => - page === '---' ? null : } /> + page === '---' ? null : ( + } /> + ) )} - , - document.getElementById('root') + ) diff --git a/package.json b/package.json index ef6ceb965..09db63355 100644 --- a/package.json +++ b/package.json @@ -61,14 +61,12 @@ "mobx": "^6.3.8", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", - "react": "^17.0", - "react-dom": "^17.0", "resize-observer-polyfill": "^1.5.1", "source-map-loader": "^3.0.1", - "tslib": "^2.3.1", + "tslib": "^2.4.0", "turbo": "^1.1.2", "typedoc": "^0.22.15", - "typescript": "^4.6.4", + "typescript": "^4.7.3", "webpack": "^5.68.0" }, "husky": { diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 3ea77d293..8c87e3cee 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 1.14.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + ## 1.13.1 ### Patch Changes diff --git a/packages/core/package.json b/packages/core/package.json index 2647a899e..bc095f7f5 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,5 +1,5 @@ { - "version": "1.13.1", + "version": "1.14.0-next.0", "name": "@tldraw/core", "description": "The tldraw core renderer and utilities.", "author": "@steveruizok", @@ -46,7 +46,7 @@ }, "peerDependencies": { "react": ">=16.8", - "react-dom": "^16.8 || ^17.0" + "react-dom": ">=16.8" }, "devDependencies": { "@swc-node/jest": "^1.4.3", @@ -55,14 +55,15 @@ "@tldraw/intersect": "*", "@tldraw/vec": "*", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", "eslint": "^8.8.0", "lask": "^0.0.29", "mobx": "^6.3.8", - "react": ">=16.8", - "react-dom": "^16.8 || ^17.0" + "react": "^18.1.0", + "react-dom": "^18.1.0" }, "jest": { "setupFilesAfterEnv": [ @@ -98,4 +99,4 @@ } }, "gitHead": "4b1137849ad07da36fc8f0f19cb64e7535a79296" -} +} \ No newline at end of file diff --git a/packages/tldraw/CHANGELOG.md b/packages/tldraw/CHANGELOG.md index b84fdf2b9..cdc044d4a 100644 --- a/packages/tldraw/CHANGELOG.md +++ b/packages/tldraw/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## 1.16.0-next.0 + +### Minor Changes + +- Bump dependencies, add international support. + +### Patch Changes + +- Updated dependencies + - @tldraw/core@1.14.0-next.0 + ## 1.15.1 ### Patch Changes diff --git a/packages/tldraw/package.json b/packages/tldraw/package.json index 14cf79b3e..e3b405eec 100644 --- a/packages/tldraw/package.json +++ b/packages/tldraw/package.json @@ -1,6 +1,6 @@ { "name": "@tldraw/tldraw", - "version": "1.15.1", + "version": "1.16.0-next.0", "description": "A tiny little drawing app (editor)", "author": "@steveruizok", "repository": { @@ -37,29 +37,26 @@ "docs": "typedoc" }, "peerDependencies": { - "react": "^17.0", - "react-dom": "^17.0" + "react": ">=16.8", + "react-dom": ">=16.8" }, "dependencies": { "@radix-ui/react-alert-dialog": "^0.1.7", - "@radix-ui/react-checkbox": "^0.1.5", "@radix-ui/react-context-menu": "^0.1.6", "@radix-ui/react-dropdown-menu": "^0.1.6", "@radix-ui/react-icons": "^1.1.1", - "@radix-ui/react-radio-group": "^0.1.5", "@radix-ui/react-tooltip": "^0.1.7", "@stitches/react": "^1.2.8", - "@tldraw/core": "^1.13.1", + "@tldraw/core": "^1.14.0-next.0", "@tldraw/intersect": "^1.7.1", "@tldraw/vec": "^1.7.0", - "@types/lz-string": "^1.3.34", "idb-keyval": "^6.1.0", "lz-string": "^1.4.4", "perfect-freehand": "^1.1.0", "react-error-boundary": "^3.1.4", - "react-hotkey-hook": "^1.0.2", "react-hotkeys-hook": "^3.4.4", - "tslib": "^2.3.1", + "react-intl": "^6.0.3", + "tslib": "^2.4.0", "zustand": "^3.6.9" }, "devDependencies": { @@ -69,16 +66,18 @@ "@tldraw/core": "*", "@tldraw/intersect": "*", "@tldraw/vec": "*", + "@types/lz-string": "^1.3.34", "@types/node": "^17.0.14", - "@types/react": "^17.0.38", + "@types/react": "^18.0.12", + "@types/react-dom": "^18.0.5", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", "eslint": "^8.8.0", "lask": "^0.0.29", "mobx": "^6.3.8", - "react": "^17.0", - "react-dom": "^17.0", - "typescript": "^4.6.4" + "react": "^18.1.0", + "react-dom": "^18.1.0", + "typescript": "^4.7.3" }, "jest": { "setupFilesAfterEnv": [ @@ -106,4 +105,4 @@ } }, "gitHead": "4b1137849ad07da36fc8f0f19cb64e7535a79296" -} +} \ No newline at end of file diff --git a/packages/tldraw/src/Tldraw.tsx b/packages/tldraw/src/Tldraw.tsx index 93ea412fd..646973771 100644 --- a/packages/tldraw/src/Tldraw.tsx +++ b/packages/tldraw/src/Tldraw.tsx @@ -1,5 +1,6 @@ import * as React from 'react' import { Renderer } from '@tldraw/core' +import { IntlConfig, IntlProvider } from 'react-intl' import { styled, dark } from '~styles' import { TDDocument, TDStatus } from '~types' import { TldrawApp, TDCallbacks } from '~state' @@ -12,9 +13,15 @@ import { FocusButton } from '~components/FocusButton' import { TLDR } from '~state/TLDR' import { GRID_SIZE } from '~constants' import { Loading } from '~components/Loading' -import { ErrorBoundary } from 'react-error-boundary' +import { ErrorBoundary as _Errorboundary } from 'react-error-boundary' import { ErrorFallback } from '~components/ErrorFallback' +import messages_en from './translations/en.json' +import messages_fr from './translations/fr.json' +import messages_it from './translations/it.json' + +const ErrorBoundary = _Errorboundary as any + export interface TldrawProps extends TDCallbacks { /** * (optional) If provided, the component will load / persist state under this key. @@ -417,112 +424,125 @@ const InnerTldraw = React.memo(function InnerTldraw({ const hideCloneHandles = isInSession || !isSelecting || !settings.showCloneHandles || pageState.camera.zoom < 0.2 + const messages = { + en: messages_en, + fr: messages_fr, + it: messages_it, + } + + const defaultLanguage = settings.language ?? navigator.language.split(/[-_]/)[0] + return ( - - - - - - - - - {showUI && ( - - {settings.isFocusMode ? ( - - ) : ( - <> - - - {showTools && !readOnly && } - - )} - - )} - + + + + + + + + + + {showUI && ( + + {settings.isFocusMode ? ( + + ) : ( + <> + + + {showTools && !readOnly && } + + )} + + )} + + ) }) diff --git a/packages/tldraw/src/components/ContextMenu/ContextMenu.test.tsx b/packages/tldraw/src/components/ContextMenu/ContextMenu.test.tsx index 80551fcd1..d690ca6e9 100644 --- a/packages/tldraw/src/components/ContextMenu/ContextMenu.test.tsx +++ b/packages/tldraw/src/components/ContextMenu/ContextMenu.test.tsx @@ -1,13 +1,15 @@ import * as React from 'react' import { ContextMenu } from './ContextMenu' -import { renderWithContext } from '~test' +import { renderWithContext, renderWithIntlProvider } from '~test' describe('context menu', () => { test('mounts component without crashing', () => { renderWithContext( - -
Hello
-
+ renderWithIntlProvider( + +
Hello
+
+ ) ) }) }) diff --git a/packages/tldraw/src/components/ContextMenu/ContextMenu.tsx b/packages/tldraw/src/components/ContextMenu/ContextMenu.tsx index 4b5942609..c49d3e8e2 100644 --- a/packages/tldraw/src/components/ContextMenu/ContextMenu.tsx +++ b/packages/tldraw/src/components/ContextMenu/ContextMenu.tsx @@ -19,6 +19,7 @@ import { Divider } from '~components/Primitives/Divider' import { MenuContent } from '~components/Primitives/MenuContent' import { RowButton, RowButtonProps } from '~components/Primitives/RowButton' import { ToolButton, ToolButtonProps } from '~components/Primitives/ToolButton' +import { FormattedMessage, useIntl } from 'react-intl' const numberOfSelectedIdsSelector = (s: TDSnapshot) => { return s.document.pageStates[s.appState.currentPageId].selectedIds.length @@ -56,6 +57,7 @@ interface InnerContextMenuProps { const InnerMenu = React.memo(function InnerMenu({ onBlur }: InnerContextMenuProps) { const app = useTldrawApp() + const intl = useIntl() const numberOfSelectedIds = app.useStore(numberOfSelectedIdsSelector) const isDebugMode = app.useStore(isDebugModeSelector) const hasGroupSelected = app.useStore(hasGroupSelectedSelector) @@ -171,45 +173,46 @@ const InnerMenu = React.memo(function InnerMenu({ onBlur }: InnerContextMenuProp {hasSelection ? ( <> - Duplicate + - Flip Horizontal + - Flip Vertical + - Lock / Unlock + / {(hasTwoOrMore || hasGroupSelected) && } {hasTwoOrMore && ( - Group + )} {hasGroupSelected && ( - Ungroup + + )} - + - To Front + - Forward + - Backward + - To Back + @@ -218,16 +221,20 @@ const InnerMenu = React.memo(function InnerMenu({ onBlur }: InnerContextMenuProp )} - Cut + - Copy + - Paste + - + SVG @@ -240,7 +247,11 @@ const InnerMenu = React.memo(function InnerMenu({ onBlur }: InnerContextMenuProp )} - + SVG @@ -261,19 +272,19 @@ const InnerMenu = React.memo(function InnerMenu({ onBlur }: InnerContextMenuProp - Delete + ) : ( <> - Paste + - Undo + - Redo + )} @@ -430,7 +441,9 @@ function MoveToPageMenu() { return ( - Move To Page + + + {sorted.map(({ id, name }, i) => ( diff --git a/packages/tldraw/src/components/ErrorFallback/ErrorFallback.tsx b/packages/tldraw/src/components/ErrorFallback/ErrorFallback.tsx index 3777c6a72..c47211487 100644 --- a/packages/tldraw/src/components/ErrorFallback/ErrorFallback.tsx +++ b/packages/tldraw/src/components/ErrorFallback/ErrorFallback.tsx @@ -5,7 +5,7 @@ import { RowButton } from '~components/Primitives/RowButton' import { useTldrawApp } from '~hooks' import { styled } from '~styles' -export function ErrorFallback({ error, resetErrorBoundary }: FallbackProps) { +export function ErrorFallback({ error, resetErrorBoundary }: FallbackProps): any { const app = useTldrawApp() const refreshPage = () => { diff --git a/packages/tldraw/src/components/Primitives/DropdownMenu/DMArrow.tsx b/packages/tldraw/src/components/Primitives/DropdownMenu/DMArrow.tsx deleted file mode 100644 index 9a01f1105..000000000 --- a/packages/tldraw/src/components/Primitives/DropdownMenu/DMArrow.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { Arrow } from '@radix-ui/react-dropdown-menu' -import { breakpoints } from '~components/breakpoints' -import { styled } from '~styles/stitches.config' - -export const DMArrow = styled(Arrow, { fill: '$panel', bp: breakpoints }) diff --git a/packages/tldraw/src/components/Primitives/DropdownMenu/index.tsx b/packages/tldraw/src/components/Primitives/DropdownMenu/index.tsx index 957c0fe45..e048ff4ea 100644 --- a/packages/tldraw/src/components/Primitives/DropdownMenu/index.tsx +++ b/packages/tldraw/src/components/Primitives/DropdownMenu/index.tsx @@ -1,4 +1,3 @@ -export * from './DMArrow' export * from './DMItem' export * from './DMCheckboxItem' export * from './DMContent' diff --git a/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx b/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx index 703ad08c6..c1ecbab22 100644 --- a/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx +++ b/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx @@ -32,6 +32,7 @@ import { import { DMContent } from '~components/Primitives/DropdownMenu' import { Divider } from '~components/Primitives/Divider' import { ToolButton } from '~components/Primitives/ToolButton' +import { useIntl } from 'react-intl' const selectedShapesCountSelector = (s: TDSnapshot) => s.document.pageStates[s.appState.currentPageId].selectedIds.length @@ -74,6 +75,9 @@ const hasMultipleSelectionSelector = (s: TDSnapshot) => { export function ActionButton() { const app = useTldrawApp() + const intl = useIntl() + + const isFrenchLang = navigator.language === 'fr' const isAllLocked = app.useStore(isAllLockedSelector) @@ -189,22 +193,35 @@ export function ActionButton() { <> - + - + - + {isAllLocked ? : } - + {isAllAspectLocked ? : } @@ -212,34 +229,50 @@ export function ActionButton() { disabled={!hasSelection || (!isAllGrouped && !hasMultipleSelection)} onClick={handleGroup} > - + - + - + - + - + - + diff --git a/packages/tldraw/src/components/ToolsPanel/DeleteButton.tsx b/packages/tldraw/src/components/ToolsPanel/DeleteButton.tsx index 82864cc94..51c2cad53 100644 --- a/packages/tldraw/src/components/ToolsPanel/DeleteButton.tsx +++ b/packages/tldraw/src/components/ToolsPanel/DeleteButton.tsx @@ -3,9 +3,11 @@ import { Tooltip } from '~components/Primitives/Tooltip' import { useTldrawApp } from '~hooks' import { ToolButton } from '~components/Primitives/ToolButton' import { TrashIcon } from '~components/Primitives/icons' +import { useIntl } from 'react-intl' export function DeleteButton() { const app = useTldrawApp() + const intl = useIntl() const handleDelete = React.useCallback(() => { app.delete() @@ -18,7 +20,7 @@ export function DeleteButton() { ) return ( - + diff --git a/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx b/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx index 75abc9046..da85ef83d 100644 --- a/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx +++ b/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx @@ -1,4 +1,5 @@ import * as React from 'react' +import { useIntl } from 'react-intl' import { ArrowTopRightIcon, CursorArrowIcon, @@ -18,6 +19,7 @@ const toolLockedSelector = (s: TDSnapshot) => s.appState.isToolLocked export const PrimaryTools = React.memo(function PrimaryTools() { const app = useTldrawApp() + const intl = useIntl() const activeTool = app.useStore(activeToolSelector) @@ -51,7 +53,7 @@ export const PrimaryTools = React.memo(function PrimaryTools() { ( diff --git a/packages/tldraw/src/components/ToolsPanel/ToolsPanel.test.tsx b/packages/tldraw/src/components/ToolsPanel/ToolsPanel.test.tsx index 000089c44..056a23958 100644 --- a/packages/tldraw/src/components/ToolsPanel/ToolsPanel.test.tsx +++ b/packages/tldraw/src/components/ToolsPanel/ToolsPanel.test.tsx @@ -1,9 +1,9 @@ import * as React from 'react' import { ToolsPanel } from './ToolsPanel' -import { renderWithContext } from '~test' +import { renderWithContext, renderWithIntlProvider } from '~test' describe('tools panel', () => { test('mounts component without crashing', () => { - renderWithContext( void null} />) + renderWithContext(renderWithIntlProvider( void null} />)) }) }) diff --git a/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx b/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx new file mode 100644 index 000000000..3efb2ee01 --- /dev/null +++ b/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx @@ -0,0 +1,45 @@ +import * as React from 'react' +import { useIntl } from 'react-intl' +import { DMCheckboxItem, DMSubMenu } from '~components/Primitives/DropdownMenu' +import { useTldrawApp } from '~hooks' +import { TDLanguage, TDSnapshot } from '~types' + +const settingsSelector = (s: TDSnapshot) => s.settings + +type ILang = { + label: string + code: TDLanguage +} + +export function LanguageMenu() { + const app = useTldrawApp() + const setting = app.useStore(settingsSelector) + const intl = useIntl() + + const languages: ILang[] = [ + { label: 'English', code: 'en' }, + { label: 'Français', code: 'fr' }, + { label: 'Italiano', code: 'it' }, + ] + + const handleChangeLanguage = React.useCallback( + (code: TDLanguage) => { + app.setSetting('language', code) + }, + [app] + ) + + return ( + + {languages.map((language) => ( + handleChangeLanguage(language.code)} + id={`TD-MenuItem-Language-${language}`} + > + {language.label} + + ))} + + ) +} diff --git a/packages/tldraw/src/components/TopPanel/Menu/Menu.tsx b/packages/tldraw/src/components/TopPanel/Menu/Menu.tsx index bc3def2a1..1979cb2b0 100644 --- a/packages/tldraw/src/components/TopPanel/Menu/Menu.tsx +++ b/packages/tldraw/src/components/TopPanel/Menu/Menu.tsx @@ -23,6 +23,8 @@ import { preventEvent } from '~components/preventEvent' import { DiscordIcon } from '~components/Primitives/icons' import { TDExportType, TDSnapshot } from '~types' import { Divider } from '~components/Primitives/Divider' +import { FormattedMessage, useIntl } from 'react-intl' +import { LanguageMenu } from '../LanguageMenu/LanguageMenu' interface MenuProps { sponsor: boolean | undefined @@ -39,6 +41,7 @@ const disableAssetsSelector = (s: TDSnapshot) => { export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { const app = useTldrawApp() + const intl = useIntl() const numberOfSelectedIds = app.useStore(numberOfSelectedIdsSelector) @@ -140,38 +143,40 @@ export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { {showFileMenu && ( - + {app.callbacks.onNewProject && ( - New Project + )} {app.callbacks.onOpenProject && ( - Open... + + ... )} {app.callbacks.onSaveProject && ( - Save + )} {app.callbacks.onSaveProjectAs && ( - Save As... + + ... )} {!disableAssets && ( <> - Upload Media + )} )} - + - Undo + - Redo + - Cut + - Copy + - Paste + - + SVG @@ -229,7 +238,11 @@ export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { JSON - + SVG @@ -254,7 +267,7 @@ export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { kbd="#A" id="TD-MenuItem-Select_All" > - Select All + - Select None + - Delete + - + - Zoom In + - Zoom Out + - Zoom to 100% + 100% - Zoom to Fit + - Zoom to Selection + + + GitHub @@ -341,7 +356,7 @@ export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { {sponsor === false && ( - Become a Sponsor{' '} + {' '} @@ -351,7 +366,7 @@ export const Menu = React.memo(function Menu({ sponsor, readOnly }: MenuProps) { {sponsor === true && ( - Sponsored! + Create a Multiplayer Project + + + - Copy to Multiplayer Project + diff --git a/packages/tldraw/src/components/TopPanel/PageMenu/PageMenu.tsx b/packages/tldraw/src/components/TopPanel/PageMenu/PageMenu.tsx index 867ea5607..b0c777b0d 100644 --- a/packages/tldraw/src/components/TopPanel/PageMenu/PageMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/PageMenu/PageMenu.tsx @@ -9,6 +9,7 @@ import { DMContent, DMDivider } from '~components/Primitives/DropdownMenu' import { SmallIcon } from '~components/Primitives/SmallIcon' import { RowButton } from '~components/Primitives/RowButton' import { ToolButton } from '~components/Primitives/ToolButton' +import { FormattedMessage } from 'react-intl' const sortedSelector = (s: TDSnapshot) => Object.values(s.document.pages).sort((a, b) => (a.childIndex || 0) - (b.childIndex || 0)) @@ -102,7 +103,9 @@ function PageMenuContent({ onClose }: { onClose: () => void }) { - Create Page + + + diff --git a/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx b/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx index 2efb7b030..a4133e9c6 100644 --- a/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx +++ b/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx @@ -10,6 +10,7 @@ import { IconButton } from '~components/Primitives/IconButton/IconButton' import { SmallIcon } from '~components/Primitives/SmallIcon' import { breakpoints } from '~components/breakpoints' import { TextField } from '~components/Primitives/TextField' +import { FormattedMessage, useIntl } from 'react-intl' const canDeleteSelector = (s: TDSnapshot) => { return Object.keys(s.document.pages).length > 1 @@ -23,6 +24,7 @@ interface PageOptionsDialogProps { export function PageOptionsDialog({ page, onOpen, onClose }: PageOptionsDialogProps) { const app = useTldrawApp() + const intl = useIntl() const [isOpen, setIsOpen] = React.useState(false) const [pageName, setPageName] = React.useState(page.name || 'Page') @@ -94,19 +96,23 @@ export function PageOptionsDialog({ page, onOpen, onClose }: PageOptionsDialogPr } /> - Duplicate + + + - Delete + - Cancel + + + diff --git a/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx b/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx index 4648ce1dc..7b3969fd7 100644 --- a/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx @@ -1,4 +1,5 @@ import * as React from 'react' +import { FormattedMessage, useIntl } from 'react-intl' import { DMCheckboxItem, DMDivider, DMSubMenu } from '~components/Primitives/DropdownMenu' import { useTldrawApp } from '~hooks' import { TDSnapshot } from '~types' @@ -7,58 +8,59 @@ const settingsSelector = (s: TDSnapshot) => s.settings export function PreferencesMenu() { const app = useTldrawApp() + const intl = useIntl() const settings = app.useStore(settingsSelector) const toggleDebugMode = React.useCallback(() => { - app.setSetting('isDebugMode', v => !v) + app.setSetting('isDebugMode', (v) => !v) }, [app]) const toggleDarkMode = React.useCallback(() => { - app.setSetting('isDarkMode', v => !v) + app.setSetting('isDarkMode', (v) => !v) }, [app]) const toggleFocusMode = React.useCallback(() => { - app.setSetting('isFocusMode', v => !v) + app.setSetting('isFocusMode', (v) => !v) }, [app]) const toggleRotateHandle = React.useCallback(() => { - app.setSetting('showRotateHandles', v => !v) + app.setSetting('showRotateHandles', (v) => !v) }, [app]) const toggleGrid = React.useCallback(() => { - app.setSetting('showGrid', v => !v) + app.setSetting('showGrid', (v) => !v) }, [app]) const toggleBoundShapesHandle = React.useCallback(() => { - app.setSetting('showBindingHandles', v => !v) + app.setSetting('showBindingHandles', (v) => !v) }, [app]) const toggleisSnapping = React.useCallback(() => { - app.setSetting('isSnapping', v => !v) + app.setSetting('isSnapping', (v) => !v) }, [app]) const toggleKeepStyleMenuOpen = React.useCallback(() => { - app.setSetting('keepStyleMenuOpen', v => !v) + app.setSetting('keepStyleMenuOpen', (v) => !v) }, [app]) const toggleCloneControls = React.useCallback(() => { - app.setSetting('showCloneHandles', v => !v) + app.setSetting('showCloneHandles', (v) => !v) }, [app]) const toggleCadSelectMode = React.useCallback(() => { - app.setSetting('isCadSelectMode', v => !v) + app.setSetting('isCadSelectMode', (v) => !v) }, [app]) return ( - + - Dark Mode + - Focus Mode + - Debug Mode + - Show Grid + - Use CAD Selection + - Keep Style Menu Open + - Always Show Snaps + - Rotate Handles + - Binding Handles + - Clone Handles + ) diff --git a/packages/tldraw/src/components/TopPanel/StyleMenu/StyleMenu.tsx b/packages/tldraw/src/components/TopPanel/StyleMenu/StyleMenu.tsx index f0f6ed144..fd800b927 100644 --- a/packages/tldraw/src/components/TopPanel/StyleMenu/StyleMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/StyleMenu/StyleMenu.tsx @@ -1,6 +1,7 @@ import * as React from 'react' import * as DropdownMenu from '@radix-ui/react-dropdown-menu' import { strokes, fills, defaultTextStyle } from '~state/shapes/shared/shape-styles' +import { FormattedMessage } from 'react-intl' import { useTldrawApp } from '~hooks' import { DMCheckboxItem, @@ -135,9 +136,9 @@ export const StyleMenu = React.memo(function ColorMenu() { } else { const overrides = new Set([]) app.selectedIds - .map(id => page.shapes[id]) - .forEach(shape => { - STYLE_KEYS.forEach(key => { + .map((id) => page.shapes[id]) + .forEach((shape) => { + STYLE_KEYS.forEach((key) => { if (overrides.has(key)) return if (commonStyle[key] === undefined) { // eslint-disable-next-line @typescript-eslint/ban-ts-comment @@ -201,7 +202,7 @@ export const StyleMenu = React.memo(function ColorMenu() { > - Styles + - Color + + + {Object.keys(strokes.light).map((style: string) => ( - Fill + - Dash + - {Object.values(DashStyle).map(style => ( + {Object.values(DashStyle).map((style) => ( - Size + - {Object.values(SizeStyle).map(sizeStyle => ( + {Object.values(SizeStyle).map((sizeStyle) => ( - Font + - {Object.values(FontStyle).map(fontStyle => ( + {Object.values(FontStyle).map((fontStyle) => ( {options === 'text' && ( - Align + - {Object.values(AlignStyle).map(style => ( + {Object.values(AlignStyle).map((style) => ( - Keep Open + diff --git a/packages/tldraw/src/components/TopPanel/ZoomMenu/ZoomMenu.tsx b/packages/tldraw/src/components/TopPanel/ZoomMenu/ZoomMenu.tsx index 650d834d2..665dcc8b7 100644 --- a/packages/tldraw/src/components/TopPanel/ZoomMenu/ZoomMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/ZoomMenu/ZoomMenu.tsx @@ -6,6 +6,7 @@ import * as DropdownMenu from '@radix-ui/react-dropdown-menu' import { DMItem, DMContent } from '~components/Primitives/DropdownMenu' import { ToolButton } from '~components/Primitives/ToolButton' import { preventEvent } from '~components/preventEvent' +import { FormattedMessage } from 'react-intl' const zoomSelector = (s: TDSnapshot) => s.document.pageStates[s.appState.currentPageId].camera.zoom @@ -23,16 +24,16 @@ export const ZoomMenu = React.memo(function ZoomMenu() { - Zoom In + - Zoom Out + - To 100% + 100% - To Fit + - To Selection + diff --git a/packages/tldraw/src/hooks/useKeyboardShortcuts.tsx b/packages/tldraw/src/hooks/useKeyboardShortcuts.tsx index 97c3762ff..601c0ebd2 100644 --- a/packages/tldraw/src/hooks/useKeyboardShortcuts.tsx +++ b/packages/tldraw/src/hooks/useKeyboardShortcuts.tsx @@ -22,17 +22,17 @@ export function useKeyboardShortcuts(ref: React.RefObject) { if (!canHandleEvent(true)) return if (app.readOnly) { - app.copy(undefined, undefined, e) + app.copy(undefined, e) return } - app.cut(undefined, undefined, e) + app.cut(undefined, e) } const handleCopy = (e: ClipboardEvent) => { if (!canHandleEvent(true)) return - app.copy(undefined, undefined, e) + app.copy(undefined, e) } const handlePaste = (e: ClipboardEvent) => { @@ -159,7 +159,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+shift+d,⌘+shift+d', - e => { + (e) => { if (!canHandleEvent(true)) return app.toggleDarkMode() e.preventDefault() @@ -192,17 +192,12 @@ export function useKeyboardShortcuts(ref: React.RefObject) { // File System - const { - onNewProject, - onOpenProject, - onSaveProject, - onSaveProjectAs, - onOpenMedia, - } = useFileSystemHandlers() + const { onNewProject, onOpenProject, onSaveProject, onSaveProjectAs, onOpenMedia } = + useFileSystemHandlers() useHotkeys( 'ctrl+n,⌘+n', - e => { + (e) => { if (!canHandleEvent()) return onNewProject(e) @@ -212,7 +207,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { ) useHotkeys( 'ctrl+s,⌘+s', - e => { + (e) => { if (!canHandleEvent()) return onSaveProject(e) @@ -223,7 +218,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+shift+s,⌘+shift+s', - e => { + (e) => { if (!canHandleEvent()) return onSaveProjectAs(e) @@ -233,7 +228,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { ) useHotkeys( 'ctrl+o,⌘+o', - e => { + (e) => { if (!canHandleEvent()) return onOpenProject(e) @@ -243,7 +238,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { ) useHotkeys( 'ctrl+u,⌘+u', - e => { + (e) => { if (!canHandleEvent()) return onOpenMedia(e) }, @@ -311,7 +306,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+=,⌘+=,ctrl+num_subtract,⌘+num_subtract', - e => { + (e) => { if (!canHandleEvent(true)) return app.zoomIn() e.preventDefault() @@ -322,7 +317,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+-,⌘+-,ctrl+num_add,⌘+num_add', - e => { + (e) => { if (!canHandleEvent(true)) return app.zoomOut() @@ -366,7 +361,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+d,⌘+d', - e => { + (e) => { if (!canHandleEvent()) return app.duplicate() @@ -541,7 +536,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( '⌘+shift+c,ctrl+shift+c', - e => { + (e) => { if (!canHandleEvent()) return app.copySvg() @@ -576,7 +571,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( '⌘+g,ctrl+g', - e => { + (e) => { if (!canHandleEvent()) return app.group() @@ -588,7 +583,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( '⌘+shift+g,ctrl+shift+g', - e => { + (e) => { if (!canHandleEvent()) return app.ungroup() @@ -642,7 +637,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'ctrl+shift+backspace,⌘+shift+backspace', - e => { + (e) => { if (!canHandleEvent()) return if (app.settings.isDebugMode) { app.resetDocument() @@ -657,7 +652,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'alt+command+l,alt+ctrl+l', - e => { + (e) => { if (!canHandleEvent(true)) return app.style({ textAlign: AlignStyle.Start }) e.preventDefault() @@ -668,7 +663,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'alt+command+t,alt+ctrl+t', - e => { + (e) => { if (!canHandleEvent(true)) return app.style({ textAlign: AlignStyle.Middle }) e.preventDefault() @@ -679,7 +674,7 @@ export function useKeyboardShortcuts(ref: React.RefObject) { useHotkeys( 'alt+command+r,alt+ctrl+r', - e => { + (e) => { if (!canHandleEvent(true)) return app.style({ textAlign: AlignStyle.End }) e.preventDefault() diff --git a/packages/tldraw/src/state/StateManager/StateManager.ts b/packages/tldraw/src/state/StateManager/StateManager.ts index 3cbab3874..aabc990f0 100644 --- a/packages/tldraw/src/state/StateManager/StateManager.ts +++ b/packages/tldraw/src/state/StateManager/StateManager.ts @@ -147,7 +147,7 @@ export class StateManager> { */ private applyPatch = (patch: Patch, id?: string) => { const prev = this._state - const next = Utils.deepMerge(this._state, patch) + const next = Utils.deepMerge(this._state, patch as any) const final = this.cleanup(next, prev, patch, id) if (this.onStateWillChange) { this.onStateWillChange(final, id) @@ -175,7 +175,7 @@ export class StateManager> { * @param id (optional) An id for the just-applied patch. * @returns The final new state to apply. */ - protected cleanup = (nextState: T, prevState: T, patch: Patch, id?: string): T => nextState + protected cleanup = (nextState: T, _prevState: T, _patch: Patch, _id?: string): T => nextState /** * A life-cycle method called when the state is about to change. diff --git a/packages/tldraw/src/state/TldrawApp.ts b/packages/tldraw/src/state/TldrawApp.ts index 6338121c9..f8976b8d7 100644 --- a/packages/tldraw/src/state/TldrawApp.ts +++ b/packages/tldraw/src/state/TldrawApp.ts @@ -1713,10 +1713,7 @@ export class TldrawApp extends StateManager { /* Clipboard */ /* -------------------------------------------------- */ - private getClipboard( - ids = this.selectedIds, - pageId = this.currentPageId - ): + private getClipboard(ids = this.selectedIds): | { shapes: TDShape[] bindings: TDBinding[] @@ -1757,10 +1754,10 @@ export class TldrawApp extends StateManager { * Cut (copy and delete) one or more shapes to the clipboard. * @param ids The ids of the shapes to cut. */ - cut = (ids = this.selectedIds, pageId = this.currentPageId, e?: ClipboardEvent): this => { + cut = (ids = this.selectedIds, e?: ClipboardEvent): this => { e?.preventDefault() - this.copy(ids, pageId, e) + this.copy(ids, e) if (!this.readOnly) { this.delete(ids) } @@ -1771,10 +1768,10 @@ export class TldrawApp extends StateManager { * Copy one or more shapes to the clipboard. * @param ids The ids of the shapes to copy. */ - copy = (ids = this.selectedIds, pageId = this.currentPageId, e?: ClipboardEvent): this => { + copy = (ids = this.selectedIds, e?: ClipboardEvent): this => { e?.preventDefault() - this.clipboard = this.getClipboard(ids, pageId) + this.clipboard = this.getClipboard(ids) const jsonString = JSON.stringify({ type: 'tldr/clipboard', @@ -1962,9 +1959,9 @@ export class TldrawApp extends StateManager { } if (e !== undefined) { - let items = e.clipboardData?.items ?? [] - for (var index in items) { - var item = items[index] + const items = e.clipboardData?.items ?? [] + for (const index in items) { + const item = items[index] // TODO // We could eventually support pasting multiple files / images, @@ -1989,7 +1986,7 @@ export class TldrawApp extends StateManager { return } case 'file': { - var file = item.getAsFile() + const file = item.getAsFile() if (file) { this.addMediaFromFile(file) return @@ -2386,7 +2383,7 @@ export class TldrawApp extends StateManager { transparentBackground: boolean }> ) => { - const { scale = 2, quality = 1, ids = this.selectedIds, pageId = this.currentPageId } = opts + const { pageId = this.currentPageId } = opts const blob = await this.getImage(format, opts) @@ -2977,7 +2974,7 @@ export class TldrawApp extends StateManager { // Ensure that the pasted shape fits inside of the current viewport if (size[0] > this.viewport.width) { - let r = size[1] / size[0] + const r = size[1] / size[0] size[0] = this.viewport.width - (FIT_TO_SCREEN_PADDING / this.camera.zoom) * 2 size[1] = size[0] * r if (size[1] < 32 || size[1] < 32) { @@ -2985,7 +2982,7 @@ export class TldrawApp extends StateManager { size[0] = size[1] / r } } else if (size[1] > this.viewport.height) { - let r = size[0] / size[1] + const r = size[0] / size[1] size[1] = this.viewport.height - (FIT_TO_SCREEN_PADDING / this.camera.zoom) * 2 size[0] = size[1] * r if (size[1] < 32 || size[1] < 32) { @@ -4093,6 +4090,7 @@ export class TldrawApp extends StateManager { showBindingHandles: true, showCloneHandles: false, showGrid: false, + language: 'en', }, appState: { status: TDStatus.Idle, diff --git a/packages/tldraw/src/state/sessions/TranslateSession/TranslateSession.ts b/packages/tldraw/src/state/sessions/TranslateSession/TranslateSession.ts index 1425b1bdf..0d0f946d8 100644 --- a/packages/tldraw/src/state/sessions/TranslateSession/TranslateSession.ts +++ b/packages/tldraw/src/state/sessions/TranslateSession/TranslateSession.ts @@ -1,12 +1,5 @@ /* eslint-disable @typescript-eslint/no-non-null-assertion */ -import { - TLPageState, - Utils, - TLBoundsWithCenter, - TLSnapLine, - TLBounds, - TLPerformanceMode, -} from '@tldraw/core' +import { TLPageState, Utils, TLBoundsWithCenter, TLSnapLine, TLBounds } from '@tldraw/core' import { Vec } from '@tldraw/vec' import { TDShape, diff --git a/packages/tldraw/src/state/shapes/DrawUtil/DrawUtil.tsx b/packages/tldraw/src/state/shapes/DrawUtil/DrawUtil.tsx index e33cc77f0..ec86df8b7 100644 --- a/packages/tldraw/src/state/shapes/DrawUtil/DrawUtil.tsx +++ b/packages/tldraw/src/state/shapes/DrawUtil/DrawUtil.tsx @@ -277,7 +277,7 @@ export class DrawUtil extends TDShapeUtil { const bounds = this.getBounds(shape) if (bounds.width < 8 && bounds.height < 8) { - return Vec.distanceToLineSegment(A, B, Utils.getBoundsCenter(bounds)) < 5 + return Vec.distanceToLineSegment(A, B, Utils.getBoundsCenter(bounds)) < 5 // divide by zoom } if (intersectLineSegmentBounds(ptA, ptB, bounds)) { diff --git a/packages/tldraw/src/state/shapes/TextUtil/TextUtil.tsx b/packages/tldraw/src/state/shapes/TextUtil/TextUtil.tsx index d3d21d3cd..8346986d8 100644 --- a/packages/tldraw/src/state/shapes/TextUtil/TextUtil.tsx +++ b/packages/tldraw/src/state/shapes/TextUtil/TextUtil.tsx @@ -146,7 +146,7 @@ export class TextUtil extends TDShapeUtil { ) const handlePointerDown = React.useCallback( - (e) => { + (e: React.PointerEvent) => { if (isEditing) { e.stopPropagation() } diff --git a/packages/tldraw/src/state/shapes/shared/TextLabel.tsx b/packages/tldraw/src/state/shapes/shared/TextLabel.tsx index afd0c768c..3622166ff 100644 --- a/packages/tldraw/src/state/shapes/shared/TextLabel.tsx +++ b/packages/tldraw/src/state/shapes/shared/TextLabel.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { stopPropagation } from '~components/stopPropagation' -import { GHOSTED_OPACITY, LETTER_SPACING } from '~constants' +import { GHOSTED_OPACITY, LETTER_SPACING } from '~constants' import { TLDR } from '~state/TLDR' import { styled } from '~styles' import { getTextLabelSize } from './getTextSize' @@ -95,7 +95,7 @@ export const TextLabel = React.memo(function TextLabel({ ) const handlePointerDown = React.useCallback( - (e) => { + (e: React.PointerEvent) => { if (isEditing) { e.stopPropagation() } diff --git a/packages/tldraw/src/state/tools/BaseTool.ts b/packages/tldraw/src/state/tools/BaseTool.ts index 1ce4c7dbe..c3b0ed43e 100644 --- a/packages/tldraw/src/state/tools/BaseTool.ts +++ b/packages/tldraw/src/state/tools/BaseTool.ts @@ -2,7 +2,6 @@ import { TLKeyboardEventHandler, TLPinchEventHandler, TLPointerEventHandler, - TLWheelEventHandler, Utils, } from '@tldraw/core' import type { TldrawApp } from '../internal' diff --git a/packages/tldraw/src/test/index.ts b/packages/tldraw/src/test/index.ts index ea4cb1a9e..3bd60419e 100644 --- a/packages/tldraw/src/test/index.ts +++ b/packages/tldraw/src/test/index.ts @@ -1,3 +1,4 @@ export * from './mockDocument' export * from './renderWithContext' export * from './TldrawTestApp' +export * from './renderWithIntlProvider' diff --git a/packages/tldraw/src/test/renderWithIntlProvider.tsx b/packages/tldraw/src/test/renderWithIntlProvider.tsx new file mode 100644 index 000000000..635c07442 --- /dev/null +++ b/packages/tldraw/src/test/renderWithIntlProvider.tsx @@ -0,0 +1,18 @@ +import * as React from 'react' +import { IntlProvider } from 'react-intl' +import messages_en from '~translations/en.json' +import messages_fr from '~translations/fr.json' + +export const renderWithIntlProvider = (children: React.ReactNode) => { + const messages = { + en: messages_en, + fr: messages_fr, + } + const language = navigator.language.split(/[-_]/)[0] + return ( + // @ts-ignore + + <>{children} + + ) +} diff --git a/packages/tldraw/src/translations/en.json b/packages/tldraw/src/translations/en.json new file mode 100644 index 000000000..0ec33cffc --- /dev/null +++ b/packages/tldraw/src/translations/en.json @@ -0,0 +1,99 @@ +{ + "style.menu.color": "Color", + "style.menu.fill": "Fill", + "style.menu.dash": "Dash", + "style.menu.size": "Size", + "style.menu.keep.open": "Keep open", + "style.menu.font": "Font", + "style.menu.align": "Align", + "styles": "Styles", + + "zoom.in": "Zoom in", + "zoom.out": "Zoom out", + "to": "to", + "to.selection": "To selection", + "to.fit": "To fit", + + "menu.file": "File", + "menu.edit": "Edit", + "menu.view": "View", + "menu.preferences": "Preferences", + "menu.sign.in": "Sign In", + "menu.sign.out": "Sign Out", + "sponsored": "Sponsored", + "become.a.sponsor": "Become a sponsor", + "zoom.to.selection": "Zoom to Selection", + "zoom.to.fit": "Zoom to Fit", + "zoom.to": "Zoom to", + + "preferences.dark.mode": "Dark Mode", + "preferences.focus.mode": "Focus Mode", + "preferences.debug.mode": "Debug Mode", + "preferences.show.grid": "Show Grid", + "preferences.use.cad.selection": "Use CAD Selection", + "preferences.keep.stylemenu.open": "Keep Style Menu Open", + "preferences.always.show.snaps": "Always Show Snaps", + "preferences.rotate.handles": "Rotate Handles", + "preferences.binding.handles": "Binding Handles", + "preferences.clone.handles": "Clone Handles", + + "undo": "Undo", + "redo": "Redo", + "cut": "Cut", + "copy": "Copy", + "paste": "Paste", + "copy.as": "Copy as", + "export.as": "Export as", + "select.all": "Select all", + "select.none": "Select none", + "delete": "Delete", + + "new.project": "New Project", + "open": "Open", + "save": "Save", + "save.as": "Save As", + "upload.media": "Upload Media", + + "create.page": "Create Page", + "new.page": "New Page", + "page.name": "Page Name", + "duplicate": "Duplicate", + "cancel": "Cancel", + "copy.invite.link": "Copy Invite Link", + "create.multiplayer.project": "Create a Multiplayer Project", + "copy.multiplayer.project": "Copy to Multiplayer Project", + + "select": "Select", + "eraser": "Eraser", + "draw": "Draw", + "arrow": "Arrow", + "text": "Text", + "sticky": "Sticky", + "Rectangle": "Rectangle", + "Ellipse": "Ellipse", + "Triangle": "Triangle", + "Line": "Line", + + "rotate": "Rotate", + "lock.aspect.ratio": "Lock Aspect Ratio", + "unlock.aspect.ratio": "Unlock Aspect Ratio", + "group": "Group", + "ungroup": "Ungroup", + "move.to.back": "Move to Back", + "move.backward": "Move Backward", + "move.forward": "Move Forward", + "move.to.front": "Move to Front", + "reset.angle": "Reset Angle", + "lock": "Lock", + "unlock": "Unlock", + + "move.to.page": "Move to Page", + "flip.horizontal": "Flip Horizontal", + "flip.vertical": "Flip Vertical", + "move": "Move", + "to.front": "To Front", + "forward": "Forward", + "backward": "Backward", + "back": "Back", + "language": "Language" +} diff --git a/packages/tldraw/src/translations/fr.json b/packages/tldraw/src/translations/fr.json new file mode 100644 index 000000000..e92e6828c --- /dev/null +++ b/packages/tldraw/src/translations/fr.json @@ -0,0 +1,98 @@ +{ + "style.menu.color": "Couleur", + "style.menu.fill": "Remplir", + "style.menu.dash": "Bordure", + "style.menu.size": "Taille", + "style.menu.keep.open": "Garder ouvert", + "style.menu.font": "Font", + "style.menu.align": "Alignement", + "styles": "Styles", + + "zoom.in": "Zoomer", + "zoom.out": "Dézoomer", + "to": "À", + "to.selection": "Sélection", + "to.fit": "Adapter", + + "menu.file": "Fichier", + "menu.edit": "Modifier", + "menu.view": "Vue", + "menu.preferences": "Préférences", + "menu.sign.in": "S'authentifier", + "menu.sign.out": "Se déconnecter", + "sponsored": "Sponsorisé", + "become.a.sponsor": "Devenir un sponsor", + "zoom.to.selection": "Zoomer sur la sélection", + "zoom.to.fit": "Zoomer pour adapter", + "zoom.to": "Réinitialiser le zoom à", + + "preferences.dark.mode": "Mode Sombre", + "preferences.focus.mode": "Mode Focus", + "preferences.debug.mode": "Débogage Mode", + "preferences.show.grid": "Montrer La Grille", + "preferences.use.cad.selection": "Utiliser La Sélection CAD", + "preferences.keep.stylemenu.open": "Garder Le Menu Style Ouvert", + "preferences.always.show.snaps": "Garder Les Snaps Visible", + "preferences.rotate.handles": "Manipuler La Rotation", + "preferences.binding.handles": "Manipuler La Liaison", + "preferences.clone.handles": "Manipuler Le Clonage", + + "undo": "Annuler", + "redo": "Refaire", + "cut": "Couper", + "copy": "Copier", + "paste": "Coller", + "copy.as": "Copier en tant que", + "export.as": "Exporter en tant que", + "select.all": "Sélectionner tout", + "select.none": "Sélectionner aucun", + "delete": "Supprimer", + + "new.project": "Nouveau Project", + "open": "Ouvrir", + "save": "Enregistrer", + "save.as": "Enregistrer en tant que", + "upload.media": "Uploader Un Média", + + "create.page": "Créer une Page", + "new.page": "Nouvelle Page", + "page.name": "Nom de la Page", + "duplicate": "Dupliquer", + "cancel": "Annuler", + "copy.invite.link": "Copier le Lien d'Invitation", + "create.multiplayer.project": "Créer un Project Multi-joueurs", + "copy.multiplayer.project": "Copier dans un Projet Multi-joueurs", + + "select": "Selection", + "eraser": "Gomme", + "draw": "Crayon", + "arrow": "Flèche", + "text": "Text", + "sticky": "Papier collant", + "Rectangle": "Rectangle", + "Ellipse": "Cercle", + "Triangle": "Triangle", + "Line": "Ligne", + + "rotate": "Retourner", + "lock.aspect.ratio": "Verouiller l'Aspect Ratio", + "unlock.aspect.ratio": "Déverouiller l'Aspect Ratio", + "group": "Grouper", + "ungroup": "Dégrouper", + "move.to.back": "Envoyer vers l'arrière", + "move.backward": "Mettre en arrière-plan", + "move.forward": "Mettre au premier plan", + "move.to.front": "Envoyer vers l'avant", + "reset.angle": "Réinitialiser l'Angle", + "lock": "Verouiller", + "unlock": "Déverouiller", + "move.to.page": "Déplacer vers la page", + "flip.horizontal": "Retourner Horizontalement", + "flip.vertical": "Retourner Verticalement", + "move": "Mettre", + "to.front": "À l'avant", + "forward": "Au premier plan", + "backward": "En arrière plan", + "back": "À l'arrière", + "language": "Langage" +} diff --git a/packages/tldraw/src/translations/it.json b/packages/tldraw/src/translations/it.json new file mode 100644 index 000000000..a219b42a2 --- /dev/null +++ b/packages/tldraw/src/translations/it.json @@ -0,0 +1,98 @@ +{ + "style.menu.color": "Colore", + "style.menu.fill": "Riempi", + "style.menu.dash": "Tratteggo", + "style.menu.size": "Dimensione", + "style.menu.keep.open": "Mantieni aperto", + "style.menu.font": "Font", + "style.menu.align": "Allineamento", + "styles": "Stile", + + "zoom.in": "Ingrandisci", + "zoom.out": "Rimpicciolisci", + "to": "Imposta", + "to.selection": "Adatta alla selezione", + "to.fit": "Adatta", + + "menu.file": "File", + "menu.edit": "Modifica", + "menu.view": "Visualizzazione", + "menu.preferences": "Preferenze", + "menu.sign.in": "Accedi", + "menu.sign.out": "Esci", + "sponsored": "Sponsorizza", + "become.a.sponsor": "Sponsorizza", + "zoom.to.selection": "Adatta alla selezione", + "zoom.to.fit": "Adatta", + "zoom.to": "Ingrandisci", + + "preferences.dark.mode": "Modalità scura", + "preferences.focus.mode": "Modalità zen", + "preferences.debug.mode": "Modalità sviluppatore", + "preferences.show.grid": "Mostra griglia", + "preferences.use.cad.selection": "Selezione CAD", + "preferences.keep.stylemenu.open": "Mantieni menu stile aperto", + "preferences.always.show.snaps": "Mostra sempre le guide", + "preferences.rotate.handles": "Controlli d'inclinazione", + "preferences.binding.handles": "Controlli d'associazione", + "preferences.clone.handles": "Controlli di clonazione", + + "undo": "Annulla", + "redo": "Ripristina", + "cut": "Taglia", + "copy": "Copia", + "paste": "Incolla", + "copy.as": "Copia come", + "export.as": "Esporta come", + "select.all": "Seleziona tutto", + "select.none": "Deseleziona tutto", + "delete": "Elimina", + + "new.project": "Nuovo progetto", + "open": "Apri", + "save": "Salva", + "save.as": "Salva come", + "upload.media": "Carica contenuti multimediali", + + "create.page": "Crea nuova pagina", + "new.page": "Nuova pagina", + "page.name": "Nome pagina", + "duplicate": "Duplica", + "cancel": "Chiudi", + "copy.invite.link": "Copia link invito", + "create.multiplayer.project": "Crea progetto multiplayer", + "copy.multiplayer.project": "Trasforma in progetto multiplayer", + + "select": "Seleziona", + "eraser": "Gomma", + "draw": "Matita", + "arrow": "Freccia", + "text": "Casella di testo", + "sticky": "Post-it", + "Rectangle": "Rettangolo", + "Ellipse": "Ellisse", + "Triangle": "Triangolo", + "Line": "Linea", + + "rotate": "Ruota", + "lock.aspect.ratio": "Blocca rapporto lati", + "unlock.aspect.ratio": "Sblocca rapporto lati", + "group": "Raggruppa", + "move.to.back": "Muovi in fondo", + "move.backward": "Sposta indietro", + "move.forward": "Sposta avanti", + "move.to.front": "Muovi in fronte", + "reset.angle": "Reimposta angolo", + "lock": "Blocca", + "unlock": "Sblocca", + + "move.to.page": "Trasferisci a pagina", + "flip.horizontal": "Ribalta orizzontalmente", + "flip.vertical": "Ribalta verticalmente", + "move": "Sposta", + "to.front": "In primo piano", + "forward": "Sposta avanti", + "backward": "Sposta indietro", + "back": "In fondo", + "language": "Lingua" +} diff --git a/packages/tldraw/src/types.ts b/packages/tldraw/src/types.ts index 59ec88bf1..b2a890781 100644 --- a/packages/tldraw/src/types.ts +++ b/packages/tldraw/src/types.ts @@ -76,6 +76,8 @@ export class TDEventHandler { onShapeClone?: TLShapeCloneHandler } +export type TDLanguage = 'en' | 'fr' | 'it' + // The shape of the TldrawApp's React (zustand) store export interface TDSnapshot { settings: { @@ -94,6 +96,7 @@ export interface TDSnapshot { showBindingHandles: boolean showCloneHandles: boolean showGrid: boolean + language: TDLanguage } appState: { currentStyle: ShapeStyles diff --git a/packages/tldraw/tsconfig.json b/packages/tldraw/tsconfig.json index 7bb9b3dfa..2642d2830 100644 --- a/packages/tldraw/tsconfig.json +++ b/packages/tldraw/tsconfig.json @@ -1,7 +1,7 @@ { "extends": "../../tsconfig.base.json", "exclude": ["node_modules", "dist", "docs"], - "include": ["src"], + "include": ["src", "./src/translations/*.json"], "compilerOptions": { "skipLibCheck": true, "outDir": "./dist", diff --git a/yarn.lock b/yarn.lock index 03117a77d..3fa5bcf2f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1537,6 +1537,76 @@ resolved "https://registry.yarnpkg.com/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.6.1.tgz#0c74724ba6e9ea6ad25a391eab60a79eaba4c556" integrity sha512-9FqhNjKQWpQ3fGnSOCovHOm+yhhiorKEqYLAfd525jWavunDJcx8rOW6i6ozAh+FbwcYMkL7b+3j4UR/30MpoQ== +"@formatjs/ecma402-abstract@1.11.6": + version "1.11.6" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.11.6.tgz#0e828ddfed6fb3413ae379e48fb7170fb0795db5" + integrity sha512-6TcI+IroIK+GTWXBJ643LBJklmCBsqLt1sUTGWfzdBcI5Y6b1L1iamrJB1B5OAQLnhzWveLbmzPYHYsFEZfeig== + dependencies: + "@formatjs/intl-localematcher" "0.2.27" + tslib "2.4.0" + +"@formatjs/fast-memoize@1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-1.2.3.tgz#5c950bd64c4959e30bbd16b22a17040fbeb9c4d2" + integrity sha512-RVI3e4M7mIxAhKbbyS78H8++fsoiSRZgxh0zReHfvV6p1cpfgG2/k2qJYhJq0RXh6orVtUEsQ3xK9i4tDfsOSg== + dependencies: + tslib "2.4.0" + +"@formatjs/icu-messageformat-parser@2.1.2": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.1.2.tgz#9ff4dfc4f1ed613cca2c188b29f299854b86b7f8" + integrity sha512-FYQ2pkgbDJxJlst/U5MU2H7+bR9HrZ4x8J4c0etrya24pJzQxYguVlAhc2S6NoEImlQ2LmIIGsURaBQu9bCtew== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/icu-skeleton-parser" "1.3.8" + tslib "2.4.0" + +"@formatjs/icu-skeleton-parser@1.3.8": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.3.8.tgz#3d150fcb45b4867c1db84237ca1f1f701d598918" + integrity sha512-CVdsPMs/KvrIDKhMDw8bSq/Zst2bhdn/bTUfVCHi/c/bj462lChIJmW/JP/FaGKgZzdG8slGyVIFLonpG4uqFA== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + tslib "2.4.0" + +"@formatjs/intl-displaynames@6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.0.1.tgz#b4bf890d440a19da03203a5e7f1bff1460b2b859" + integrity sha512-KPfB+mOIzcptAzpNIciDc+rK4kRCg5aTCXPr5feIWNxvd/H1Wr3cVVDV2YGdPn+Woo9b1K4cnUi3b1IvBFQ/5g== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/intl-localematcher" "0.2.27" + tslib "2.4.0" + +"@formatjs/intl-listformat@7.0.1": + version "7.0.1" + resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.0.1.tgz#9b7f0d46a6eb04138dde5d57c898222315f87334" + integrity sha512-sgE4B9+mu3ZF77vhZB0tR8O3evvcPA//WbA/8UJ21XOrSzfY6RXhSbvDfSd7Y5iEeBu+2C+5YxDuAwLnvq2SnQ== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/intl-localematcher" "0.2.27" + tslib "2.4.0" + +"@formatjs/intl-localematcher@0.2.27": + version "0.2.27" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.2.27.tgz#8a837ddca17a55d86e4ab68bcbb25b15f547d61d" + integrity sha512-XHYcVas2ebDTh3VtfdluvbTjqyMUHqFHARnuJo5KYF/0MKOTmozVSK7PJGnu1IEHdmRdTWuG6TB+2RnkasaxVw== + dependencies: + tslib "2.4.0" + +"@formatjs/intl@2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.2.5.tgz#888f42750eacdcfb836a062eb889cb429d13f7f7" + integrity sha512-b0+5Bjsl3KDAII2frBPRO7ck9Ec/xqZ25BoiJATJhe//e4n6FOvVXk5QKYwBQPDt3JPu/Qa14oqHDiZlZmVdSg== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/fast-memoize" "1.2.3" + "@formatjs/icu-messageformat-parser" "2.1.2" + "@formatjs/intl-displaynames" "6.0.1" + "@formatjs/intl-listformat" "7.0.1" + intl-messageformat "10.0.1" + tslib "2.4.0" + "@grpc/grpc-js@^1.3.2": version "1.5.5" resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.5.5.tgz#f850a1bb7de8a1d0bb4821aabd3655d1c928d4c6" @@ -1785,16 +1855,34 @@ "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/trace-mapping@^0.3.7": + version "0.3.13" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.13.tgz#dcfe3e95f224c8fe97a87a5235defec999aa92ea" + integrity sha512-o1xbKhp9qnIAoHJSWd6KlCZfqslL4valSF81H8ImioOAxluWYWOpWkpyktY2vnt4tbrX9XYaxovq6cgowaJp2w== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@liveblocks/client@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@liveblocks/client/-/client-0.14.0.tgz#2a5f7bd243d3aea7b95cf62737e49dc13df1b69b" integrity sha512-I1nykCqYSpuBQhP1kZplYqL6L0+C1JocW01UKgPz+tthOOGdTdsNBHPcMigxou4vsOQutUuEJUcaDsd1or4A+Q== +"@liveblocks/client@^0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@liveblocks/client/-/client-0.16.17.tgz#38f8392d7baaf20b34237d06fe3cb53586cea8f0" + integrity sha512-mWX/EGQNoWwzkEdUfdt82w9OMA5kKV3BraBt2YhZO4Zn04mfNmcOkr7V4S+EmJ4LyQ5QVNKYvA4gJQU1ahn5mQ== + "@liveblocks/react@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@liveblocks/react/-/react-0.14.0.tgz#1a29ff10e88ea04d029f553f8b14a6cff4584f70" integrity sha512-KGuEEmifh3A9OEHTYaR3+yxIQOhdAQG59d0eOqKbyV/I0X6IoX4kAtXZjnZllrWrTwnnSY2aPFESthtt19t6EQ== +"@liveblocks/react@^0.16.17": + version "0.16.17" + resolved "https://registry.yarnpkg.com/@liveblocks/react/-/react-0.16.17.tgz#e3d5c591ad284f84cf5689ad2b8f4d0d0e1ef1ba" + integrity sha512-I0WvNI+X/I+ymbVF/+W4GOCaZnsaqje01Mp9BGt7u7joL1ZNBQuva1zWPINE6pNWTk75y/pmG4o56YoC+ek4FQ== + "@malept/cross-spawn-promise@^1.1.0": version "1.1.1" resolved "https://registry.yarnpkg.com/@malept/cross-spawn-promise/-/cross-spawn-promise-1.1.1.tgz#504af200af6b98e198bce768bc1730c6936ae01d" @@ -1834,10 +1922,10 @@ globby "^11.0.0" read-yaml-file "^1.1.0" -"@next/env@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.0.tgz#73713399399b34aa5a01771fb73272b55b22c314" - integrity sha512-nrIgY6t17FQ9xxwH3jj0a6EOiQ/WDHUos35Hghtr+SWN/ntHIQ7UpuvSi0vaLzZVHQWaDupKI+liO5vANcDeTQ== +"@next/env@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/env/-/env-12.1.6.tgz#5f44823a78335355f00f1687cfc4f1dafa3eca08" + integrity sha512-Te/OBDXFSodPU6jlXYPAXpmZr/AkG6DCATAxttQxqOWaq6eDFX25Db3dK0120GZrSZmv4QCe9KsZmJKDbWs4OA== "@next/eslint-plugin-next@12.0.10": version "12.0.10" @@ -1846,60 +1934,65 @@ dependencies: glob "7.1.7" -"@next/swc-android-arm64@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.0.tgz#865ba3a9afc204ff2bdeea49dd64d58705007a39" - integrity sha512-/280MLdZe0W03stA69iL+v6I+J1ascrQ6FrXBlXGCsGzrfMaGr7fskMa0T5AhQIVQD4nA/46QQWxG//DYuFBcA== +"@next/swc-android-arm-eabi@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm-eabi/-/swc-android-arm-eabi-12.1.6.tgz#79a35349b98f2f8c038ab6261aa9cd0d121c03f9" + integrity sha512-BxBr3QAAAXWgk/K7EedvzxJr2dE014mghBSA9iOEAv0bMgF+MRq4PoASjuHi15M2zfowpcRG8XQhMFtxftCleQ== -"@next/swc-darwin-arm64@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.0.tgz#08e8b411b8accd095009ed12efbc2f1d4d547135" - integrity sha512-R8vcXE2/iONJ1Unf5Ptqjk6LRW3bggH+8drNkkzH4FLEQkHtELhvcmJwkXcuipyQCsIakldAXhRbZmm3YN1vXg== +"@next/swc-android-arm64@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-android-arm64/-/swc-android-arm64-12.1.6.tgz#ec08ea61794f8752c8ebcacbed0aafc5b9407456" + integrity sha512-EboEk3ROYY7U6WA2RrMt/cXXMokUTXXfnxe2+CU+DOahvbrO8QSWhlBl9I9ZbFzJx28AGB9Yo3oQHCvph/4Lew== -"@next/swc-darwin-x64@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.0.tgz#fcd684497a76e8feaca88db3c394480ff0b007cd" - integrity sha512-ieAz0/J0PhmbZBB8+EA/JGdhRHBogF8BWaeqR7hwveb6SYEIJaDNQy0I+ZN8gF8hLj63bEDxJAs/cEhdnTq+ug== +"@next/swc-darwin-arm64@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-12.1.6.tgz#d1053805615fd0706e9b1667893a72271cd87119" + integrity sha512-P0EXU12BMSdNj1F7vdkP/VrYDuCNwBExtRPDYawgSUakzi6qP0iKJpya2BuLvNzXx+XPU49GFuDC5X+SvY0mOw== -"@next/swc-linux-arm-gnueabihf@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.0.tgz#9ec6380a27938a5799aaa6035c205b3c478468a7" - integrity sha512-njUd9hpl6o6A5d08dC0cKAgXKCzm5fFtgGe6i0eko8IAdtAPbtHxtpre3VeSxdZvuGFh+hb0REySQP9T1ttkog== +"@next/swc-darwin-x64@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-12.1.6.tgz#2d1b926a22f4c5230d5b311f9c56cfdcc406afec" + integrity sha512-9FptMnbgHJK3dRDzfTpexs9S2hGpzOQxSQbe8omz6Pcl7rnEp9x4uSEKY51ho85JCjL4d0tDLBcXEJZKKLzxNg== -"@next/swc-linux-arm64-gnu@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.0.tgz#7f4196dff1049cea479607c75b81033ae2dbd093" - integrity sha512-OqangJLkRxVxMhDtcb7Qn1xjzFA3s50EIxY7mljbSCLybU+sByPaWAHY4px97ieOlr2y4S0xdPKkQ3BCAwyo6Q== +"@next/swc-linux-arm-gnueabihf@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm-gnueabihf/-/swc-linux-arm-gnueabihf-12.1.6.tgz#c021918d2a94a17f823106a5e069335b8a19724f" + integrity sha512-PvfEa1RR55dsik/IDkCKSFkk6ODNGJqPY3ysVUZqmnWMDSuqFtf7BPWHFa/53znpvVB5XaJ5Z1/6aR5CTIqxPw== -"@next/swc-linux-arm64-musl@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.0.tgz#b445f767569cdc2dddee785ca495e1a88c025566" - integrity sha512-hB8cLSt4GdmOpcwRe2UzI5UWn6HHO/vLkr5OTuNvCJ5xGDwpPXelVkYW/0+C3g5axbDW2Tym4S+MQCkkH9QfWA== +"@next/swc-linux-arm64-gnu@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-12.1.6.tgz#ac55c07bfabde378dfa0ce2b8fc1c3b2897e81ae" + integrity sha512-53QOvX1jBbC2ctnmWHyRhMajGq7QZfl974WYlwclXarVV418X7ed7o/EzGY+YVAEKzIVaAB9JFFWGXn8WWo0gQ== -"@next/swc-linux-x64-gnu@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.0.tgz#67610e9be4fbc987de7535f1bcb17e45fe12f90e" - integrity sha512-OKO4R/digvrVuweSw/uBM4nSdyzsBV5EwkUeeG4KVpkIZEe64ZwRpnFB65bC6hGwxIBnTv5NMSnJ+0K/WmG78A== +"@next/swc-linux-arm64-musl@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-12.1.6.tgz#e429f826279894be9096be6bec13e75e3d6bd671" + integrity sha512-CMWAkYqfGdQCS+uuMA1A2UhOfcUYeoqnTW7msLr2RyYAys15pD960hlDfq7QAi8BCAKk0sQ2rjsl0iqMyziohQ== -"@next/swc-linux-x64-musl@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.0.tgz#ea19a23db08a9f2e34ac30401f774cf7d1669d31" - integrity sha512-JohhgAHZvOD3rQY7tlp7NlmvtvYHBYgY0x5ZCecUT6eCCcl9lv6iV3nfu82ErkxNk1H893fqH0FUpznZ/H3pSw== +"@next/swc-linux-x64-gnu@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-12.1.6.tgz#1f276c0784a5ca599bfa34b2fcc0b38f3a738e08" + integrity sha512-AC7jE4Fxpn0s3ujngClIDTiEM/CQiB2N2vkcyWWn6734AmGT03Duq6RYtPMymFobDdAtZGFZd5nR95WjPzbZAQ== -"@next/swc-win32-arm64-msvc@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.0.tgz#eadf054fc412085659b98e145435bbba200b5283" - integrity sha512-T/3gIE6QEfKIJ4dmJk75v9hhNiYZhQYAoYm4iVo1TgcsuaKLFa+zMPh4056AHiG6n9tn2UQ1CFE8EoybEsqsSw== +"@next/swc-linux-x64-musl@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-12.1.6.tgz#1d9933dd6ba303dcfd8a2acd6ac7c27ed41e2eea" + integrity sha512-c9Vjmi0EVk0Kou2qbrynskVarnFwfYIi+wKufR9Ad7/IKKuP6aEhOdZiIIdKsYWRtK2IWRF3h3YmdnEa2WLUag== -"@next/swc-win32-ia32-msvc@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.0.tgz#68faeae10c89f698bf9d28759172b74c9c21bda1" - integrity sha512-iwnKgHJdqhIW19H9PRPM9j55V6RdcOo6rX+5imx832BCWzkDbyomWnlzBfr6ByUYfhohb8QuH4hSGEikpPqI0Q== +"@next/swc-win32-arm64-msvc@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-12.1.6.tgz#2ef9837f12ca652b1783d72ecb86208906042f02" + integrity sha512-3UTOL/5XZSKFelM7qN0it35o3Cegm6LsyuERR3/OoqEExyj3aCk7F025b54/707HTMAnjlvQK3DzLhPu/xxO4g== -"@next/swc-win32-x64-msvc@12.1.0": - version "12.1.0" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.0.tgz#d27e7e76c87a460a4da99c5bfdb1618dcd6cd064" - integrity sha512-aBvcbMwuanDH4EMrL2TthNJy+4nP59Bimn8egqv6GHMVj0a44cU6Au4PjOhLNqEh9l+IpRGBqMTzec94UdC5xg== +"@next/swc-win32-ia32-msvc@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-12.1.6.tgz#74003d0aa1c59dfa56cb15481a5c607cbc0027b9" + integrity sha512-8ZWoj6nCq6fI1yCzKq6oK0jE6Mxlz4MrEsRyu0TwDztWQWe7rh4XXGLAa2YVPatYcHhMcUL+fQQbqd1MsgaSDA== + +"@next/swc-win32-x64-msvc@12.1.6": + version "12.1.6" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.1.6.tgz#a350caf42975e7197b24b495b8d764eec7e6a36e" + integrity sha512-4ZEwiRuZEicXhXqmhw3+de8Z4EpOLQj/gp+D9fFWo6ii6W1kBkNNvvEx4A90ugppu+74pT1lIJnOuz3A9oQeJA== "@node-rs/xxhash-android-arm-eabi@1.2.0": version "1.2.0" @@ -2100,22 +2193,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "0.1.4" -"@radix-ui/react-checkbox@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-checkbox/-/react-checkbox-0.1.5.tgz#3a6bd54ba1720c8e5c03852acf460e35dfbe9da3" - integrity sha512-M8Y4dSXsKSbF+FryG5VvZKr/1MukMVG7swq9p5s7wYb8Rvn0UM0rQ5w8BWmSWSV4BL/gbJdhwVCznwXXlgZRZg== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "0.1.0" - "@radix-ui/react-compose-refs" "0.1.0" - "@radix-ui/react-context" "0.1.1" - "@radix-ui/react-label" "0.1.5" - "@radix-ui/react-presence" "0.1.2" - "@radix-ui/react-primitive" "0.1.4" - "@radix-ui/react-use-controllable-state" "0.1.0" - "@radix-ui/react-use-previous" "0.1.1" - "@radix-ui/react-use-size" "0.1.1" - "@radix-ui/react-collection@0.1.4": version "0.1.4" resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-0.1.4.tgz#734061ffd5bb93e88889d49b87391a73a63824c9" @@ -2231,17 +2308,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-layout-effect" "0.1.0" -"@radix-ui/react-label@0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-label/-/react-label-0.1.5.tgz#12cd965bfc983e0148121d4c99fb8e27a917c45c" - integrity sha512-Au9+n4/DhvjR0IHhvZ1LPdx/OW+3CGDie30ZyCkbSHIuLp4/CV4oPPGBwJ1vY99Jog3zyQhsGww9MXj8O9Aj/A== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/react-compose-refs" "0.1.0" - "@radix-ui/react-context" "0.1.1" - "@radix-ui/react-id" "0.1.5" - "@radix-ui/react-primitive" "0.1.4" - "@radix-ui/react-menu@0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@radix-ui/react-menu/-/react-menu-0.1.6.tgz#7f9521a10f6a9cd819b33b33d5ed9538d79b2e75" @@ -2307,23 +2373,6 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-slot" "0.1.2" -"@radix-ui/react-radio-group@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@radix-ui/react-radio-group/-/react-radio-group-0.1.5.tgz#ca8a676123a18b44804aff10af46129e2c2b37c3" - integrity sha512-ybgHsmh/V2crKvK6xZ56dpPul7b+vyxcq7obWqHbr5W6Ca11wdm0E7lS0i/Y6pgfIKYOWIARmZYDpRMEeRCPOw== - dependencies: - "@babel/runtime" "^7.13.10" - "@radix-ui/primitive" "0.1.0" - "@radix-ui/react-compose-refs" "0.1.0" - "@radix-ui/react-context" "0.1.1" - "@radix-ui/react-label" "0.1.5" - "@radix-ui/react-presence" "0.1.2" - "@radix-ui/react-primitive" "0.1.4" - "@radix-ui/react-roving-focus" "0.1.5" - "@radix-ui/react-use-controllable-state" "0.1.0" - "@radix-ui/react-use-previous" "0.1.1" - "@radix-ui/react-use-size" "0.1.1" - "@radix-ui/react-roving-focus@0.1.5": version "0.1.5" resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-0.1.5.tgz#cc48d17a36b56f253d54905b0fd60ee134cb97ee" @@ -2662,7 +2711,7 @@ dependencies: "@state-designer/core" latest -"@stitches/react@^1.2.5", "@stitches/react@^1.2.6": +"@stitches/react@^1.2.6": version "1.2.6" resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.6.tgz#61f2a3d1110334ecd33bcb7463650127d42470cb" integrity sha512-gRVITYj8W4jJmoiVxWDv72yCvd12VvtUUAnTzs07EqmtvGCVgKZu3Dx0x5KVCcb0b6tfgvvNH2L84YrzdM4Mag== @@ -2938,6 +2987,14 @@ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.11.tgz#56588b17ae8f50c53983a524fc3cc47437969d64" integrity sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA== +"@types/hoist-non-react-statics@^3.3.1": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f" + integrity sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA== + dependencies: + "@types/react" "*" + hoist-non-react-statics "^3.3.0" + "@types/is-ci@^3.0.0": version "3.0.0" resolved "https://registry.yarnpkg.com/@types/is-ci/-/is-ci-3.0.0.tgz#7e8910af6857601315592436f030aaa3ed9783c3" @@ -3052,13 +3109,20 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== -"@types/react-dom@^17.0.11", "@types/react-dom@^17.0.9": +"@types/react-dom@^17.0.11": version "17.0.11" resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.11.tgz#e1eadc3c5e86bdb5f7684e00274ae228e7bcc466" integrity sha512-f96K3k+24RaLGVu/Y2Ng3e1EbZ8/cVJvypZWd7cy0ofCBaf2lcM46xNhycMZ2xGwbBjRql7hOlZ+e2WlJ5MH3Q== dependencies: "@types/react" "*" +"@types/react-dom@^18.0.5": + version "18.0.5" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.0.5.tgz#330b2d472c22f796e5531446939eacef8378444a" + integrity sha512-OWPWTUrY/NIrjsAPkAk1wW9LZeIjSvkXRhclsFO8CZcZGCOg2G0YZy4ft+rOyYxy8B7ui5iZzi9OkDebZ7/QSA== + dependencies: + "@types/react" "*" + "@types/react-router-dom@^5.1.8", "@types/react-router-dom@^5.3.3": version "5.3.3" resolved "https://registry.yarnpkg.com/@types/react-router-dom/-/react-router-dom-5.3.3.tgz#e9d6b4a66fcdbd651a5f106c2656a30088cc1e83" @@ -3076,7 +3140,7 @@ "@types/history" "^4.7.11" "@types/react" "*" -"@types/react@*", "@types/react@^17.0.19", "@types/react@^17.0.38": +"@types/react@*", "@types/react@^17.0.38": version "17.0.39" resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== @@ -3085,6 +3149,24 @@ "@types/scheduler" "*" csstype "^3.0.2" +"@types/react@16 || 17 || 18": + version "18.0.10" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.10.tgz#5692944d4a45e204fb7a981eb1388afe919cf4d0" + integrity sha512-dIugadZuIPrRzvIEevIu7A1smqOAjkSMv8qOfwPt9Ve6i6JT/FQcCHyk2qIAxwsQNKZt5/oGR0T4z9h2dXRAkg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + +"@types/react@^18.0.12": + version "18.0.12" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.0.12.tgz#cdaa209d0a542b3fcf69cf31a03976ec4cdd8840" + integrity sha512-duF1OTASSBQtcigUvhuiTB1Ya3OvSy+xORCiEf20H0P0lzx+/KeVsA99U5UjLXSbyo1DRJDlLKqTeM1ngosqtg== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/resolve@1.17.1": version "1.17.1" resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" @@ -3820,13 +3902,13 @@ babel-jest@^27.5.1: graceful-fs "^4.2.9" slash "^3.0.0" -babel-loader@^8.2.3: - version "8.2.3" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.3.tgz#8986b40f1a64cacfcb4b8429320085ef68b1342d" - integrity sha512-n4Zeta8NC3QAsuyiizu0GkmRcQ6clkV9WFUnUf1iXP//IeSKbWjofW3UHyZVwlOB4y039YQKefawyTn64Zwbuw== +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 "^1.4.0" + loader-utils "^2.0.0" make-dir "^3.1.0" schema-utils "^2.6.5" @@ -4193,11 +4275,16 @@ camelcase@^6.0.0, camelcase@^6.2.0, camelcase@^6.3.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001283, caniuse-lite@^1.0.30001286: +caniuse-lite@^1.0.30001286: version "1.0.30001312" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001312.tgz#e11eba4b87e24d22697dae05455d5aea28550d5f" integrity sha512-Wiz1Psk2MEK0pX3rUzWaunLTZzqS2JYZFzNKqAiJGiuxIjRPLgV6+VDPOg6lQOUxmDwhTlh198JsTTi8Hzw6aQ== +caniuse-lite@^1.0.30001332: + version "1.0.30001346" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001346.tgz#e895551b46b9cc9cc9de852facd42f04839a8fbe" + integrity sha512-q6ibZUO2t88QCIPayP/euuDREq+aMAxFE5S70PkrLh0iTDj/zEhgvJRKC2+CvXY6EWc6oQwUR48lL5vCW6jiXQ== + chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -6610,7 +6697,7 @@ history@^5.2.0: dependencies: "@babel/runtime" "^7.7.6" -hoist-non-react-statics@^3.3.2: +hoist-non-react-statics@^3.3.0, hoist-non-react-statics@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== @@ -6876,6 +6963,16 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +intl-messageformat@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.0.1.tgz#dae7ae81a477e92ea8691dd73c60d5eb5003f866" + integrity sha512-oZWDsNbauuWmPd98+zLEfNojuJkBdVpEWIcWQVCTxSJrhag2/czZnwKBsYa8NcVf4t0fWo0k77v+CBCudKEcjw== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/fast-memoize" "1.2.3" + "@formatjs/icu-messageformat-parser" "2.1.2" + tslib "2.4.0" + invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -8021,14 +8118,14 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== -loader-utils@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" - integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" - json5 "^1.0.1" + json5 "^2.1.2" localforage@^1.8.1: version "1.10.0" @@ -8527,45 +8624,45 @@ next-auth@*, next-auth@^4.0.5: preact-render-to-string "^5.1.19" uuid "^8.3.2" -next-pwa@^5.4.4: - version "5.4.4" - resolved "https://registry.yarnpkg.com/next-pwa/-/next-pwa-5.4.4.tgz#00f1678091f05662e54c25106664e79c26c337ef" - integrity sha512-Wo7DctXO9ZZzMCuRK/q2U3x5k49LBRv7p31woJIUfiR6tJChSMoojHUvvgeCY72gSo4mtovS5KRm6iHIs/kxeg== +next-pwa@^5.5.4: + version "5.5.4" + resolved "https://registry.yarnpkg.com/next-pwa/-/next-pwa-5.5.4.tgz#5a96bb4762c649ed875e5d98a1183132c0199f49" + integrity sha512-EgB2MQWGR8oZDzY6US+/D0LOCUhPZYCgeqRVBYDxQWNi0N6XfQOoZPw2COIrg/eMt/rB0M+/mquhAQACs5v4Ag== dependencies: - babel-loader "^8.2.3" + babel-loader "^8.2.5" clean-webpack-plugin "^4.0.0" globby "^11.0.4" - terser-webpack-plugin "^5.2.5" - workbox-webpack-plugin "^6.4.2" - workbox-window "^6.4.2" + terser-webpack-plugin "^5.3.3" + workbox-webpack-plugin "^6.5.3" + workbox-window "^6.5.3" next-themes@^0.0.15: version "0.0.15" resolved "https://registry.yarnpkg.com/next-themes/-/next-themes-0.0.15.tgz#ab0cee69cd763b77d41211f631e108beab39bf7d" integrity sha512-LTmtqYi03c4gMTJmWwVK9XkHL7h0/+XrtR970Ujvtu3s0kZNeJN24aJsi4rkZOI8i19+qq6f8j+8Duwy5jqcrQ== -next@^12.0.7: - version "12.1.0" - resolved "https://registry.yarnpkg.com/next/-/next-12.1.0.tgz#c33d753b644be92fc58e06e5a214f143da61dd5d" - integrity sha512-s885kWvnIlxsUFHq9UGyIyLiuD0G3BUC/xrH0CEnH5lHEWkwQcHOORgbDF0hbrW9vr/7am4ETfX4A7M6DjrE7Q== +next@^12.1.6: + version "12.1.6" + resolved "https://registry.yarnpkg.com/next/-/next-12.1.6.tgz#eb205e64af1998651f96f9df44556d47d8bbc533" + integrity sha512-cebwKxL3/DhNKfg9tPZDQmbRKjueqykHHbgaoG4VBRH3AHQJ2HO0dbKFiS1hPhe1/qgc2d/hFeadsbPicmLD+A== dependencies: - "@next/env" "12.1.0" - caniuse-lite "^1.0.30001283" + "@next/env" "12.1.6" + caniuse-lite "^1.0.30001332" postcss "8.4.5" - styled-jsx "5.0.0" - use-subscription "1.5.1" + styled-jsx "5.0.2" optionalDependencies: - "@next/swc-android-arm64" "12.1.0" - "@next/swc-darwin-arm64" "12.1.0" - "@next/swc-darwin-x64" "12.1.0" - "@next/swc-linux-arm-gnueabihf" "12.1.0" - "@next/swc-linux-arm64-gnu" "12.1.0" - "@next/swc-linux-arm64-musl" "12.1.0" - "@next/swc-linux-x64-gnu" "12.1.0" - "@next/swc-linux-x64-musl" "12.1.0" - "@next/swc-win32-arm64-msvc" "12.1.0" - "@next/swc-win32-ia32-msvc" "12.1.0" - "@next/swc-win32-x64-msvc" "12.1.0" + "@next/swc-android-arm-eabi" "12.1.6" + "@next/swc-android-arm64" "12.1.6" + "@next/swc-darwin-arm64" "12.1.6" + "@next/swc-darwin-x64" "12.1.6" + "@next/swc-linux-arm-gnueabihf" "12.1.6" + "@next/swc-linux-arm64-gnu" "12.1.6" + "@next/swc-linux-arm64-musl" "12.1.6" + "@next/swc-linux-x64-gnu" "12.1.6" + "@next/swc-linux-x64-musl" "12.1.6" + "@next/swc-win32-arm64-msvc" "12.1.6" + "@next/swc-win32-ia32-msvc" "12.1.6" + "@next/swc-win32-x64-msvc" "12.1.6" node-abi@^3.3.0: version "3.8.0" @@ -9381,7 +9478,7 @@ rc@^1.2.7, rc@^1.2.8: minimist "^1.2.0" strip-json-comments "~2.0.1" -"react-dom@^16.8 || ^17.0", react-dom@^17.0, react-dom@^17.0.2: +react-dom@^17.0: version "17.0.2" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== @@ -9390,6 +9487,14 @@ rc@^1.2.7, rc@^1.2.8: object-assign "^4.1.1" scheduler "^0.20.2" +react-dom@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.1.0.tgz#7f6dd84b706408adde05e1df575b3a024d7e8a2f" + integrity sha512-fU1Txz7Budmvamp7bshe4Zi32d0ll7ect+ccxNu9FlObT605GOEB8BfO4tmRJ39R5Zj831VCpvQ05QPBW5yb+w== + dependencies: + loose-envify "^1.1.0" + scheduler "^0.22.0" + react-error-boundary@^3.1.4: version "3.1.4" resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" @@ -9404,11 +9509,6 @@ react-feather@^2.0.9: dependencies: prop-types "^15.7.2" -react-hotkey-hook@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-hotkey-hook/-/react-hotkey-hook-1.0.2.tgz#ca17a3f806092027eaaf41fd2f111afd9926e3ab" - integrity sha512-95GiOW8ORMqbBQ23+VHMF0giRmpiI8sFHPjbOR/e64zWI0QT+QO3Q/022c0HNBS/LrQsbGdjm64BNMah0WvlnA== - react-hotkeys-hook@^3.4.4: version "3.4.4" resolved "https://registry.yarnpkg.com/react-hotkeys-hook/-/react-hotkeys-hook-3.4.4.tgz#52ba5d8ef5e47cc2e776c70a9036d518e0993d51" @@ -9416,6 +9516,22 @@ react-hotkeys-hook@^3.4.4: dependencies: hotkeys-js "3.8.7" +react-intl@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.0.3.tgz#eb5857f2fd525c83255bf6c8339562a7fea9f970" + integrity sha512-c6wHOnYjOBTbqIt+6TVV2QwdKrqYiFP713tMsw/sJWYgzfaRTjsvGkcxOXhX3SoBrqbUhKTEzjdniuwpAN/qKA== + dependencies: + "@formatjs/ecma402-abstract" "1.11.6" + "@formatjs/icu-messageformat-parser" "2.1.2" + "@formatjs/intl" "2.2.5" + "@formatjs/intl-displaynames" "6.0.1" + "@formatjs/intl-listformat" "7.0.1" + "@types/hoist-non-react-statics" "^3.3.1" + "@types/react" "16 || 17 || 18" + hoist-non-react-statics "^3.3.2" + intl-messageformat "10.0.1" + tslib "2.4.0" + react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" @@ -9445,15 +9561,22 @@ react-remove-scroll@^2.4.0: use-callback-ref "^1.2.3" use-sidecar "^1.0.1" -react-router-dom@^6.2.1: - version "6.2.1" - resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.2.1.tgz#32ec81829152fbb8a7b045bf593a22eadf019bec" - integrity sha512-I6Zax+/TH/cZMDpj3/4Fl2eaNdcvoxxHoH1tYOREsQ22OKDYofGebrNm6CTPUcvLvZm63NL/vzCYdjf9CUhqmA== +react-router-dom@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router-dom/-/react-router-dom-6.3.0.tgz#a0216da813454e521905b5fa55e0e5176123f43d" + integrity sha512-uaJj7LKytRxZNQV8+RbzJWnJ8K2nPsOOEuX7aQstlMZKQT0164C+X2w6bnkqU3sjtLvpd5ojrezAyfZ1+0sStw== dependencies: history "^5.2.0" - react-router "6.2.1" + react-router "6.3.0" -react-router@6.2.1, react-router@^6.2.1: +react-router@6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.3.0.tgz#3970cc64b4cb4eae0c1ea5203a80334fdd175557" + integrity sha512-7Wh1DzVQ+tlFjkeo+ujvjSqSJmkt1+8JO+T5xklPlgrh70y7ogx75ODRW0ThWhY7S+6yEDks8TYrtQe/aoboBQ== + dependencies: + history "^5.2.0" + +react-router@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/react-router/-/react-router-6.2.1.tgz#be2a97a6006ce1d9123c28934e604faef51448a3" integrity sha512-2fG0udBtxou9lXtK97eJeET2ki5//UWfQSl1rlJ7quwe6jrktK9FCCc8dQb5QY6jAv3jua8bBQRhhDOM/kVRsg== @@ -9469,7 +9592,7 @@ react-style-singleton@^2.1.0: invariant "^2.2.4" tslib "^1.0.0" -react@>=16.8, react@^17.0, react@^17.0.2: +react@^17.0: version "17.0.2" resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== @@ -9477,6 +9600,13 @@ react@>=16.8, react@^17.0, react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +react@^18.1.0: + version "18.1.0" + resolved "https://registry.yarnpkg.com/react/-/react-18.1.0.tgz#6f8620382decb17fdc5cc223a115e2adbf104890" + integrity sha512-4oL8ivCz5ZEPyclFQXaNksK3adutVS8l2xzZU0cqEFrE9Sb7fC0EFK5uEk74wIreL1DERyjvsU915j1pcT2uEQ== + dependencies: + loose-envify "^1.1.0" + read-config-file@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/read-config-file/-/read-config-file-6.2.0.tgz#71536072330bcd62ba814f91458b12add9fc7ade" @@ -9913,6 +10043,13 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" +scheduler@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8" + integrity sha512-6QAm1BgQI88NPYymgGQLCZgvep4FyePDWFpXVK+zNSUgHwlqpJy8VEh8Et0KxTACS4VWwMousBElAZOH9nkkoQ== + dependencies: + loose-envify "^1.1.0" + schema-utils@^2.6.5: version "2.7.1" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" @@ -10163,11 +10300,6 @@ source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.2 buffer-from "^1.0.0" source-map "^0.6.0" -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - source-map@^0.5.0: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -10426,10 +10558,10 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -styled-jsx@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.0.tgz#816b4b92e07b1786c6b7111821750e0ba4d26e77" - integrity sha512-qUqsWoBquEdERe10EW8vLp3jT25s/ssG1/qX5gZ4wu15OZpmSMFI2v+fWlRhLfykA5rFtlJ1ME8A8pm/peV4WA== +styled-jsx@5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-5.0.2.tgz#ff230fd593b737e9e68b630a694d460425478729" + integrity sha512-LqPQrbBh3egD57NBcHET4qcgshPks+yblyhPlH2GY8oaDgKs8SK4C3dBh3oSJjgzJ3G5t1SYEZGHkP+QEpX9EQ== stylus-lookup@^3.0.1: version "3.0.2" @@ -10552,7 +10684,7 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: +terser-webpack-plugin@^5.1.3: version "5.3.1" resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz#0320dcc270ad5372c1e8993fabbd927929773e54" integrity sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g== @@ -10563,6 +10695,17 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: source-map "^0.6.1" terser "^5.7.2" +terser-webpack-plugin@^5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90" + integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ== + dependencies: + "@jridgewell/trace-mapping" "^0.3.7" + jest-worker "^27.4.5" + schema-utils "^3.1.1" + serialize-javascript "^6.0.0" + terser "^5.7.2" + terser@^5.0.0, terser@^5.7.2: version "5.10.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.10.0.tgz#b86390809c0389105eb0a0b62397563096ddafcc" @@ -10718,12 +10861,17 @@ tsconfig-replace-paths@^0.0.11: globby "^10.0.1" json5 "^2.2.0" +tslib@2.4.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== + tslib@^1.0.0, tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.2.0, tslib@^2.3.1: +tslib@^2.1.0, tslib@^2.2.0: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -10923,25 +11071,15 @@ typedoc@^0.22.15: minimatch "^5.0.1" shiki "^0.10.1" -typescript@4.5.5, typescript@^4.5.2: - version "4.5.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.5.tgz#d8c953832d28924a9e3d37c73d729c846c5896f3" - integrity sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA== - typescript@^3.9.7: version "3.9.10" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.10.tgz#70f3910ac7a51ed6bef79da7800690b19bf778b8" integrity sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q== -typescript@^4.4.3: - version "4.6.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.2.tgz#fe12d2727b708f4eef40f51598b3398baa9611d4" - integrity sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg== - -typescript@^4.6.4: - version "4.6.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" - integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== +typescript@^4.7.3: + version "4.7.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" + integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== typeson-registry@^1.0.0-alpha.20: version "1.0.0-alpha.39" @@ -11092,13 +11230,6 @@ use-sidecar@^1.0.1: detect-node-es "^1.1.0" tslib "^1.9.3" -use-subscription@1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" - integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== - dependencies: - object-assign "^4.1.1" - utf8-byte-length@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" @@ -11440,25 +11571,25 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -workbox-background-sync@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.4.2.tgz#bb31b95928d376abcb9bde0de3a0cef9bae46cf7" - integrity sha512-P7c8uG5X2k+DMICH9xeSA9eUlCOjHHYoB42Rq+RtUpuwBxUOflAXR1zdsMWj81LopE4gjKXlTw7BFd1BDAHo7g== +workbox-background-sync@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-background-sync/-/workbox-background-sync-6.5.3.tgz#7c66c1836aeca6f3762dc48d17a1852a33b3168c" + integrity sha512-0DD/V05FAcek6tWv9XYj2w5T/plxhDSpclIcAGjA/b7t/6PdaRkQ7ZgtAX6Q/L7kV7wZ8uYRJUoH11VjNipMZw== dependencies: idb "^6.1.4" - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-broadcast-update@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.4.2.tgz#5094c4767dfb590532ac03ee07e9e82b2ac206bc" - integrity sha512-qnBwQyE0+PWFFc/n4ISXINE49m44gbEreJUYt2ldGH3+CNrLmJ1egJOOyUqqu9R4Eb7QrXcmB34ClXG7S37LbA== +workbox-broadcast-update@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-broadcast-update/-/workbox-broadcast-update-6.5.3.tgz#fc2ad79cf507e22950cda9baf1e9a0ccc43f31bc" + integrity sha512-4AwCIA5DiDrYhlN+Miv/fp5T3/whNmSL+KqhTwRBTZIL6pvTgE4lVuRzAt1JltmqyMcQ3SEfCdfxczuI4kwFQg== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-build@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.4.2.tgz#47f9baa946c3491533cd5ccb1f194a7160e8a6e3" - integrity sha512-WMdYLhDIsuzViOTXDH+tJ1GijkFp5khSYolnxR/11zmfhNDtuo7jof72xPGFy+KRpsz6tug39RhivCj77qqO0w== +workbox-build@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-build/-/workbox-build-6.5.3.tgz#38e3f286d63d2745bff4d1478bb3a6ab5c8b1170" + integrity sha512-8JNHHS7u13nhwIYCDea9MNXBNPHXCs5KDZPKI/ZNTr3f4sMGoD7hgFGecbyjX1gw4z6e9bMpMsOEJNyH5htA/w== dependencies: "@apideck/better-ajv-errors" "^0.3.1" "@babel/core" "^7.11.1" @@ -11478,138 +11609,136 @@ workbox-build@6.4.2: rollup "^2.43.1" rollup-plugin-terser "^7.0.0" source-map "^0.8.0-beta.0" - source-map-url "^0.4.0" stringify-object "^3.3.0" strip-comments "^2.0.1" tempy "^0.6.0" upath "^1.2.0" - workbox-background-sync "6.4.2" - workbox-broadcast-update "6.4.2" - workbox-cacheable-response "6.4.2" - workbox-core "6.4.2" - workbox-expiration "6.4.2" - workbox-google-analytics "6.4.2" - workbox-navigation-preload "6.4.2" - workbox-precaching "6.4.2" - workbox-range-requests "6.4.2" - workbox-recipes "6.4.2" - workbox-routing "6.4.2" - workbox-strategies "6.4.2" - workbox-streams "6.4.2" - workbox-sw "6.4.2" - workbox-window "6.4.2" + workbox-background-sync "6.5.3" + workbox-broadcast-update "6.5.3" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-google-analytics "6.5.3" + workbox-navigation-preload "6.5.3" + workbox-precaching "6.5.3" + workbox-range-requests "6.5.3" + workbox-recipes "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" + workbox-streams "6.5.3" + workbox-sw "6.5.3" + workbox-window "6.5.3" -workbox-cacheable-response@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.4.2.tgz#ebcabb3667019da232e986a9927af97871e37ccb" - integrity sha512-9FE1W/cKffk1AJzImxgEN0ceWpyz1tqNjZVtA3/LAvYL3AC5SbIkhc7ZCO82WmO9IjTfu8Vut2X/C7ViMSF7TA== +workbox-cacheable-response@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-cacheable-response/-/workbox-cacheable-response-6.5.3.tgz#b1f8c2bc599a7be8f7e3c262535629c558738e47" + integrity sha512-6JE/Zm05hNasHzzAGKDkqqgYtZZL2H06ic2GxuRLStA4S/rHUfm2mnLFFXuHAaGR1XuuYyVCEey1M6H3PdZ7SQ== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-core@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.4.2.tgz#f99fd36a211cc01dce90aa7d5f2c255e8fe9d6bc" - integrity sha512-1U6cdEYPcajRXiboSlpJx6U7TvhIKbxRRerfepAJu2hniKwJ3DHILjpU/zx3yvzSBCWcNJDoFalf7Vgd7ey/rw== +workbox-core@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-core/-/workbox-core-6.5.3.tgz#bca038a9ef0d7a634a6db2a60f45313ed22ac249" + integrity sha512-Bb9ey5n/M9x+l3fBTlLpHt9ASTzgSGj6vxni7pY72ilB/Pb3XtN+cZ9yueboVhD5+9cNQrC9n/E1fSrqWsUz7Q== -workbox-expiration@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.4.2.tgz#61613459fd6ddd1362730767618d444c6b9c9139" - integrity sha512-0hbpBj0tDnW+DZOUmwZqntB/8xrXOgO34i7s00Si/VlFJvvpRKg1leXdHHU8ykoSBd6+F2KDcMP3swoCi5guLw== +workbox-expiration@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-expiration/-/workbox-expiration-6.5.3.tgz#efc0811f371a2ede1052b9de1c4f072b71d50503" + integrity sha512-jzYopYR1zD04ZMdlbn/R2Ik6ixiXbi15c9iX5H8CTi6RPDz7uhvMLZPKEndZTpfgmUk8mdmT9Vx/AhbuCl5Sqw== dependencies: idb "^6.1.4" - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-google-analytics@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.4.2.tgz#eea7d511b3078665a726dc2ee9f11c6b7a897530" - integrity sha512-u+gxs3jXovPb1oul4CTBOb+T9fS1oZG+ZE6AzS7l40vnyfJV79DaLBvlpEZfXGv3CjMdV1sT/ltdOrKzo7HcGw== +workbox-google-analytics@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-google-analytics/-/workbox-google-analytics-6.5.3.tgz#cc8c3a61f449131660a4ed2f5362d9a3599b18fe" + integrity sha512-3GLCHotz5umoRSb4aNQeTbILETcrTVEozSfLhHSBaegHs1PnqCmN0zbIy2TjTpph2AGXiNwDrWGF0AN+UgDNTw== dependencies: - workbox-background-sync "6.4.2" - workbox-core "6.4.2" - workbox-routing "6.4.2" - workbox-strategies "6.4.2" + workbox-background-sync "6.5.3" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-navigation-preload@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.4.2.tgz#35cd4ba416a530796af135410ca07db5bee11668" - integrity sha512-viyejlCtlKsbJCBHwhSBbWc57MwPXvUrc8P7d+87AxBGPU+JuWkT6nvBANgVgFz6FUhCvRC8aYt+B1helo166g== +workbox-navigation-preload@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-navigation-preload/-/workbox-navigation-preload-6.5.3.tgz#81b74f598b11aa07e2cf1c21af7a826a4f0f70b3" + integrity sha512-bK1gDFTc5iu6lH3UQ07QVo+0ovErhRNGvJJO/1ngknT0UQ702nmOUhoN9qE5mhuQSrnK+cqu7O7xeaJ+Rd9Tmg== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-precaching@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.4.2.tgz#8d87c05d54f32ac140f549faebf3b4d42d63621e" - integrity sha512-CZ6uwFN/2wb4noHVlALL7UqPFbLfez/9S2GAzGAb0Sk876ul9ukRKPJJ6gtsxfE2HSTwqwuyNVa6xWyeyJ1XSA== +workbox-precaching@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-precaching/-/workbox-precaching-6.5.3.tgz#c870312b2ef901d790ab9e48da084e776c62af47" + integrity sha512-sjNfgNLSsRX5zcc63H/ar/hCf+T19fRtTqvWh795gdpghWb5xsfEkecXEvZ8biEi1QD7X/ljtHphdaPvXDygMQ== dependencies: - workbox-core "6.4.2" - workbox-routing "6.4.2" - workbox-strategies "6.4.2" + workbox-core "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-range-requests@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.4.2.tgz#050f0dfbb61cd1231e609ed91298b6c2442ae41b" - integrity sha512-SowF3z69hr3Po/w7+xarWfzxJX/3Fo0uSG72Zg4g5FWWnHpq2zPvgbWerBZIa81zpJVUdYpMa3akJJsv+LaO1Q== +workbox-range-requests@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-range-requests/-/workbox-range-requests-6.5.3.tgz#e624ac82ff266a5e4f236d055797def07949d941" + integrity sha512-pGCP80Bpn/0Q0MQsfETSfmtXsQcu3M2QCJwSFuJ6cDp8s2XmbUXkzbuQhCUzKR86ZH2Vex/VUjb2UaZBGamijA== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-recipes@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.4.2.tgz#68de41fa3a77b444b0f93c9c01a76ba1d41fd2bf" - integrity sha512-/oVxlZFpAjFVbY+3PoGEXe8qyvtmqMrTdWhbOfbwokNFtUZ/JCtanDKgwDv9x3AebqGAoJRvQNSru0F4nG+gWA== +workbox-recipes@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-recipes/-/workbox-recipes-6.5.3.tgz#15beac9d8ae7a3a1c100218094a824b4dd3fd59a" + integrity sha512-IcgiKYmbGiDvvf3PMSEtmwqxwfQ5zwI7OZPio3GWu4PfehA8jI8JHI3KZj+PCfRiUPZhjQHJ3v1HbNs+SiSkig== dependencies: - workbox-cacheable-response "6.4.2" - workbox-core "6.4.2" - workbox-expiration "6.4.2" - workbox-precaching "6.4.2" - workbox-routing "6.4.2" - workbox-strategies "6.4.2" + workbox-cacheable-response "6.5.3" + workbox-core "6.5.3" + workbox-expiration "6.5.3" + workbox-precaching "6.5.3" + workbox-routing "6.5.3" + workbox-strategies "6.5.3" -workbox-routing@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.4.2.tgz#65b1c61e8ca79bb9152f93263c26b1f248d09dcc" - integrity sha512-0ss/n9PAcHjTy4Ad7l2puuod4WtsnRYu9BrmHcu6Dk4PgWeJo1t5VnGufPxNtcuyPGQ3OdnMdlmhMJ57sSrrSw== +workbox-routing@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-routing/-/workbox-routing-6.5.3.tgz#a0a699d8cc90b5692bd3df24679acbbda3913777" + integrity sha512-DFjxcuRAJjjt4T34RbMm3MCn+xnd36UT/2RfPRfa8VWJGItGJIn7tG+GwVTdHmvE54i/QmVTJepyAGWtoLPTmg== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-strategies@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.4.2.tgz#50c02bf2d116918e1a8052df5f2c1e4103c62d5d" - integrity sha512-YXh9E9dZGEO1EiPC3jPe2CbztO5WT8Ruj8wiYZM56XqEJp5YlGTtqRjghV+JovWOqkWdR+amJpV31KPWQUvn1Q== +workbox-strategies@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-strategies/-/workbox-strategies-6.5.3.tgz#4bea9a48fee16cf43766e0d8138296773c8a9783" + integrity sha512-MgmGRrDVXs7rtSCcetZgkSZyMpRGw8HqL2aguszOc3nUmzGZsT238z/NN9ZouCxSzDu3PQ3ZSKmovAacaIhu1w== dependencies: - workbox-core "6.4.2" + workbox-core "6.5.3" -workbox-streams@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.4.2.tgz#3bc615cccebfd62dedf28315afb7d9ee177912a5" - integrity sha512-ROEGlZHGVEgpa5bOZefiJEVsi5PsFjJG9Xd+wnDbApsCO9xq9rYFopF+IRq9tChyYzhBnyk2hJxbQVWphz3sog== +workbox-streams@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-streams/-/workbox-streams-6.5.3.tgz#b6860290031caa7d0e46ad7142315c94359c780b" + integrity sha512-vN4Qi8o+b7zj1FDVNZ+PlmAcy1sBoV7SC956uhqYvZ9Sg1fViSbOpydULOssVJ4tOyKRifH/eoi6h99d+sJ33w== dependencies: - workbox-core "6.4.2" - workbox-routing "6.4.2" + workbox-core "6.5.3" + workbox-routing "6.5.3" -workbox-sw@6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.4.2.tgz#9a6db5f74580915dc2f0dbd47d2ffe057c94a795" - integrity sha512-A2qdu9TLktfIM5NE/8+yYwfWu+JgDaCkbo5ikrky2c7r9v2X6DcJ+zSLphNHHLwM/0eVk5XVf1mC5HGhYpMhhg== +workbox-sw@6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-sw/-/workbox-sw-6.5.3.tgz#cd2f0c086f4496acd25774ed02c48504189bebdd" + integrity sha512-BQBzm092w+NqdIEF2yhl32dERt9j9MDGUTa2Eaa+o3YKL4Qqw55W9yQC6f44FdAHdAJrJvp0t+HVrfh8AiGj8A== -workbox-webpack-plugin@^6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.4.2.tgz#aad9f11b028786d5b781420e68f4e8f570ea9936" - integrity sha512-CiEwM6kaJRkx1cP5xHksn13abTzUqMHiMMlp5Eh/v4wRcedgDTyv6Uo8+Hg9MurRbHDosO5suaPyF9uwVr4/CQ== +workbox-webpack-plugin@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-webpack-plugin/-/workbox-webpack-plugin-6.5.3.tgz#c37bb323be4952311565c07db51054fe59c87d73" + integrity sha512-Es8Xr02Gi6Kc3zaUwR691ZLy61hz3vhhs5GztcklQ7kl5k2qAusPh0s6LF3wEtlpfs9ZDErnmy5SErwoll7jBA== dependencies: fast-json-stable-stringify "^2.1.0" pretty-bytes "^5.4.1" - source-map-url "^0.4.0" upath "^1.2.0" webpack-sources "^1.4.3" - workbox-build "6.4.2" + workbox-build "6.5.3" -workbox-window@6.4.2, workbox-window@^6.4.2: - version "6.4.2" - resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.4.2.tgz#5319a3e343fa1e4bd15a1f53a07b58999d064c8a" - integrity sha512-KVyRKmrJg7iB+uym/B/CnEUEFG9CvnTU1Bq5xpXHbtgD9l+ShDekSl1wYpqw/O0JfeeQVOFb8CiNfvnwWwqnWQ== +workbox-window@6.5.3, workbox-window@^6.5.3: + version "6.5.3" + resolved "https://registry.yarnpkg.com/workbox-window/-/workbox-window-6.5.3.tgz#4ade70056cb73477ef1cd8fea7cfd0ecbd825c7f" + integrity sha512-GnJbx1kcKXDtoJBVZs/P7ddP0Yt52NNy4nocjBpYPiRhMqTpJCNrSL+fGHZ/i/oP6p/vhE8II0sA6AZGKGnssw== dependencies: "@types/trusted-types" "^2.0.2" - workbox-core "6.4.2" + workbox-core "6.5.3" workerpool@6.2.0: version "6.2.0"