From 88fbdacaea0ae8a48b12fec60941fc405aabe463 Mon Sep 17 00:00:00 2001 From: Steve Ruiz Date: Thu, 7 Jul 2022 11:59:47 +0100 Subject: [PATCH] 1.19.0 (#789) * Edit Farsi translations (#788) * Add a Ukrainian translation (#786) * Add a Ukrainian translation * Clarify some strings in the Ukrainian translation * feat: change dock position (#774) * feat: change dock position * fix grid row and column * add top position * fix responsive for the top position * change content side * fix overflowing menu * [improvement] theme on body (#790) * Update Tldraw.tsx * Add theme on body, adjust dark page options dialog * fix test * Preparing for global integration (#775) * Update translations.ts * Create en.json * Make main translation default * Remove unused locale property of translation Co-authored-by: Steve Ruiz * Fix language menu * Update ar.json (#793) * feature/add Hebrew translations (#792) * hebrew translations * pr fixes Co-authored-by: Steve Ruiz * fix toolspanel item position (#791) * fix toolspanel item position * add translation Co-authored-by: Steve Ruiz * Add remote caching * Adds link to translation guide (#794) Co-authored-by: Baahar Ebrahimi <108254874+Baahaarmast@users.noreply.github.com> Co-authored-by: walking-octopus <46994949+walking-octopus@users.noreply.github.com> Co-authored-by: Judicael <46365844+judicaelandria@users.noreply.github.com> Co-authored-by: Ali Alhaidary <75235623+ali-alhaidary@users.noreply.github.com> Co-authored-by: gadi246 --- .turbo/config.json | 2 +- apps/new-tab-extension/tsconfig.tsbuildinfo | 2 +- package.json | 2 +- packages/core/package.json | 4 +- .../src/components/Renderer/Renderer.test.tsx | 13 +-- packages/tldraw/src/Tldraw.tsx | 14 ++- .../Primitives/DropdownMenu/DMContent.tsx | 11 ++- .../Primitives/DropdownMenu/DMSubMenu.tsx | 4 +- .../Primitives/MenuContent/MenuContent.ts | 12 +++ .../Primitives/RowButton/RowButton.tsx | 3 +- .../Primitives/TextField/TextField.tsx | 2 + .../components/ToolsPanel/ActionButton.tsx | 10 ++- .../components/ToolsPanel/BackToContent.tsx | 28 +++++- .../components/ToolsPanel/PrimaryTools.tsx | 6 +- .../src/components/ToolsPanel/ShapesMenu.tsx | 13 +-- .../src/components/ToolsPanel/ToolsPanel.tsx | 70 +++++++++++++-- .../TopPanel/LanguageMenu/LanguageMenu.tsx | 38 +++++--- .../PageOptionsDialog/PageOptionsDialog.tsx | 2 +- .../PreferencesMenu/PreferencesMenu.tsx | 30 ++++++- packages/tldraw/src/hooks/index.ts | 1 + packages/tldraw/src/hooks/useMediaQuery.ts | 19 ++++ packages/tldraw/src/hooks/useTranslation.ts | 8 +- packages/tldraw/src/state/TldrawApp.ts | 1 + .../__snapshots__/TldrawApp.spec.ts.snap | 3 + packages/tldraw/src/translations/ar.json | 9 +- packages/tldraw/src/translations/en.json | 1 + packages/tldraw/src/translations/fa.json | 2 +- packages/tldraw/src/translations/fr.json | 9 +- packages/tldraw/src/translations/he.json | 90 +++++++++++++++++++ packages/tldraw/src/translations/it.json | 9 +- packages/tldraw/src/translations/main.json | 9 +- .../tldraw/src/translations/translations.ts | 68 +++++++------- packages/tldraw/src/translations/uk.json | 90 +++++++++++++++++++ packages/tldraw/src/types.ts | 3 + setupTests.ts | 14 +++ 35 files changed, 505 insertions(+), 97 deletions(-) create mode 100644 packages/tldraw/src/hooks/useMediaQuery.ts create mode 100644 packages/tldraw/src/translations/en.json create mode 100644 packages/tldraw/src/translations/he.json create mode 100644 packages/tldraw/src/translations/uk.json diff --git a/.turbo/config.json b/.turbo/config.json index 9e26dfeeb..3e1714e21 100644 --- a/.turbo/config.json +++ b/.turbo/config.json @@ -1 +1 @@ -{} \ No newline at end of file +{"teamId":"team_MjXkk3MAaGtBFaHcssVUiMgd","apiUrl":"https://api.vercel.com"} \ No newline at end of file diff --git a/apps/new-tab-extension/tsconfig.tsbuildinfo b/apps/new-tab-extension/tsconfig.tsbuildinfo index 4e47f3ee8..a89efda3e 100644 --- a/apps/new-tab-extension/tsconfig.tsbuildinfo +++ b/apps/new-tab-extension/tsconfig.tsbuildinfo @@ -1 +1 @@ -{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","./node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/@types/react/index.d.ts","../../packages/core/dist/types.d.ts","../../packages/core/dist/inputs.d.ts","../../packages/core/dist/tlshapeutil/tlshapeutil.d.ts","../../packages/core/dist/tlshapeutil/index.d.ts","../../packages/core/dist/components/renderer/renderer.d.ts","../../packages/core/dist/components/renderer/index.d.ts","../../packages/core/dist/components/svgcontainer/svgcontainer.d.ts","../../packages/core/dist/components/svgcontainer/index.d.ts","../../packages/core/dist/components/htmlcontainer/htmlcontainer.d.ts","../../packages/core/dist/components/htmlcontainer/index.d.ts","../../packages/core/dist/components/index.d.ts","../../packages/core/dist/utils/polyfills.d.ts","../../packages/core/dist/utils/utils.d.ts","../../packages/core/dist/utils/index.d.ts","../../packages/core/dist/index.d.ts","../../packages/tldraw/dist/translations/translations.d.ts","../../packages/tldraw/dist/translations/index.d.ts","../../packages/tldraw/dist/types.d.ts","../../packages/tldraw/dist/state/data/migrate.d.ts","../../packages/tldraw/dist/state/data/filesystem.d.ts","../../packages/tldraw/dist/state/data/index.d.ts","../../packages/tldraw/dist/state/shapes/tdshapeutil.d.ts","../../packages/tldraw/dist/state/tldr.d.ts","../../packages/tldraw/dist/state/sessions/basesession.d.ts","../../packages/tldraw/dist/state/sessions/arrowsession/arrowsession.d.ts","../../packages/tldraw/dist/state/sessions/arrowsession/index.d.ts","../../packages/tldraw/dist/state/sessions/brushsession/brushsession.d.ts","../../packages/tldraw/dist/state/sessions/brushsession/index.d.ts","../../packages/tldraw/dist/state/sessions/drawsession/drawsession.d.ts","../../packages/tldraw/dist/state/sessions/drawsession/index.d.ts","../../packages/tldraw/dist/state/sessions/handlesession/handlesession.d.ts","../../packages/tldraw/dist/state/sessions/handlesession/index.d.ts","../../packages/tldraw/dist/state/sessions/rotatesession/rotatesession.d.ts","../../packages/tldraw/dist/state/sessions/rotatesession/index.d.ts","../../packages/tldraw/dist/state/sessions/transformsession/transformsession.d.ts","../../packages/tldraw/dist/state/sessions/transformsession/index.d.ts","../../packages/tldraw/dist/state/sessions/transformsinglesession/transformsinglesession.d.ts","../../packages/tldraw/dist/state/sessions/transformsinglesession/index.d.ts","../../packages/tldraw/dist/state/sessions/translatesession/translatesession.d.ts","../../packages/tldraw/dist/state/sessions/translatesession/index.d.ts","../../packages/tldraw/dist/state/sessions/erasesession/erasesession.d.ts","../../packages/tldraw/dist/state/sessions/erasesession/index.d.ts","../../packages/tldraw/dist/state/sessions/gridsession/gridsession.d.ts","../../packages/tldraw/dist/state/sessions/gridsession/index.d.ts","../../packages/tldraw/dist/state/sessions/editsession/editsession.d.ts","../../packages/tldraw/dist/state/sessions/editsession/index.d.ts","../../packages/tldraw/dist/state/sessions/index.d.ts","../../packages/tldraw/dist/state/tools/basetool.d.ts","../../packages/tldraw/dist/state/tools/selecttool/selecttool.d.ts","../../packages/tldraw/dist/state/tools/selecttool/index.d.ts","../../packages/tldraw/dist/state/tools/erasetool/erasetool.d.ts","../../packages/tldraw/dist/state/tools/erasetool/index.d.ts","../../packages/tldraw/dist/state/tools/texttool/texttool.d.ts","../../packages/tldraw/dist/state/tools/texttool/index.d.ts","../../packages/tldraw/dist/state/tools/drawtool/drawtool.d.ts","../../packages/tldraw/dist/state/tools/drawtool/index.d.ts","../../packages/tldraw/dist/state/tools/ellipsetool/ellipsetool.d.ts","../../packages/tldraw/dist/state/tools/ellipsetool/index.d.ts","../../packages/tldraw/dist/state/tools/rectangletool/rectangletool.d.ts","../../packages/tldraw/dist/state/tools/rectangletool/index.d.ts","../../packages/tldraw/dist/state/tools/triangletool/triangletool.d.ts","../../packages/tldraw/dist/state/tools/triangletool/index.d.ts","../../packages/tldraw/dist/state/tools/linetool/linetool.d.ts","../../packages/tldraw/dist/state/tools/linetool/index.d.ts","../../packages/tldraw/dist/state/tools/arrowtool/arrowtool.d.ts","../../packages/tldraw/dist/state/tools/arrowtool/index.d.ts","../../packages/tldraw/dist/state/tools/stickytool/stickytool.d.ts","../../packages/tldraw/dist/state/tools/stickytool/index.d.ts","../../node_modules/zustand/vanilla.d.ts","../../node_modules/zustand/react.d.ts","../../node_modules/zustand/index.d.ts","../../packages/tldraw/dist/state/statemanager/statemanager.d.ts","../../packages/tldraw/dist/state/statemanager/index.d.ts","../../packages/tldraw/dist/state/tldrawapp.d.ts","../../packages/tldraw/dist/state/commands/alignshapes/alignshapes.d.ts","../../packages/tldraw/dist/state/commands/alignshapes/index.d.ts","../../packages/tldraw/dist/state/commands/changepage/changepage.d.ts","../../packages/tldraw/dist/state/commands/changepage/index.d.ts","../../packages/tldraw/dist/state/commands/createpage/createpage.d.ts","../../packages/tldraw/dist/state/commands/createpage/index.d.ts","../../packages/tldraw/dist/state/commands/createshapes/createshapes.d.ts","../../packages/tldraw/dist/state/commands/createshapes/index.d.ts","../../packages/tldraw/dist/state/commands/deletepage/deletepage.d.ts","../../packages/tldraw/dist/state/commands/deletepage/index.d.ts","../../packages/tldraw/dist/state/commands/deleteshapes/deleteshapes.d.ts","../../packages/tldraw/dist/state/commands/deleteshapes/index.d.ts","../../packages/tldraw/dist/state/commands/distributeshapes/distributeshapes.d.ts","../../packages/tldraw/dist/state/commands/distributeshapes/index.d.ts","../../packages/tldraw/dist/state/commands/duplicatepage/duplicatepage.d.ts","../../packages/tldraw/dist/state/commands/duplicatepage/index.d.ts","../../packages/tldraw/dist/state/commands/duplicateshapes/duplicateshapes.d.ts","../../packages/tldraw/dist/state/commands/duplicateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/flipshapes/flipshapes.d.ts","../../packages/tldraw/dist/state/commands/flipshapes/index.d.ts","../../packages/tldraw/dist/state/commands/groupshapes/groupshapes.d.ts","../../packages/tldraw/dist/state/commands/groupshapes/index.d.ts","../../packages/tldraw/dist/state/commands/moveshapestopage/moveshapestopage.d.ts","../../packages/tldraw/dist/state/commands/moveshapestopage/index.d.ts","../../packages/tldraw/dist/state/commands/movepage/movepage.d.ts","../../packages/tldraw/dist/state/commands/movepage/index.d.ts","../../packages/tldraw/dist/state/commands/reordershapes/reordershapes.d.ts","../../packages/tldraw/dist/state/commands/reordershapes/index.d.ts","../../packages/tldraw/dist/state/commands/renamepage/renamepage.d.ts","../../packages/tldraw/dist/state/commands/renamepage/index.d.ts","../../packages/tldraw/dist/state/commands/resetbounds/resetbounds.d.ts","../../packages/tldraw/dist/state/commands/resetbounds/index.d.ts","../../packages/tldraw/dist/state/commands/rotateshapes/rotateshapes.d.ts","../../packages/tldraw/dist/state/commands/rotateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/stretchshapes/stretchshapes.d.ts","../../packages/tldraw/dist/state/commands/stretchshapes/index.d.ts","../../packages/tldraw/dist/state/commands/styleshapes/styleshapes.d.ts","../../packages/tldraw/dist/state/commands/styleshapes/index.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesdecoration/toggleshapesdecoration.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesdecoration/index.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesprop/toggleshapesprop.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesprop/index.d.ts","../../packages/tldraw/dist/state/commands/translateshapes/translateshapes.d.ts","../../packages/tldraw/dist/state/commands/translateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/ungroupshapes/ungroupshapes.d.ts","../../packages/tldraw/dist/state/commands/ungroupshapes/index.d.ts","../../packages/tldraw/dist/state/commands/updateshapes/updateshapes.d.ts","../../packages/tldraw/dist/state/commands/updateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/setshapesprops/setshapesprops.d.ts","../../packages/tldraw/dist/state/commands/setshapesprops/index.d.ts","../../packages/tldraw/dist/state/commands/insertcontent/insertcontent.d.ts","../../packages/tldraw/dist/state/commands/insertcontent/index.d.ts","../../packages/tldraw/dist/state/commands/index.d.ts","../../packages/tldraw/dist/state/tools/index.d.ts","../../packages/tldraw/dist/state/internal.d.ts","../../packages/tldraw/dist/state/index.d.ts","../../packages/tldraw/dist/tldraw.d.ts","../../packages/tldraw/dist/state/shapes/shared/getboundsrectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/transformrectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/transformsinglerectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/textareautils.d.ts","../../packages/tldraw/dist/state/shapes/shared/shape-styles.d.ts","../../packages/tldraw/dist/state/shapes/shared/gettextalign.d.ts","../../packages/tldraw/dist/state/shapes/shared/textlabel.d.ts","../../packages/tldraw/dist/state/shapes/shared/gettextsvgelement.d.ts","../../packages/tldraw/dist/state/shapes/shared/index.d.ts","../../packages/tldraw/dist/state/shapes/rectangleutil/rectangleutil.d.ts","../../packages/tldraw/dist/state/shapes/rectangleutil/index.d.ts","../../packages/tldraw/dist/state/shapes/triangleutil/triangleutil.d.ts","../../packages/tldraw/dist/state/shapes/triangleutil/index.d.ts","../../packages/tldraw/dist/state/shapes/ellipseutil/ellipseutil.d.ts","../../packages/tldraw/dist/state/shapes/ellipseutil/index.d.ts","../../packages/tldraw/dist/state/shapes/arrowutil/arrowutil.d.ts","../../packages/tldraw/dist/state/shapes/arrowutil/index.d.ts","../../packages/tldraw/dist/state/shapes/grouputil/grouputil.d.ts","../../packages/tldraw/dist/state/shapes/grouputil/index.d.ts","../../packages/tldraw/dist/state/shapes/stickyutil/stickyutil.d.ts","../../packages/tldraw/dist/state/shapes/stickyutil/index.d.ts","../../packages/tldraw/dist/state/shapes/textutil/textutil.d.ts","../../packages/tldraw/dist/state/shapes/textutil/index.d.ts","../../packages/tldraw/dist/state/shapes/drawutil/drawutil.d.ts","../../packages/tldraw/dist/state/shapes/drawutil/index.d.ts","../../packages/tldraw/dist/state/shapes/imageutil/imageutil.d.ts","../../packages/tldraw/dist/state/shapes/imageutil/index.d.ts","../../packages/tldraw/dist/state/shapes/videoutil/videoutil.d.ts","../../packages/tldraw/dist/state/shapes/videoutil/index.d.ts","../../packages/tldraw/dist/state/shapes/index.d.ts","../../packages/tldraw/dist/hooks/usekeyboardshortcuts.d.ts","../../packages/tldraw/dist/hooks/usetldrawapp.d.ts","../../packages/tldraw/dist/hooks/usetheme.d.ts","../../packages/tldraw/dist/hooks/usestylesheet.d.ts","../../packages/tldraw/dist/hooks/usefilesystemhandlers.d.ts","../../packages/tldraw/dist/hooks/usefilesystem.d.ts","../../packages/tldraw/dist/hooks/usetranslation.d.ts","../../packages/tldraw/dist/hooks/index.d.ts","../../packages/tldraw/dist/index.d.ts","./src/hooks/useuploadassets.ts","./src/app.tsx","../../node_modules/@types/react-dom/node_modules/@types/react/global.d.ts","../../node_modules/@types/react-dom/node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/client.d.ts","./src/main.tsx","../../node_modules/vite/types/hmrpayload.d.ts","../../node_modules/vite/types/customevent.d.ts","../../node_modules/vite/types/hot.d.ts","../../node_modules/vite/types/importmeta.d.ts","../../node_modules/vite/client.d.ts","./src/vite-env.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","3eb679a56cab01203a1ba7edeade937f6a2a4c718513b2cd930b579807fa9359","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"1272277fe7daa738e555eb6cc45ded42cc2d0f76c07294142283145d49e96186","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"ff667ee99e5a28c3dc5063a3cfd4d3436699e3fb035d4451037da7f567da542a","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"6ea9ab679ea030cf46c16a711a316078e9e02619ebaf07a7fcd16964aba88f2d","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"14a84fbe4ec531dcbaf5d2594fd95df107258e60ae6c6a076404f13c3f66f28e",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"381899b8d1d4c1be716f18cb5242ba39f66f4b1e31d45af62a32a99f8edcb39d","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"0bca3a2542a695559b16feba84fffa590ec45eb64f2bbe0ee5e303f7bade01b1","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},{"version":"0bca3a2542a695559b16feba84fffa590ec45eb64f2bbe0ee5e303f7bade01b1","affectsGlobalScope":true},"6a3b79b76912bf61a299b104fc29399a9b6c67971398b6f4f7bff1e6e35a4906","e455cf96286de82fdab91967f10d6187241b96f336e22da8412229b96a899af8","75328a05f9f1e11348bce707eb54058c3c90b687bae290c4f4b93a8fe9f48a02","a3a2d4d8362ebda69a46994c61bf616a3f88448e9a30f7e7c64647ad68acfc0d","d149fdfd8fff6078fe11d7901fe92b9dfd7bd6b8600aba693a4109eef1161538","425fe67b957bbee725580629392bf5307c0aa0ffa35a9c50017648902e2f96c7","23419a0a1ecc5cdf2e3ce41a1a272b86a6f06d736d2a9f24dee4d22761eea353","4caf4fb1fe6fee68aad45129626646ba6fc0333de3ed90a1e3937cacc83e451a","f18c9c55da84dc27fefe0613b13c4f756e1088c13e258e5c205d834879a2eabc","9f3f7649066fe53f6cb0c1779a799e0171dbd6a3f22375347549f0488d6ee9c0","c9a124684e48834c2d88ead76a128bcdd8c7bab93e513fd8b7fd884bfbdb2c48","e0cf19f141c3b2632d9fc02d65a753864304fd6cc4391fcb532844356399519f","d460594a97c8f5f711697245491fb7a31dfc7e8421814530ff502e4781620d80","6f5e94c9041fed6cd102eb6cb19d56dcdb3c58e8e8026f1328eeef66b8e6423c","e37a930b6488a3619676890054ef1ba03ff0082a2c64738afd341d3572b8ca5b","7f47c2f8f280e79c1e35d76e2623801bb9060a096ffc4fe531d0380070294177","7efc14627fd0395e595372fbcb879cab1e887e6f68b357a76df695a88bd3482f","695976574cfc9146603db3156fa6c98e3ecc074791fa77ee81612ebf01650096","c93f531761d1edabcbbd7af0f736616bd13dd2bac3b3e525e2fc1a7b9a53a1e7","9ac79fc17fc69841a5125da47438b78382a54639c0c41156c49726cbcb36fa28","ef65d87cfc568222dcd128c652282c6c96a5ebefa76583dd7f11735fa81061ff","d5ac934d6228f658813475ffa95364d6861646372519c21896dcd5e77cd3a16e","176a9c55fff93c624ccb249f88e5adac4e26121bdbf1e6ce070831d60d7e3b5b","6afc838c83c5bf13c5ce07811ba985e196c566a6d9b6338e8afb7fad32d147d0","52c70c42b5d686c4dd7d2f04120829a2147e21231da5ce7bfac639054c7fa350","140c71536d754aff270082640b24d07c190c8bd46d304a50947ba7f2b18db2d5","1bac7874d6ca6294d2a8c9eb14debb6f4884e1c3f5753679f26c279b1ae1e383","32d400b51c78ed6f1d574e283149254fbc92de9032c27e6682f25e3d2fad2614","f00cc22aaad07680f71622f3ca8eba8fa5a6a31fca04fb20e87787d3ebd59d94","f0aacd6a7c812693b2b693a6bb7f154d793af6a80b4622fb1dd7f52d558ff1f0","dbf9edbca4983328b46621640eb29fb7af5e08cfdf840d473d65034964c44a00","657e499d6fd3652dd8b9bd0751a59d595635b3c9064c5aa52fa5187b39ada9a2","48c86e26457dec5a0c00146e9cb82610fda53de6c55736ea8f3df27834a9a5ad","0bde6d7d061cfb46733e04dbbf3fb0931181bbcc52ec36f57dad3d379b9d3b8d","d47830284676cd320766d129693ed584b1102a57d30516ed42aeb21ed7ce1a26","5dfeb6a6133a805fa6b9d3e5ba0a4cfce2acca6827f6a0733c5ff682faedf82d","0909e977ef5a6ff86d2a2da3fed5885fd11a43bc89cd4f371521131845b6ff80","b79c6bacf8bd7c03480d655ec17f3f926855acba1280be1ec765cf052203f922","d80d80a4df923e7c5d57d8e672937eb7d3ab56e09747bd5fe39eada9bb0ea5c2","1fed5aea2bb73f0c006b0fc32c31e613b75f5a6f226b6fd3964e7f7fd27e3324","1f07cb45a32129392f0aa05e51b4026887f6fd87e681c4a421dae164421b6d68","34d2475d8380255954aada2b3f6ccfcceb060091f07f3d6ebc173832c0a79642","884ddf843ca40c6ac988c92441721b46dd3cf460717588d8754b71806d3fcc43","554e4ac4d4b8f79286627b2467beb62dc3fae5da9cfed045b4a07071197cc16b","a6ad5291950c0c8da8e13aa6cfbd4ff3ec21b6cd6fba8e74aa71f89865c489e2","4ef848e76a4e0a6a0fb0f28f3d6bf827c7768892ee0c56c64c7b40ea2e1ac2ce","b85258b91257142915345c43b7f5e25ea7cac60a4050415448e2894bca54d01b","dcfce621647a0fb4601e0c49760a22a58a2e798e2eab108502aa1487c17184ce","40a6b9cfff78755817e3ff9cff7a09402993791ffc382ad53863200101b92311","eb542b5f306242e547f71d2635728aad879d8c4321b34b6b456983578d203272","10e9d919e12f4eeaef47eb47c9936ed1a59a7d4d0e4fe250321e01d1c5747714","57e8596d50a5f26daa5f6b33168b03c96f380c5a82e6d8aff613d5bcf5a4396e","19cafe08a9b8e43c50215e21e627c63e037530b772c9abe2d5f23b44990fdf58","275d845c826322d12b780a87762cab7825f3b27afda1c2593bf8df08d90e4efa","f9f5f2992d8bd322f600cb649c37842ee6338a0db1eba9fa3e53259f1a85c196","2a7fef3e934e9a288dd0709aefae9b04d64900b4d09fe6ef1aabea1ce77b854c","dd17f4f9aea5d57c4cf46c8cf5a523664790323c0da7effda78940bfb6864f6f","265acc837c00962b3fcacdd486acdfe60851c5d50f1aac25b65c1bfb8108d76b","b50df6b5483a746346c2e3e94447e00005f53a5832401a428eb1bdbc5033ded8","33c31d4afdaaa67a3b034e179fd80bf74d4eab7cba14a82142c8888d12fc18fe","adebb937aaeb6e1317e060dc0b7d6e57e1a53c7b8f8a8610abd08c3b379cba82","8c23948b007397e0ea9ad3c40514b23936326a40dc76aeea33f0e33eff836a83","ffcf68c5f511d280cabf8f1a1b696274c9a192642bc3217e3d1661abd8f71e76","8630ab323cfa00bae00b82244903a0f322a20a66e1683ea2586a737a9ebf8180","85fe4f3d28f1cb4d8e491c55a0486835c1cc51055693a20d66830b1cc2ab793b","a60282c636d304aa58bd6680cdac9d4328ffd153364d80e9fb1b4d1f02d33dfc","8152d9794366bd90ee50ef654e38f710e584bd84f4a6bac621d9f97acbce2d17","528908c9d9cc6ef5ddb3ef06101cfda740ec644eb2946bd780afc0252c1328a0","903345b5fc1e6010f8c03e36619e33f9e0d3a6787779aeb7687454d2a6c3ef6d","e320742c95e2e0284d2ccbff0a2f2792a8f542cfb0a463c4e0a69b2cd3680625","bec45e0777e88662fdbb5e8ef48f3fd1a474768075abe838b184973025c94244","454f74c5634529376424e1c47c0fe2695d49410a1ce081b3f1ffc55daeea3eb7","780b6cc6b1c70cc6690be3796674b53812258a020b685552553660fcd4b86818","f67db934bc8ad8e2ee3baa18b08bc118d7240d7560d58fa110c4dbaeb90df678","f9c34c33475598a66a297692d615f7aa3d0c15b21747e2d25a6284a32f6a6327","18d79fde7bcf3aba432f247e186d24a566d713fbec8e6c341072e67399c86362","815f985a9e647c8a5bfd782f8719fd0cd4ba267115021f778bece3f157073a89","6ce5a8805e3193237e3016e205e946fb19939e4c15de58ce6f1905c877abc8b8","5848e3ee78106b335533eaca71db1e665b878ffd9d43be8e46aeba467b946ccc","117e34491c7c2a60091f8b36fe6c26fe763dd4a18a7a0826ed5ae0eea2b43722","af150d9f37fb0a5dbd47fb89dd5c6dc11e49017d7147d41f3350d74f3aa89762","47e0dc99301fd6a0bc5b7e1f578a3d63eff0af6f630d8b809afe843752cf0c5f","aa29cfafc1a4cf8c176a4abe6f07db859b5bc23734cd493452892076b7877146","1b5308ca2389af637b54ab27b9659af5a2d73cf0a4cf50388dd8f21427400de4","247c2c39817c525acfeb1ea22663381d861e239ae06e8d0cb833319e04d84ec6","68966b201f6455dd61e5c9aa4c06adbc925c316062597df32b45c5ba59a704e2","cd9ea1b45f3092c261d95e3ff47d304e8ec842016b29f8b95df78dad5a40062a","cc06fb77c27a499cddf5f1cd46e819b6563504316a01145f5be0a0117d876cb3","58d06bfa48b0761800692b40c29f50c9091053fd6c76958c312978e087d31d79","5caea1b5ea04b1e43aa99cee5bd74fefaa7b922ac8451333e70f079d2c07ec42","95d5f58e04aaa08ced335e2b8eea90e71d8df498983e1fceeb70d3dc2c85a180","2fa0282f4e44c819a1a95558246fabe1163dbea20b68768288f6b871c394aaa4","5ba51a692773c8af5185eeee8de4ccae61060f24d451cca1531efae54480815c","515f3d13f2708d3e5464935b5da4e0ddf0f6cad9a85806f6aadc0dabfafa2814","c41547d3cf9b506bbf0cb190e6b1ecbd03875c7a11b8526d3b5a7f153c2c2fb1","d9bff556de5d284bf6e2170bc56944252d726301fd8010848ef17e9afebdfa4c","cb42571c8ce44d608290404033e5d070508af1d4ccce1bfee9b5bd2a52958484","684687206ec77abdfe8463f7da9efd66a3bb1c322050ff1a5f40a093bdf18fa0","6c130d0ee0ff6b4a54f5a2bc4c020f6567a9e514fb8c7e10eab605f76e559652","a23dde52a01a18a71cd79c185c6d97373f52b6c12a7fda5bed11e6cb4c590a68","7b594a3bbd98800b5e8daeac039b4bb4aeb8a520548e520c3013a51a5f4f654c","d5880b3e23457f7847c824fd139552580006d65fbe3cc504d6ea698e204a9b51","997e01acae854b7ded8d2e84ab0350e18fe218e0a9c261f2911bfedf4db2e199","5fc07cc6b694ff053f9ed95b3f08c6bc6aa1ff2e6f1b28ce731077ce5c3307a0","31397d90247c26124482327f15890d8d714bdfe155bd1b4cc5932da76c42510f","a8f7dd45cf51eeeae32747a55b82109caf19ff458d00f96d894d2aacb9735a18","16b612884e1367c8d1553d62e6573be6b4672dfaac0ca5175e4b575b25beb852","16feaa1b4453190c5aed068de933d2bbb09c6cabe55896865d563113409b632f","1eafd0dad6ffb393f68f998a40af7b6d9a5acb15a5dc3567daac52af0c9d6c97","dd0f9fef8b64dda3cdf34ca6176268b8a6ab9b87eec8161c3d8858c6f66c9570","a7ebc93d1559313fbf9f2c29c62ef9fe48fc698cf9922ecea6db4f989b5acef6","773a6cffe727a683159ba113d81a54770190a5708bf073fac4d742687b9e34d3","830d35548eda6b8f8fe3ae13cd379fdba0075586a9882b5a3f9047b6501c3106","e0e222e9ceed53addfb26d37522937047cd8be5e123ba807cba41cb5f81d5e66","e90501e4822c45e70d29b4ec1b4e9033010eb27d992ce0c4c7644214f1ba48dd","32b9d004313c8f4e07ab6c3d15bd8f5f06d7937b6fb5cd0e13d8a4ff0b233996","a74e7dbd6e09d129e4e7c2b55336c1dbc57e371b55d6d1059a13af84a30be522","f0d1844eb261b4c11addb7dda725e261ab61b9c9bf61da276c833f0a55a814ae","701c5e5948c0050e70a21ab861c5b76a62a24145a5589437529e3397e0d54abe","3df4c4d27d57d05a1a26e68e04e8aa6b1f48300020a51824ecf387f9ae99b2e5","7a3159d46589a561f31c387e9fabdf4d4bb6173b8b3ec51878bf3febf687d704","9af1ad8b71caf9d706e6e318a645282722e55f62b1773af97c9787eb3dcea3aa","aa7861bc18ea1ce8199f5e36f4ee4052178ea2a2c98d51dc8c28cf188553860d","7c3598d7fa90644b214c19759b3661433f47b5074bc4bdb86886d2476581e304","840925e16c71212aa0776966b07e42f8f146e5c8d4d678925f96be6e0d9e6cad","e8b5c5998aead2b9f40af5697a6416167acf682e89df2de0bf0f724d4f75ba33","370e80e8af5d7f87ba14a037a9af87297869b80b777e998c616c95fcd2924704","89ccd2e3b299c130245cf976b7cd8e9e0616d2c017155e914caa53d658f9cb5c","1c63ed366c0158f3092230996344a0dcdf99880174585f60bc67fde6d28a2126","84fc75538451d0b4422a081558edbd408fe2eb9232a418ff8cb685508110a5b9","aedb3a7812e3b4818ef14919bb49217abe89e33993d66022d238510904db27b5","fa79ae37e46a364b1b725074b2f295e2330ce0a037c5e0a1c4a5d16cdcc8aac0","5f2a7b8d0bd72ab9f5e86aaa9f27b9ae8cd0cf3748f22ca36c75312468e4e69f","909447f157f73709510c010b6be349aac9722bc5b30945b00a713927bf99bc88","ff2ae931140ec277de81f4657f24a4fcb613bb18c54941012ee2fc4c204c562e","ab16fe3b13a71c8fa9e7fd78341bdb4072988285587b90b89f4f1ffa5ac43adb","404ce26e7713c076e5f750d1ddbbb1e636796825ddfefa8294ec97af2be01756","e0470c4a76700c42f504130d46379f857d2dccbfc47a812c9f9e0f79410a66aa","028e0daec37186dba76ee979ddbbbee25e3fb5f25b7c81546d5e880bb99d979d","b91e7541470a819c7c60d85c6a26b3a8807ced522692ec25e0470abac768ca2e","1eb987f503340d7d12852155a1ace76cd9bfb0750d72b7249ec22c1f414d827b","cab833753ca5a02fb618c94819a53efe32ee7d31571d6f92b3e65f8b1595af5c","987b4d96f09e63e478f3efb8ea451d21cdea36ccba391dcca4c8fbc74c630261","7658499c27af46df5d24ed8a1260a7f3493458ac248b80d7233dbe21218af20e","a7d71a25f5a09368d858530cda77a2da15a09bb0aa5a288300315287a6055a5e","31e4f18c6ca8ef80f6ab987337d2c9ee01665dfe95eff027dad4464e960ab778","f4a83079a51e94e9eb800084c0e013c6a87f291113005e09d73617305539b54c","4c2feb1697853270f85fa4a4b31d82503c5d1d59c715ff08e0240669e53e71af","2310ad6ff8548091006ff3f85705d9682acb88c5d4a8d16deea5bac7a9dc613b","753fde385f8df7c04c98873ac76e1983ee0998c74713ffd2d5fbec7af486ebf2","61ddb26c90e6f69e56384b12d5b651c912816d85b8e69bf1aa0d0e48197b1fe7","868e6ba47854f2d715ab48592172c8e698f11b14c6b1be2e24ed8b2fab5ba614","cb1285dd23ea89a51a15c37c480f2654fa469943799821e8d8db8d0ff73f0be0","6fbeb2f7e3b8274ae27a7927cc008f0792d42511856c8ecfc6a2ff3915d97c20","e22cdff4da426006903f4c57a1c83703029d10c39ba2137c899e2105f3236253","54be6ecbf124d3bcdf4026f5c8e923db0204e2232a546be1f0b9aa5b8cff5017","5e437ca0a2e92054785aa62db8e7dc689aa31847aa0f8de7f0a7e62b6c287075","d221d6b1ed42869c196eea28147bdcb9f12b3d4cd70357dbe2469fed35ed3af4","b78acf3d27327f506de90a1ffe7c8923258faaa1a982bdd5ecb6a9c39bde97d5","0ffd05fa6371382187a89995dde7744f74baf594bd2e7f837bcaac357004bd80","789b4fd143fc3cfa168999aa4d12e45ab202e5b1a0c7f2c1d6dbec2af7f3448c","782470c1371e57cc126a9bb99ea7e1089050d62057b3b8fdf7a81a17e45ea8a0","0f699f24a08df3ab974183f7cefcaca4e8e9c581c05280ff6742bddf1827349b","f197e8f6d5308185031cf4a03f1d6a52978ffba3abf7d9940cc0d664b3a1bcf8","208a86446727bab28e3d7fcbb0e27609c1cae7b368bb008f4796ae78133cea06","d9cb23428f6559cd72de3a32422803f048a09316e74dbc2cf4d9b5073e4b0807","c7ea214bb67ab2826ad3b729e5c229125b7fb1acd7e7cd6ae6ed8892bddb0c93","edea0a3eb16cb55672af1395bcc0e2201f002d4449b5023979cad2a32f37f573","058a36b672921355e65e7d2cccfbc2da880ac54d8a30f9a1f185b409948c9f17","23e9dd2af8e04ab03563f3b2905a96ecef06adae48502af6c3895d5d641c5fcf","6158e08477dca3dfa4ae101a79cea2d2299e74e2066cc2d43d9ae07b23e2f361","afb5a7b846f6d9fc887d34d062eff77d11075a42d3624f3a46502ec3cc35fa20",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},{"version":"5a1b30146d105f86b15aaf11ff43af00c29972d18bc3b16c8b8f56aa47801733","affectsGlobalScope":true},"83e27bbd7304ea67f9afa1535f1d4fdb15866089f0d893c784cbb5b1c6fb3386","64fd83aa02930427c4a945138cd81989163067bb92ff9f1004088937bdf88b49","774044ef136a0988fcf57b36fd0985caa98fe385b5f9ee68a1731b7340b6aff4","a0b0a059575ca62004fb85797f078a0a1d044da2d5c29993f11e7ce08a1ed3b4","6527fbb9e589f6c5b3e6f45d240284d044d5530205dd7662b4a514a3bad427ce",{"version":"f62613ebe5136a0ed8c8828bdbe5c717aff2c9fed072c99d457cad4a70215070","affectsGlobalScope":true},{"version":"a5189085a767ea0ba85994cd7551ebefc7564c670b67d2de4be1f44d1a85d462","affectsGlobalScope":true},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":false,"emitDeclarationOnly":false,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":false,"skipLibCheck":true,"sourceMap":false,"strict":true,"strictNullChecks":true,"stripInternal":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[56,57,58,59],[60],[55,60,61,233,234],[55,60,61,78,233],[55,60,61,235,238,244],[244],[237],[57,58,59,236],[57,58,59,62],[243],[240],[241],[242],[132,133],[132],[63],[72],[69,71,73],[68],[63,64,65,67],[70],[64,65,67,74,77],[63,64],[64,66],[76],[63,64,78],[225,226,227,228,229,230,231],[193],[81,233],[63,193],[79],[81,86,193,194,224,232],[81,192],[138],[140],[81,193],[142],[144],[146],[148],[150],[152],[154],[156],[158],[139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189],[188],[162],[160],[78,81,192],[166],[164],[168],[170],[186],[172],[174],[176],[178],[180],[182],[184],[81],[82,83],[137,192],[110,137,190,191],[81,87,192],[88],[78,81,87,192],[90],[92],[108],[104],[106],[94],[81,89,91,93,95,97,99,101,103,105,107,109],[96],[98],[100],[102],[63,78,81,85],[210],[218],[208],[212],[63,78,81,85,203],[220],[81,85,205,207,209,211,213,215,217,219,221,223],[204],[78],[78,81],[195,196,197,198,199,200,201,202],[214],[216],[206],[222],[135],[81,134],[78,81,85],[78,81,84,86,110,111,113,115,117,119,121,123,125,127,129,131,136],[78,81,111],[128],[118],[120],[78,111],[114],[81,113,115,117,119,121,123,125,127,129,131],[126],[122],[112],[130],[116],[124],[78,80]],"referencedMap":[[60,1],[61,2],[235,3],[234,4],[239,5],[245,6],[238,7],[237,8],[63,9],[244,10],[241,11],[242,12],[243,13],[134,14],[133,15],[72,16],[73,17],[74,18],[69,19],[68,20],[71,21],[70,16],[78,22],[65,23],[67,24],[66,23],[64,16],[77,25],[76,26],[232,27],[230,28],[229,16],[225,16],[227,29],[226,30],[231,31],[233,32],[138,33],[139,34],[140,33],[141,35],[142,36],[143,37],[144,33],[145,38],[146,33],[147,39],[148,33],[149,40],[150,33],[151,41],[152,33],[153,42],[154,33],[155,43],[156,33],[157,44],[158,33],[159,45],[190,46],[189,47],[188,33],[163,48],[162,33],[161,49],[160,50],[167,51],[166,33],[165,52],[164,33],[169,53],[168,33],[171,54],[170,33],[187,55],[186,36],[173,56],[172,33],[175,57],[174,33],[177,58],[176,33],[179,59],[178,36],[181,60],[180,33],[183,61],[182,33],[185,62],[184,33],[83,63],[84,64],[82,63],[193,65],[192,66],[88,67],[89,68],[87,50],[90,69],[91,70],[92,67],[93,71],[108,67],[109,72],[104,67],[105,73],[106,69],[107,74],[94,67],[95,75],[110,76],[97,77],[96,67],[99,78],[98,69],[101,79],[100,69],[103,80],[102,69],[210,81],[211,82],[218,81],[219,83],[208,81],[209,84],[212,81],[213,85],[220,86],[221,87],[224,88],[205,89],[204,86],[195,90],[200,63],[202,91],[203,92],[199,63],[201,16],[196,90],[197,90],[215,93],[214,81],[85,91],[217,94],[216,81],[207,95],[206,86],[223,96],[222,86],[136,97],[135,98],[86,99],[137,100],[128,101],[129,102],[111,50],[118,101],[119,103],[120,101],[121,104],[114,105],[115,106],[191,107],[127,108],[126,101],[123,109],[122,101],[113,110],[112,101],[131,111],[130,101],[117,112],[116,101],[125,113],[124,101],[194,36],[80,31],[81,114]],"exportedModulesMap":[[60,1],[61,2],[235,3],[234,4],[239,5],[245,6],[238,7],[237,8],[63,9],[244,10],[241,11],[242,12],[243,13],[134,14],[133,15],[72,16],[73,17],[74,18],[69,19],[68,20],[71,21],[70,16],[78,22],[65,23],[67,24],[66,23],[64,16],[77,25],[76,26],[232,27],[230,28],[229,16],[225,16],[227,29],[226,30],[231,31],[233,32],[138,33],[139,34],[140,33],[141,35],[142,36],[143,37],[144,33],[145,38],[146,33],[147,39],[148,33],[149,40],[150,33],[151,41],[152,33],[153,42],[154,33],[155,43],[156,33],[157,44],[158,33],[159,45],[190,46],[189,47],[188,33],[163,48],[162,33],[161,49],[160,50],[167,51],[166,33],[165,52],[164,33],[169,53],[168,33],[171,54],[170,33],[187,55],[186,36],[173,56],[172,33],[175,57],[174,33],[177,58],[176,33],[179,59],[178,36],[181,60],[180,33],[183,61],[182,33],[185,62],[184,33],[83,63],[84,64],[82,63],[193,65],[192,66],[88,67],[89,68],[87,50],[90,69],[91,70],[92,67],[93,71],[108,67],[109,72],[104,67],[105,73],[106,69],[107,74],[94,67],[95,75],[110,76],[97,77],[96,67],[99,78],[98,69],[101,79],[100,69],[103,80],[102,69],[210,81],[211,82],[218,81],[219,83],[208,81],[209,84],[212,81],[213,85],[220,86],[221,87],[224,88],[205,89],[204,86],[195,90],[200,63],[202,91],[203,92],[199,63],[201,16],[196,90],[197,90],[215,93],[214,81],[85,91],[217,94],[216,81],[207,95],[206,86],[223,96],[222,86],[136,97],[135,98],[86,99],[137,100],[128,101],[129,102],[111,50],[118,101],[119,103],[120,101],[121,104],[114,105],[115,106],[191,107],[127,108],[126,101],[123,109],[122,101],[113,110],[112,101],[131,111],[130,101],[117,112],[116,101],[125,113],[124,101],[194,36],[80,31],[81,114]],"semanticDiagnosticsPerFile":[56,60,61,11,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,34,35,36,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,53,1,10,54,235,234,239,245,58,238,236,237,62,63,59,57,55,244,241,240,242,243,134,133,132,72,73,74,69,68,71,70,78,65,67,66,64,77,75,76,232,230,229,225,228,227,226,231,233,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,190,189,188,163,162,161,160,167,166,165,164,169,168,171,170,187,186,173,172,175,174,177,176,179,178,181,180,183,182,185,184,83,84,82,193,192,88,89,87,90,91,92,93,108,109,104,105,106,107,94,95,110,97,96,99,98,101,100,103,102,210,211,218,219,208,209,212,213,220,221,224,205,204,195,200,202,203,199,198,201,196,197,215,214,85,217,216,207,206,223,222,136,135,86,137,128,129,111,118,119,120,121,114,115,191,127,126,123,122,113,112,131,130,117,116,125,124,194,80,79,81],"affectedFilesPendingEmit":[[56,1],[60,1],[61,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[235,1],[234,1],[239,1],[245,1],[58,1],[238,1],[236,1],[237,1],[62,1],[63,1],[59,1],[57,1],[55,1],[244,1],[241,1],[240,1],[242,1],[243,1],[134,1],[133,1],[132,1],[72,1],[73,1],[74,1],[69,1],[68,1],[71,1],[70,1],[78,1],[65,1],[67,1],[66,1],[64,1],[77,1],[75,1],[76,1],[232,1],[230,1],[229,1],[225,1],[228,1],[227,1],[226,1],[231,1],[233,1],[138,1],[139,1],[140,1],[141,1],[142,1],[143,1],[144,1],[145,1],[146,1],[147,1],[148,1],[149,1],[150,1],[151,1],[152,1],[153,1],[154,1],[155,1],[156,1],[157,1],[158,1],[159,1],[190,1],[189,1],[188,1],[163,1],[162,1],[161,1],[160,1],[167,1],[166,1],[165,1],[164,1],[169,1],[168,1],[171,1],[170,1],[187,1],[186,1],[173,1],[172,1],[175,1],[174,1],[177,1],[176,1],[179,1],[178,1],[181,1],[180,1],[183,1],[182,1],[185,1],[184,1],[83,1],[84,1],[82,1],[193,1],[192,1],[88,1],[89,1],[87,1],[90,1],[91,1],[92,1],[93,1],[108,1],[109,1],[104,1],[105,1],[106,1],[107,1],[94,1],[95,1],[110,1],[97,1],[96,1],[99,1],[98,1],[101,1],[100,1],[103,1],[102,1],[210,1],[211,1],[218,1],[219,1],[208,1],[209,1],[212,1],[213,1],[220,1],[221,1],[224,1],[205,1],[204,1],[195,1],[200,1],[202,1],[203,1],[199,1],[198,1],[201,1],[196,1],[197,1],[215,1],[214,1],[85,1],[217,1],[216,1],[207,1],[206,1],[223,1],[222,1],[136,1],[135,1],[86,1],[137,1],[128,1],[129,1],[111,1],[118,1],[119,1],[120,1],[121,1],[114,1],[115,1],[191,1],[127,1],[126,1],[123,1],[122,1],[113,1],[112,1],[131,1],[130,1],[117,1],[116,1],[125,1],[124,1],[194,1],[80,1],[79,1],[81,1]]},"version":"4.7.4"} \ No newline at end of file +{"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2021.d.ts","./node_modules/typescript/lib/lib.es2022.d.ts","./node_modules/typescript/lib/lib.esnext.d.ts","./node_modules/typescript/lib/lib.dom.d.ts","./node_modules/typescript/lib/lib.dom.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2021.promise.d.ts","./node_modules/typescript/lib/lib.es2021.string.d.ts","./node_modules/typescript/lib/lib.es2021.weakref.d.ts","./node_modules/typescript/lib/lib.es2021.intl.d.ts","./node_modules/typescript/lib/lib.es2022.array.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.es2022.intl.d.ts","./node_modules/typescript/lib/lib.es2022.object.d.ts","./node_modules/typescript/lib/lib.es2022.string.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/tslib/tslib.d.ts","./node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/scheduler/tracing.d.ts","./node_modules/@types/react/index.d.ts","./node_modules/@types/react/jsx-runtime.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/@types/react/index.d.ts","../../packages/core/dist/types.d.ts","../../packages/core/dist/inputs.d.ts","../../packages/core/dist/tlshapeutil/tlshapeutil.d.ts","../../packages/core/dist/tlshapeutil/index.d.ts","../../packages/core/dist/components/renderer/renderer.d.ts","../../packages/core/dist/components/renderer/index.d.ts","../../packages/core/dist/components/svgcontainer/svgcontainer.d.ts","../../packages/core/dist/components/svgcontainer/index.d.ts","../../packages/core/dist/components/htmlcontainer/htmlcontainer.d.ts","../../packages/core/dist/components/htmlcontainer/index.d.ts","../../packages/core/dist/components/index.d.ts","../../packages/core/dist/utils/polyfills.d.ts","../../packages/core/dist/utils/utils.d.ts","../../packages/core/dist/utils/index.d.ts","../../packages/core/dist/index.d.ts","../../packages/tldraw/dist/translations/translations.d.ts","../../packages/tldraw/dist/translations/index.d.ts","../../packages/tldraw/dist/types.d.ts","../../packages/tldraw/dist/state/data/migrate.d.ts","../../packages/tldraw/dist/state/data/filesystem.d.ts","../../packages/tldraw/dist/state/data/index.d.ts","../../packages/tldraw/dist/state/shapes/tdshapeutil.d.ts","../../packages/tldraw/dist/state/tldr.d.ts","../../packages/tldraw/dist/state/sessions/basesession.d.ts","../../packages/tldraw/dist/state/sessions/arrowsession/arrowsession.d.ts","../../packages/tldraw/dist/state/sessions/arrowsession/index.d.ts","../../packages/tldraw/dist/state/sessions/brushsession/brushsession.d.ts","../../packages/tldraw/dist/state/sessions/brushsession/index.d.ts","../../packages/tldraw/dist/state/sessions/drawsession/drawsession.d.ts","../../packages/tldraw/dist/state/sessions/drawsession/index.d.ts","../../packages/tldraw/dist/state/sessions/handlesession/handlesession.d.ts","../../packages/tldraw/dist/state/sessions/handlesession/index.d.ts","../../packages/tldraw/dist/state/sessions/rotatesession/rotatesession.d.ts","../../packages/tldraw/dist/state/sessions/rotatesession/index.d.ts","../../packages/tldraw/dist/state/sessions/transformsession/transformsession.d.ts","../../packages/tldraw/dist/state/sessions/transformsession/index.d.ts","../../packages/tldraw/dist/state/sessions/transformsinglesession/transformsinglesession.d.ts","../../packages/tldraw/dist/state/sessions/transformsinglesession/index.d.ts","../../packages/tldraw/dist/state/sessions/translatesession/translatesession.d.ts","../../packages/tldraw/dist/state/sessions/translatesession/index.d.ts","../../packages/tldraw/dist/state/sessions/erasesession/erasesession.d.ts","../../packages/tldraw/dist/state/sessions/erasesession/index.d.ts","../../packages/tldraw/dist/state/sessions/gridsession/gridsession.d.ts","../../packages/tldraw/dist/state/sessions/gridsession/index.d.ts","../../packages/tldraw/dist/state/sessions/editsession/editsession.d.ts","../../packages/tldraw/dist/state/sessions/editsession/index.d.ts","../../packages/tldraw/dist/state/sessions/index.d.ts","../../packages/tldraw/dist/state/tools/basetool.d.ts","../../packages/tldraw/dist/state/tools/selecttool/selecttool.d.ts","../../packages/tldraw/dist/state/tools/selecttool/index.d.ts","../../packages/tldraw/dist/state/tools/erasetool/erasetool.d.ts","../../packages/tldraw/dist/state/tools/erasetool/index.d.ts","../../packages/tldraw/dist/state/tools/texttool/texttool.d.ts","../../packages/tldraw/dist/state/tools/texttool/index.d.ts","../../packages/tldraw/dist/state/tools/drawtool/drawtool.d.ts","../../packages/tldraw/dist/state/tools/drawtool/index.d.ts","../../packages/tldraw/dist/state/tools/ellipsetool/ellipsetool.d.ts","../../packages/tldraw/dist/state/tools/ellipsetool/index.d.ts","../../packages/tldraw/dist/state/tools/rectangletool/rectangletool.d.ts","../../packages/tldraw/dist/state/tools/rectangletool/index.d.ts","../../packages/tldraw/dist/state/tools/triangletool/triangletool.d.ts","../../packages/tldraw/dist/state/tools/triangletool/index.d.ts","../../packages/tldraw/dist/state/tools/linetool/linetool.d.ts","../../packages/tldraw/dist/state/tools/linetool/index.d.ts","../../packages/tldraw/dist/state/tools/arrowtool/arrowtool.d.ts","../../packages/tldraw/dist/state/tools/arrowtool/index.d.ts","../../packages/tldraw/dist/state/tools/stickytool/stickytool.d.ts","../../packages/tldraw/dist/state/tools/stickytool/index.d.ts","../../node_modules/zustand/vanilla.d.ts","../../node_modules/zustand/react.d.ts","../../node_modules/zustand/index.d.ts","../../packages/tldraw/dist/state/statemanager/statemanager.d.ts","../../packages/tldraw/dist/state/statemanager/index.d.ts","../../packages/tldraw/dist/state/tldrawapp.d.ts","../../packages/tldraw/dist/state/commands/alignshapes/alignshapes.d.ts","../../packages/tldraw/dist/state/commands/alignshapes/index.d.ts","../../packages/tldraw/dist/state/commands/changepage/changepage.d.ts","../../packages/tldraw/dist/state/commands/changepage/index.d.ts","../../packages/tldraw/dist/state/commands/createpage/createpage.d.ts","../../packages/tldraw/dist/state/commands/createpage/index.d.ts","../../packages/tldraw/dist/state/commands/createshapes/createshapes.d.ts","../../packages/tldraw/dist/state/commands/createshapes/index.d.ts","../../packages/tldraw/dist/state/commands/deletepage/deletepage.d.ts","../../packages/tldraw/dist/state/commands/deletepage/index.d.ts","../../packages/tldraw/dist/state/commands/deleteshapes/deleteshapes.d.ts","../../packages/tldraw/dist/state/commands/deleteshapes/index.d.ts","../../packages/tldraw/dist/state/commands/distributeshapes/distributeshapes.d.ts","../../packages/tldraw/dist/state/commands/distributeshapes/index.d.ts","../../packages/tldraw/dist/state/commands/duplicatepage/duplicatepage.d.ts","../../packages/tldraw/dist/state/commands/duplicatepage/index.d.ts","../../packages/tldraw/dist/state/commands/duplicateshapes/duplicateshapes.d.ts","../../packages/tldraw/dist/state/commands/duplicateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/flipshapes/flipshapes.d.ts","../../packages/tldraw/dist/state/commands/flipshapes/index.d.ts","../../packages/tldraw/dist/state/commands/groupshapes/groupshapes.d.ts","../../packages/tldraw/dist/state/commands/groupshapes/index.d.ts","../../packages/tldraw/dist/state/commands/moveshapestopage/moveshapestopage.d.ts","../../packages/tldraw/dist/state/commands/moveshapestopage/index.d.ts","../../packages/tldraw/dist/state/commands/movepage/movepage.d.ts","../../packages/tldraw/dist/state/commands/movepage/index.d.ts","../../packages/tldraw/dist/state/commands/reordershapes/reordershapes.d.ts","../../packages/tldraw/dist/state/commands/reordershapes/index.d.ts","../../packages/tldraw/dist/state/commands/renamepage/renamepage.d.ts","../../packages/tldraw/dist/state/commands/renamepage/index.d.ts","../../packages/tldraw/dist/state/commands/resetbounds/resetbounds.d.ts","../../packages/tldraw/dist/state/commands/resetbounds/index.d.ts","../../packages/tldraw/dist/state/commands/rotateshapes/rotateshapes.d.ts","../../packages/tldraw/dist/state/commands/rotateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/stretchshapes/stretchshapes.d.ts","../../packages/tldraw/dist/state/commands/stretchshapes/index.d.ts","../../packages/tldraw/dist/state/commands/styleshapes/styleshapes.d.ts","../../packages/tldraw/dist/state/commands/styleshapes/index.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesdecoration/toggleshapesdecoration.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesdecoration/index.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesprop/toggleshapesprop.d.ts","../../packages/tldraw/dist/state/commands/toggleshapesprop/index.d.ts","../../packages/tldraw/dist/state/commands/translateshapes/translateshapes.d.ts","../../packages/tldraw/dist/state/commands/translateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/ungroupshapes/ungroupshapes.d.ts","../../packages/tldraw/dist/state/commands/ungroupshapes/index.d.ts","../../packages/tldraw/dist/state/commands/updateshapes/updateshapes.d.ts","../../packages/tldraw/dist/state/commands/updateshapes/index.d.ts","../../packages/tldraw/dist/state/commands/setshapesprops/setshapesprops.d.ts","../../packages/tldraw/dist/state/commands/setshapesprops/index.d.ts","../../packages/tldraw/dist/state/commands/insertcontent/insertcontent.d.ts","../../packages/tldraw/dist/state/commands/insertcontent/index.d.ts","../../packages/tldraw/dist/state/commands/index.d.ts","../../packages/tldraw/dist/state/tools/index.d.ts","../../packages/tldraw/dist/state/internal.d.ts","../../packages/tldraw/dist/state/index.d.ts","../../packages/tldraw/dist/tldraw.d.ts","../../packages/tldraw/dist/state/shapes/shared/getboundsrectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/transformrectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/transformsinglerectangle.d.ts","../../packages/tldraw/dist/state/shapes/shared/textareautils.d.ts","../../packages/tldraw/dist/state/shapes/shared/shape-styles.d.ts","../../packages/tldraw/dist/state/shapes/shared/gettextalign.d.ts","../../packages/tldraw/dist/state/shapes/shared/textlabel.d.ts","../../packages/tldraw/dist/state/shapes/shared/gettextsvgelement.d.ts","../../packages/tldraw/dist/state/shapes/shared/index.d.ts","../../packages/tldraw/dist/state/shapes/rectangleutil/rectangleutil.d.ts","../../packages/tldraw/dist/state/shapes/rectangleutil/index.d.ts","../../packages/tldraw/dist/state/shapes/triangleutil/triangleutil.d.ts","../../packages/tldraw/dist/state/shapes/triangleutil/index.d.ts","../../packages/tldraw/dist/state/shapes/ellipseutil/ellipseutil.d.ts","../../packages/tldraw/dist/state/shapes/ellipseutil/index.d.ts","../../packages/tldraw/dist/state/shapes/arrowutil/arrowutil.d.ts","../../packages/tldraw/dist/state/shapes/arrowutil/index.d.ts","../../packages/tldraw/dist/state/shapes/grouputil/grouputil.d.ts","../../packages/tldraw/dist/state/shapes/grouputil/index.d.ts","../../packages/tldraw/dist/state/shapes/stickyutil/stickyutil.d.ts","../../packages/tldraw/dist/state/shapes/stickyutil/index.d.ts","../../packages/tldraw/dist/state/shapes/textutil/textutil.d.ts","../../packages/tldraw/dist/state/shapes/textutil/index.d.ts","../../packages/tldraw/dist/state/shapes/drawutil/drawutil.d.ts","../../packages/tldraw/dist/state/shapes/drawutil/index.d.ts","../../packages/tldraw/dist/state/shapes/imageutil/imageutil.d.ts","../../packages/tldraw/dist/state/shapes/imageutil/index.d.ts","../../packages/tldraw/dist/state/shapes/videoutil/videoutil.d.ts","../../packages/tldraw/dist/state/shapes/videoutil/index.d.ts","../../packages/tldraw/dist/state/shapes/index.d.ts","../../packages/tldraw/dist/hooks/usekeyboardshortcuts.d.ts","../../packages/tldraw/dist/hooks/usetldrawapp.d.ts","../../packages/tldraw/dist/hooks/usetheme.d.ts","../../packages/tldraw/dist/hooks/usestylesheet.d.ts","../../packages/tldraw/dist/hooks/usefilesystemhandlers.d.ts","../../packages/tldraw/dist/hooks/usefilesystem.d.ts","../../packages/tldraw/dist/hooks/usetranslation.d.ts","../../packages/tldraw/dist/hooks/usemediaquery.d.ts","../../packages/tldraw/dist/hooks/index.d.ts","../../packages/tldraw/dist/index.d.ts","./src/hooks/useuploadassets.ts","./src/app.tsx","../../node_modules/@types/react-dom/node_modules/@types/react/global.d.ts","../../node_modules/@types/react-dom/node_modules/@types/react/index.d.ts","../../node_modules/@types/react-dom/client.d.ts","./src/main.tsx","../../node_modules/vite/types/hmrpayload.d.ts","../../node_modules/vite/types/customevent.d.ts","../../node_modules/vite/types/hot.d.ts","../../node_modules/vite/types/importmeta.d.ts","../../node_modules/vite/client.d.ts","./src/vite-env.d.ts"],"fileInfos":[{"version":"f5c28122bee592cfaf5c72ed7bcc47f453b79778ffa6e301f45d21a0970719d4","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9","746d62152361558ea6d6115cf0da4dd10ede041d14882ede3568bce5dc4b4f1f","3eb679a56cab01203a1ba7edeade937f6a2a4c718513b2cd930b579807fa9359","aea179452def8a6152f98f63b191b84e7cbd69b0e248c91e61fb2e52328abe8c",{"version":"3f149f903dd20dfeb7c80e228b659f0e436532de772469980dbd00702cc05cc1","affectsGlobalScope":true},{"version":"1272277fe7daa738e555eb6cc45ded42cc2d0f76c07294142283145d49e96186","affectsGlobalScope":true},{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"cd483c056da900716879771893a3c9772b66c3c88f8943b4205aec738a94b1d0","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"6c55633c733c8378db65ac3da7a767c3cf2cf3057f0565a9124a16a3a2019e87","affectsGlobalScope":true},{"version":"fb4416144c1bf0323ccbc9afb0ab289c07312214e8820ad17d709498c865a3fe","affectsGlobalScope":true},{"version":"5b0ca94ec819d68d33da516306c15297acec88efeb0ae9e2b39f71dbd9685ef7","affectsGlobalScope":true},{"version":"ff667ee99e5a28c3dc5063a3cfd4d3436699e3fb035d4451037da7f567da542a","affectsGlobalScope":true},{"version":"34478567f8a80171f88f2f30808beb7da15eac0538ae91282dd33dce928d98ed","affectsGlobalScope":true},{"version":"6ea9ab679ea030cf46c16a711a316078e9e02619ebaf07a7fcd16964aba88f2d","affectsGlobalScope":true},{"version":"6bda95ea27a59a276e46043b7065b55bd4b316c25e70e29b572958fa77565d43","affectsGlobalScope":true},{"version":"aedb8de1abb2ff1095c153854a6df7deae4a5709c37297f9d6e9948b6806fa66","affectsGlobalScope":true},{"version":"11ffe3c281f375fff9ffdde8bbec7669b4dd671905509079f866f2354a788064","affectsGlobalScope":true},{"version":"c37f8a49593a0030eecb51bbfa270e709bec9d79a6cc3bb851ef348d4e6b26f8","affectsGlobalScope":true},"14a84fbe4ec531dcbaf5d2594fd95df107258e60ae6c6a076404f13c3f66f28e",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},"381899b8d1d4c1be716f18cb5242ba39f66f4b1e31d45af62a32a99f8edcb39d","f7b46d22a307739c145e5fddf537818038fdfffd580d79ed717f4d4d37249380","f5a8b384f182b3851cec3596ccc96cb7464f8d3469f48c74bf2befb782a19de5",{"version":"0bca3a2542a695559b16feba84fffa590ec45eb64f2bbe0ee5e303f7bade01b1","affectsGlobalScope":true},"af7fd2870746deed40e130fc0a3966de74e8f52a97ec114d0fbb35876ab05ca9",{"version":"bbdf156fea2fabed31a569445835aeedcc33643d404fcbaa54541f06c109df3f","affectsGlobalScope":true},{"version":"0bca3a2542a695559b16feba84fffa590ec45eb64f2bbe0ee5e303f7bade01b1","affectsGlobalScope":true},"6a3b79b76912bf61a299b104fc29399a9b6c67971398b6f4f7bff1e6e35a4906","e455cf96286de82fdab91967f10d6187241b96f336e22da8412229b96a899af8","75328a05f9f1e11348bce707eb54058c3c90b687bae290c4f4b93a8fe9f48a02","a3a2d4d8362ebda69a46994c61bf616a3f88448e9a30f7e7c64647ad68acfc0d","d149fdfd8fff6078fe11d7901fe92b9dfd7bd6b8600aba693a4109eef1161538","425fe67b957bbee725580629392bf5307c0aa0ffa35a9c50017648902e2f96c7","23419a0a1ecc5cdf2e3ce41a1a272b86a6f06d736d2a9f24dee4d22761eea353","4caf4fb1fe6fee68aad45129626646ba6fc0333de3ed90a1e3937cacc83e451a","f18c9c55da84dc27fefe0613b13c4f756e1088c13e258e5c205d834879a2eabc","9f3f7649066fe53f6cb0c1779a799e0171dbd6a3f22375347549f0488d6ee9c0","c9a124684e48834c2d88ead76a128bcdd8c7bab93e513fd8b7fd884bfbdb2c48","e0cf19f141c3b2632d9fc02d65a753864304fd6cc4391fcb532844356399519f","dd0a68c46a838a00f0c04fd982aa18051189661732026f309fc15a184e2f81a8","6f5e94c9041fed6cd102eb6cb19d56dcdb3c58e8e8026f1328eeef66b8e6423c","e37a930b6488a3619676890054ef1ba03ff0082a2c64738afd341d3572b8ca5b","e7cbe1cd5a21af0a434f934eda09be4dc7d444926a09505951f70b04b83b8e9f","7efc14627fd0395e595372fbcb879cab1e887e6f68b357a76df695a88bd3482f","a504cb7906f9b483a29bd46a2ff4272123e2ccb42d5cbce3541f0b5cb90af801","c93f531761d1edabcbbd7af0f736616bd13dd2bac3b3e525e2fc1a7b9a53a1e7","9ac79fc17fc69841a5125da47438b78382a54639c0c41156c49726cbcb36fa28","ef65d87cfc568222dcd128c652282c6c96a5ebefa76583dd7f11735fa81061ff","d5ac934d6228f658813475ffa95364d6861646372519c21896dcd5e77cd3a16e","176a9c55fff93c624ccb249f88e5adac4e26121bdbf1e6ce070831d60d7e3b5b","6afc838c83c5bf13c5ce07811ba985e196c566a6d9b6338e8afb7fad32d147d0","52c70c42b5d686c4dd7d2f04120829a2147e21231da5ce7bfac639054c7fa350","140c71536d754aff270082640b24d07c190c8bd46d304a50947ba7f2b18db2d5","1bac7874d6ca6294d2a8c9eb14debb6f4884e1c3f5753679f26c279b1ae1e383","32d400b51c78ed6f1d574e283149254fbc92de9032c27e6682f25e3d2fad2614","f00cc22aaad07680f71622f3ca8eba8fa5a6a31fca04fb20e87787d3ebd59d94","f0aacd6a7c812693b2b693a6bb7f154d793af6a80b4622fb1dd7f52d558ff1f0","dbf9edbca4983328b46621640eb29fb7af5e08cfdf840d473d65034964c44a00","657e499d6fd3652dd8b9bd0751a59d595635b3c9064c5aa52fa5187b39ada9a2","48c86e26457dec5a0c00146e9cb82610fda53de6c55736ea8f3df27834a9a5ad","0bde6d7d061cfb46733e04dbbf3fb0931181bbcc52ec36f57dad3d379b9d3b8d","d47830284676cd320766d129693ed584b1102a57d30516ed42aeb21ed7ce1a26","5dfeb6a6133a805fa6b9d3e5ba0a4cfce2acca6827f6a0733c5ff682faedf82d","0909e977ef5a6ff86d2a2da3fed5885fd11a43bc89cd4f371521131845b6ff80","b79c6bacf8bd7c03480d655ec17f3f926855acba1280be1ec765cf052203f922","d80d80a4df923e7c5d57d8e672937eb7d3ab56e09747bd5fe39eada9bb0ea5c2","1fed5aea2bb73f0c006b0fc32c31e613b75f5a6f226b6fd3964e7f7fd27e3324","1f07cb45a32129392f0aa05e51b4026887f6fd87e681c4a421dae164421b6d68","34d2475d8380255954aada2b3f6ccfcceb060091f07f3d6ebc173832c0a79642","884ddf843ca40c6ac988c92441721b46dd3cf460717588d8754b71806d3fcc43","554e4ac4d4b8f79286627b2467beb62dc3fae5da9cfed045b4a07071197cc16b","a6ad5291950c0c8da8e13aa6cfbd4ff3ec21b6cd6fba8e74aa71f89865c489e2","4ef848e76a4e0a6a0fb0f28f3d6bf827c7768892ee0c56c64c7b40ea2e1ac2ce","b85258b91257142915345c43b7f5e25ea7cac60a4050415448e2894bca54d01b","dcfce621647a0fb4601e0c49760a22a58a2e798e2eab108502aa1487c17184ce","40a6b9cfff78755817e3ff9cff7a09402993791ffc382ad53863200101b92311","eb542b5f306242e547f71d2635728aad879d8c4321b34b6b456983578d203272","10e9d919e12f4eeaef47eb47c9936ed1a59a7d4d0e4fe250321e01d1c5747714","57e8596d50a5f26daa5f6b33168b03c96f380c5a82e6d8aff613d5bcf5a4396e","19cafe08a9b8e43c50215e21e627c63e037530b772c9abe2d5f23b44990fdf58","275d845c826322d12b780a87762cab7825f3b27afda1c2593bf8df08d90e4efa","f9f5f2992d8bd322f600cb649c37842ee6338a0db1eba9fa3e53259f1a85c196","2a7fef3e934e9a288dd0709aefae9b04d64900b4d09fe6ef1aabea1ce77b854c","dd17f4f9aea5d57c4cf46c8cf5a523664790323c0da7effda78940bfb6864f6f","265acc837c00962b3fcacdd486acdfe60851c5d50f1aac25b65c1bfb8108d76b","b50df6b5483a746346c2e3e94447e00005f53a5832401a428eb1bdbc5033ded8","33c31d4afdaaa67a3b034e179fd80bf74d4eab7cba14a82142c8888d12fc18fe","adebb937aaeb6e1317e060dc0b7d6e57e1a53c7b8f8a8610abd08c3b379cba82","8c23948b007397e0ea9ad3c40514b23936326a40dc76aeea33f0e33eff836a83","ffcf68c5f511d280cabf8f1a1b696274c9a192642bc3217e3d1661abd8f71e76","8630ab323cfa00bae00b82244903a0f322a20a66e1683ea2586a737a9ebf8180","85fe4f3d28f1cb4d8e491c55a0486835c1cc51055693a20d66830b1cc2ab793b","a60282c636d304aa58bd6680cdac9d4328ffd153364d80e9fb1b4d1f02d33dfc","8152d9794366bd90ee50ef654e38f710e584bd84f4a6bac621d9f97acbce2d17","528908c9d9cc6ef5ddb3ef06101cfda740ec644eb2946bd780afc0252c1328a0","903345b5fc1e6010f8c03e36619e33f9e0d3a6787779aeb7687454d2a6c3ef6d","e320742c95e2e0284d2ccbff0a2f2792a8f542cfb0a463c4e0a69b2cd3680625","bec45e0777e88662fdbb5e8ef48f3fd1a474768075abe838b184973025c94244","454f74c5634529376424e1c47c0fe2695d49410a1ce081b3f1ffc55daeea3eb7","780b6cc6b1c70cc6690be3796674b53812258a020b685552553660fcd4b86818","ccc3702e69963bdb979cfabc0a9be9bbd77238fc4d63cbc66819baad9239c234","f9c34c33475598a66a297692d615f7aa3d0c15b21747e2d25a6284a32f6a6327","18d79fde7bcf3aba432f247e186d24a566d713fbec8e6c341072e67399c86362","815f985a9e647c8a5bfd782f8719fd0cd4ba267115021f778bece3f157073a89","6ce5a8805e3193237e3016e205e946fb19939e4c15de58ce6f1905c877abc8b8","5848e3ee78106b335533eaca71db1e665b878ffd9d43be8e46aeba467b946ccc","117e34491c7c2a60091f8b36fe6c26fe763dd4a18a7a0826ed5ae0eea2b43722","af150d9f37fb0a5dbd47fb89dd5c6dc11e49017d7147d41f3350d74f3aa89762","47e0dc99301fd6a0bc5b7e1f578a3d63eff0af6f630d8b809afe843752cf0c5f","aa29cfafc1a4cf8c176a4abe6f07db859b5bc23734cd493452892076b7877146","1b5308ca2389af637b54ab27b9659af5a2d73cf0a4cf50388dd8f21427400de4","247c2c39817c525acfeb1ea22663381d861e239ae06e8d0cb833319e04d84ec6","68966b201f6455dd61e5c9aa4c06adbc925c316062597df32b45c5ba59a704e2","cd9ea1b45f3092c261d95e3ff47d304e8ec842016b29f8b95df78dad5a40062a","cc06fb77c27a499cddf5f1cd46e819b6563504316a01145f5be0a0117d876cb3","58d06bfa48b0761800692b40c29f50c9091053fd6c76958c312978e087d31d79","5caea1b5ea04b1e43aa99cee5bd74fefaa7b922ac8451333e70f079d2c07ec42","95d5f58e04aaa08ced335e2b8eea90e71d8df498983e1fceeb70d3dc2c85a180","2fa0282f4e44c819a1a95558246fabe1163dbea20b68768288f6b871c394aaa4","5ba51a692773c8af5185eeee8de4ccae61060f24d451cca1531efae54480815c","515f3d13f2708d3e5464935b5da4e0ddf0f6cad9a85806f6aadc0dabfafa2814","c41547d3cf9b506bbf0cb190e6b1ecbd03875c7a11b8526d3b5a7f153c2c2fb1","d9bff556de5d284bf6e2170bc56944252d726301fd8010848ef17e9afebdfa4c","cb42571c8ce44d608290404033e5d070508af1d4ccce1bfee9b5bd2a52958484","684687206ec77abdfe8463f7da9efd66a3bb1c322050ff1a5f40a093bdf18fa0","6c130d0ee0ff6b4a54f5a2bc4c020f6567a9e514fb8c7e10eab605f76e559652","a23dde52a01a18a71cd79c185c6d97373f52b6c12a7fda5bed11e6cb4c590a68","7b594a3bbd98800b5e8daeac039b4bb4aeb8a520548e520c3013a51a5f4f654c","d5880b3e23457f7847c824fd139552580006d65fbe3cc504d6ea698e204a9b51","997e01acae854b7ded8d2e84ab0350e18fe218e0a9c261f2911bfedf4db2e199","5fc07cc6b694ff053f9ed95b3f08c6bc6aa1ff2e6f1b28ce731077ce5c3307a0","31397d90247c26124482327f15890d8d714bdfe155bd1b4cc5932da76c42510f","a8f7dd45cf51eeeae32747a55b82109caf19ff458d00f96d894d2aacb9735a18","16b612884e1367c8d1553d62e6573be6b4672dfaac0ca5175e4b575b25beb852","16feaa1b4453190c5aed068de933d2bbb09c6cabe55896865d563113409b632f","1eafd0dad6ffb393f68f998a40af7b6d9a5acb15a5dc3567daac52af0c9d6c97","dd0f9fef8b64dda3cdf34ca6176268b8a6ab9b87eec8161c3d8858c6f66c9570","a7ebc93d1559313fbf9f2c29c62ef9fe48fc698cf9922ecea6db4f989b5acef6","773a6cffe727a683159ba113d81a54770190a5708bf073fac4d742687b9e34d3","830d35548eda6b8f8fe3ae13cd379fdba0075586a9882b5a3f9047b6501c3106","e0e222e9ceed53addfb26d37522937047cd8be5e123ba807cba41cb5f81d5e66","e90501e4822c45e70d29b4ec1b4e9033010eb27d992ce0c4c7644214f1ba48dd","32b9d004313c8f4e07ab6c3d15bd8f5f06d7937b6fb5cd0e13d8a4ff0b233996","a74e7dbd6e09d129e4e7c2b55336c1dbc57e371b55d6d1059a13af84a30be522","f0d1844eb261b4c11addb7dda725e261ab61b9c9bf61da276c833f0a55a814ae","701c5e5948c0050e70a21ab861c5b76a62a24145a5589437529e3397e0d54abe","3df4c4d27d57d05a1a26e68e04e8aa6b1f48300020a51824ecf387f9ae99b2e5","7a3159d46589a561f31c387e9fabdf4d4bb6173b8b3ec51878bf3febf687d704","9af1ad8b71caf9d706e6e318a645282722e55f62b1773af97c9787eb3dcea3aa","aa7861bc18ea1ce8199f5e36f4ee4052178ea2a2c98d51dc8c28cf188553860d","7c3598d7fa90644b214c19759b3661433f47b5074bc4bdb86886d2476581e304","840925e16c71212aa0776966b07e42f8f146e5c8d4d678925f96be6e0d9e6cad","e8b5c5998aead2b9f40af5697a6416167acf682e89df2de0bf0f724d4f75ba33","370e80e8af5d7f87ba14a037a9af87297869b80b777e998c616c95fcd2924704","89ccd2e3b299c130245cf976b7cd8e9e0616d2c017155e914caa53d658f9cb5c","1c63ed366c0158f3092230996344a0dcdf99880174585f60bc67fde6d28a2126","84fc75538451d0b4422a081558edbd408fe2eb9232a418ff8cb685508110a5b9","aedb3a7812e3b4818ef14919bb49217abe89e33993d66022d238510904db27b5","fa79ae37e46a364b1b725074b2f295e2330ce0a037c5e0a1c4a5d16cdcc8aac0","5f2a7b8d0bd72ab9f5e86aaa9f27b9ae8cd0cf3748f22ca36c75312468e4e69f","909447f157f73709510c010b6be349aac9722bc5b30945b00a713927bf99bc88","ff2ae931140ec277de81f4657f24a4fcb613bb18c54941012ee2fc4c204c562e","ab16fe3b13a71c8fa9e7fd78341bdb4072988285587b90b89f4f1ffa5ac43adb","84ac296d9e9fbc26c10e9b330fef7b898b50909c87c746cffbbc7e442eaba932","e0470c4a76700c42f504130d46379f857d2dccbfc47a812c9f9e0f79410a66aa","028e0daec37186dba76ee979ddbbbee25e3fb5f25b7c81546d5e880bb99d979d","b91e7541470a819c7c60d85c6a26b3a8807ced522692ec25e0470abac768ca2e","d5a7f01c13482e6a8d0d71601da31d6c8b62d9371b2f44a2f068b7b033479178","cab833753ca5a02fb618c94819a53efe32ee7d31571d6f92b3e65f8b1595af5c","10e81813101e9ad1b853045a3b6f39bd91e0407a1b2c98326960144565723c52","7658499c27af46df5d24ed8a1260a7f3493458ac248b80d7233dbe21218af20e","e866b8c0d47d811a9c4b6e91cc5f9d7a63b8cf975a375a6e7873a7f27694036c","31e4f18c6ca8ef80f6ab987337d2c9ee01665dfe95eff027dad4464e960ab778","9fa4f2ae2a748ac634f9e19b9d3086257b6069606673a38e3e0b8868c76cfd7e","4c2feb1697853270f85fa4a4b31d82503c5d1d59c715ff08e0240669e53e71af","ce7399a946bdd93e47088da754c4ddf17a7633a414e144c8f12e893033ac2161","753fde385f8df7c04c98873ac76e1983ee0998c74713ffd2d5fbec7af486ebf2","027d3b325c5c68711da2407b2c1c70c78c9857c513527621d96f8040e62fa946","868e6ba47854f2d715ab48592172c8e698f11b14c6b1be2e24ed8b2fab5ba614","dc8d3b82cf46377b6f62d0ba217af4253333183a0983e7d400b46c3fc8a61d9c","6fbeb2f7e3b8274ae27a7927cc008f0792d42511856c8ecfc6a2ff3915d97c20","b0aef388d49ed063d8c55a67967e56c26acb6f1269368db07a22bad16cf1cd8e","54be6ecbf124d3bcdf4026f5c8e923db0204e2232a546be1f0b9aa5b8cff5017","8080d3e8f48cbc95f3611b6df615e59504af7064e6e98001c9b2a19702b40006","d221d6b1ed42869c196eea28147bdcb9f12b3d4cd70357dbe2469fed35ed3af4","dc575bee60478f1e79c0801e53bef7a811f97ed256f9de0f01f4cf64c4924592","0ffd05fa6371382187a89995dde7744f74baf594bd2e7f837bcaac357004bd80","789b4fd143fc3cfa168999aa4d12e45ab202e5b1a0c7f2c1d6dbec2af7f3448c","782470c1371e57cc126a9bb99ea7e1089050d62057b3b8fdf7a81a17e45ea8a0","0f699f24a08df3ab974183f7cefcaca4e8e9c581c05280ff6742bddf1827349b","f197e8f6d5308185031cf4a03f1d6a52978ffba3abf7d9940cc0d664b3a1bcf8","208a86446727bab28e3d7fcbb0e27609c1cae7b368bb008f4796ae78133cea06","d9cb23428f6559cd72de3a32422803f048a09316e74dbc2cf4d9b5073e4b0807","c7ea214bb67ab2826ad3b729e5c229125b7fb1acd7e7cd6ae6ed8892bddb0c93","c871c268d91ce9a35857cae3ed2cb5134bee6375cbf998d67512364fc2fb032a","d6f93c72d99f69f612f7968c35b419fed7533dcc63095d42fa80fbe89c645fc7","0a1e6a5514d352b35edad9df22a833222180cd081716d4bbc9454e557a02218c","23e9dd2af8e04ab03563f3b2905a96ecef06adae48502af6c3895d5d641c5fcf","6158e08477dca3dfa4ae101a79cea2d2299e74e2066cc2d43d9ae07b23e2f361","afb5a7b846f6d9fc887d34d062eff77d11075a42d3624f3a46502ec3cc35fa20",{"version":"ecf78e637f710f340ec08d5d92b3f31b134a46a4fcf2e758690d8c46ce62cba6","affectsGlobalScope":true},{"version":"5a1b30146d105f86b15aaf11ff43af00c29972d18bc3b16c8b8f56aa47801733","affectsGlobalScope":true},"83e27bbd7304ea67f9afa1535f1d4fdb15866089f0d893c784cbb5b1c6fb3386","64fd83aa02930427c4a945138cd81989163067bb92ff9f1004088937bdf88b49","774044ef136a0988fcf57b36fd0985caa98fe385b5f9ee68a1731b7340b6aff4","a0b0a059575ca62004fb85797f078a0a1d044da2d5c29993f11e7ce08a1ed3b4","6527fbb9e589f6c5b3e6f45d240284d044d5530205dd7662b4a514a3bad427ce",{"version":"f62613ebe5136a0ed8c8828bdbe5c717aff2c9fed072c99d457cad4a70215070","affectsGlobalScope":true},{"version":"a5189085a767ea0ba85994cd7551ebefc7564c670b67d2de4be1f44d1a85d462","affectsGlobalScope":true},"65996936fbb042915f7b74a200fcdde7e410f32a669b1ab9597cfaa4b0faddb5"],"options":{"allowSyntheticDefaultImports":true,"composite":true,"declaration":true,"declarationMap":false,"emitDeclarationOnly":false,"esModuleInterop":false,"experimentalDecorators":true,"importHelpers":true,"jsx":4,"module":99,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":false,"skipLibCheck":true,"sourceMap":false,"strict":true,"strictNullChecks":true,"stripInternal":true,"target":99,"useDefineForClassFields":true},"fileIdsList":[[56,57,58,59],[60],[55,60,61,234,235],[55,60,61,78,234],[55,60,61,236,239,245],[245],[238],[57,58,59,237],[57,58,59,62],[244],[241],[242],[243],[132,133],[132],[63],[72],[69,71,73],[68],[63,64,65,67],[70],[64,65,67,74,77],[63,64],[64,66],[76],[63,64,78],[225,226,227,228,229,230,231,232],[193],[81,234],[63,193],[79],[81,86,193,194,224,233],[81,192],[138],[140],[81,193],[142],[144],[146],[148],[150],[152],[154],[156],[158],[139,141,143,145,147,149,151,153,155,157,159,161,163,165,167,169,171,173,175,177,179,181,183,185,187,189],[188],[162],[160],[78,81,192],[166],[164],[168],[170],[186],[172],[174],[176],[178],[180],[182],[184],[81],[82,83],[137,192],[110,137,190,191],[81,87,192],[88],[78,81,87,192],[90],[92],[108],[104],[106],[94],[81,89,91,93,95,97,99,101,103,105,107,109],[96],[98],[100],[102],[63,78,81,85],[210],[218],[208],[212],[63,78,81,85,203],[220],[81,85,205,207,209,211,213,215,217,219,221,223],[204],[78],[78,81],[195,196,197,198,199,200,201,202],[214],[216],[206],[222],[135],[81,134],[78,81,85],[78,81,84,86,110,111,113,115,117,119,121,123,125,127,129,131,136],[78,81,111],[128],[118],[120],[78,111],[114],[81,113,115,117,119,121,123,125,127,129,131],[126],[122],[112],[130],[116],[124],[78,80]],"referencedMap":[[60,1],[61,2],[236,3],[235,4],[240,5],[246,6],[239,7],[238,8],[63,9],[245,10],[242,11],[243,12],[244,13],[134,14],[133,15],[72,16],[73,17],[74,18],[69,19],[68,20],[71,21],[70,16],[78,22],[65,23],[67,24],[66,23],[64,16],[77,25],[76,26],[233,27],[230,28],[229,16],[225,16],[227,29],[226,30],[231,31],[234,32],[138,33],[139,34],[140,33],[141,35],[142,36],[143,37],[144,33],[145,38],[146,33],[147,39],[148,33],[149,40],[150,33],[151,41],[152,33],[153,42],[154,33],[155,43],[156,33],[157,44],[158,33],[159,45],[190,46],[189,47],[188,33],[163,48],[162,33],[161,49],[160,50],[167,51],[166,33],[165,52],[164,33],[169,53],[168,33],[171,54],[170,33],[187,55],[186,36],[173,56],[172,33],[175,57],[174,33],[177,58],[176,33],[179,59],[178,36],[181,60],[180,33],[183,61],[182,33],[185,62],[184,33],[83,63],[84,64],[82,63],[193,65],[192,66],[88,67],[89,68],[87,50],[90,69],[91,70],[92,67],[93,71],[108,67],[109,72],[104,67],[105,73],[106,69],[107,74],[94,67],[95,75],[110,76],[97,77],[96,67],[99,78],[98,69],[101,79],[100,69],[103,80],[102,69],[210,81],[211,82],[218,81],[219,83],[208,81],[209,84],[212,81],[213,85],[220,86],[221,87],[224,88],[205,89],[204,86],[195,90],[200,63],[202,91],[203,92],[199,63],[201,16],[196,90],[197,90],[215,93],[214,81],[85,91],[217,94],[216,81],[207,95],[206,86],[223,96],[222,86],[136,97],[135,98],[86,99],[137,100],[128,101],[129,102],[111,50],[118,101],[119,103],[120,101],[121,104],[114,105],[115,106],[191,107],[127,108],[126,101],[123,109],[122,101],[113,110],[112,101],[131,111],[130,101],[117,112],[116,101],[125,113],[124,101],[194,36],[80,31],[81,114]],"exportedModulesMap":[[60,1],[61,2],[236,3],[235,4],[240,5],[246,6],[239,7],[238,8],[63,9],[245,10],[242,11],[243,12],[244,13],[134,14],[133,15],[72,16],[73,17],[74,18],[69,19],[68,20],[71,21],[70,16],[78,22],[65,23],[67,24],[66,23],[64,16],[77,25],[76,26],[233,27],[230,28],[229,16],[225,16],[227,29],[226,30],[231,31],[234,32],[138,33],[139,34],[140,33],[141,35],[142,36],[143,37],[144,33],[145,38],[146,33],[147,39],[148,33],[149,40],[150,33],[151,41],[152,33],[153,42],[154,33],[155,43],[156,33],[157,44],[158,33],[159,45],[190,46],[189,47],[188,33],[163,48],[162,33],[161,49],[160,50],[167,51],[166,33],[165,52],[164,33],[169,53],[168,33],[171,54],[170,33],[187,55],[186,36],[173,56],[172,33],[175,57],[174,33],[177,58],[176,33],[179,59],[178,36],[181,60],[180,33],[183,61],[182,33],[185,62],[184,33],[83,63],[84,64],[82,63],[193,65],[192,66],[88,67],[89,68],[87,50],[90,69],[91,70],[92,67],[93,71],[108,67],[109,72],[104,67],[105,73],[106,69],[107,74],[94,67],[95,75],[110,76],[97,77],[96,67],[99,78],[98,69],[101,79],[100,69],[103,80],[102,69],[210,81],[211,82],[218,81],[219,83],[208,81],[209,84],[212,81],[213,85],[220,86],[221,87],[224,88],[205,89],[204,86],[195,90],[200,63],[202,91],[203,92],[199,63],[201,16],[196,90],[197,90],[215,93],[214,81],[85,91],[217,94],[216,81],[207,95],[206,86],[223,96],[222,86],[136,97],[135,98],[86,99],[137,100],[128,101],[129,102],[111,50],[118,101],[119,103],[120,101],[121,104],[114,105],[115,106],[191,107],[127,108],[126,101],[123,109],[122,101],[113,110],[112,101],[131,111],[130,101],[117,112],[116,101],[125,113],[124,101],[194,36],[80,31],[81,114]],"semanticDiagnosticsPerFile":[56,60,61,11,12,14,13,2,15,16,17,18,19,20,21,22,3,4,26,23,24,25,27,28,29,5,30,31,32,33,6,34,35,36,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,53,1,10,54,236,235,240,246,58,239,237,238,62,63,59,57,55,245,242,241,243,244,134,133,132,72,73,74,69,68,71,70,78,65,67,66,64,77,75,76,233,230,229,225,232,228,227,226,231,234,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,190,189,188,163,162,161,160,167,166,165,164,169,168,171,170,187,186,173,172,175,174,177,176,179,178,181,180,183,182,185,184,83,84,82,193,192,88,89,87,90,91,92,93,108,109,104,105,106,107,94,95,110,97,96,99,98,101,100,103,102,210,211,218,219,208,209,212,213,220,221,224,205,204,195,200,202,203,199,198,201,196,197,215,214,85,217,216,207,206,223,222,136,135,86,137,128,129,111,118,119,120,121,114,115,191,127,126,123,122,113,112,131,130,117,116,125,124,194,80,79,81],"affectedFilesPendingEmit":[[56,1],[60,1],[61,1],[2,1],[3,1],[4,1],[5,1],[6,1],[7,1],[8,1],[9,1],[10,1],[236,1],[235,1],[240,1],[246,1],[58,1],[239,1],[237,1],[238,1],[62,1],[63,1],[59,1],[57,1],[55,1],[245,1],[242,1],[241,1],[243,1],[244,1],[134,1],[133,1],[132,1],[72,1],[73,1],[74,1],[69,1],[68,1],[71,1],[70,1],[78,1],[65,1],[67,1],[66,1],[64,1],[77,1],[75,1],[76,1],[233,1],[230,1],[229,1],[225,1],[232,1],[228,1],[227,1],[226,1],[231,1],[234,1],[138,1],[139,1],[140,1],[141,1],[142,1],[143,1],[144,1],[145,1],[146,1],[147,1],[148,1],[149,1],[150,1],[151,1],[152,1],[153,1],[154,1],[155,1],[156,1],[157,1],[158,1],[159,1],[190,1],[189,1],[188,1],[163,1],[162,1],[161,1],[160,1],[167,1],[166,1],[165,1],[164,1],[169,1],[168,1],[171,1],[170,1],[187,1],[186,1],[173,1],[172,1],[175,1],[174,1],[177,1],[176,1],[179,1],[178,1],[181,1],[180,1],[183,1],[182,1],[185,1],[184,1],[83,1],[84,1],[82,1],[193,1],[192,1],[88,1],[89,1],[87,1],[90,1],[91,1],[92,1],[93,1],[108,1],[109,1],[104,1],[105,1],[106,1],[107,1],[94,1],[95,1],[110,1],[97,1],[96,1],[99,1],[98,1],[101,1],[100,1],[103,1],[102,1],[210,1],[211,1],[218,1],[219,1],[208,1],[209,1],[212,1],[213,1],[220,1],[221,1],[224,1],[205,1],[204,1],[195,1],[200,1],[202,1],[203,1],[199,1],[198,1],[201,1],[196,1],[197,1],[215,1],[214,1],[85,1],[217,1],[216,1],[207,1],[206,1],[223,1],[222,1],[136,1],[135,1],[86,1],[137,1],[128,1],[129,1],[111,1],[118,1],[119,1],[120,1],[121,1],[114,1],[115,1],[191,1],[127,1],[126,1],[123,1],[122,1],[113,1],[112,1],[131,1],[130,1],[117,1],[116,1],[125,1],[124,1],[194,1],[80,1],[79,1],[81,1]]},"version":"4.7.4"} \ No newline at end of file diff --git a/package.json b/package.json index f2af5abf4..5e36b6723 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,7 @@ ], "scripts": { "build": "turbo run build", - "build:www": "turbo run build:www --force", + "build:www": "turbo run build:www", "build:core": "turbo run build:core", "build:packages": "turbo run build:packages --stream", "build:apps": "turbo run build:apps", diff --git a/packages/core/package.json b/packages/core/package.json index a27b5d53d..dc48e2c62 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -50,8 +50,8 @@ }, "devDependencies": { "@swc-node/jest": "^1.4.3", - "@testing-library/jest-dom": "^5.16.2", - "@testing-library/react": "^12.1.2", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.3.0", "@tldraw/intersect": "*", "@tldraw/vec": "*", "@types/node": "^17.0.14", diff --git a/packages/core/src/components/Renderer/Renderer.test.tsx b/packages/core/src/components/Renderer/Renderer.test.tsx index 2401cfd6e..ce0763f81 100644 --- a/packages/core/src/components/Renderer/Renderer.test.tsx +++ b/packages/core/src/components/Renderer/Renderer.test.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { mockDocument, mockUtils } from '~test' -import { render } from '@testing-library/react' +import { act, render } from '@testing-library/react' import { Renderer } from './Renderer' import { action, makeAutoObservable } from 'mobx' import type { TLBinding, TLBounds, TLPage, TLPageState } from '~types' @@ -83,14 +83,15 @@ describe('When passing observables', () => { const wrapper = render() - // PageState - expect(wrapper.getByTestId('layer')).toHaveProperty( 'style.transform', `scale(1) translateX(0px) translateY(0px)` ) - pageState.pan([10, 10]) + act(() => { + // PageState + pageState.pan([10, 10]) + }) expect(wrapper.getByTestId('layer')).toHaveProperty( 'style.transform', @@ -109,7 +110,9 @@ describe('When passing observables', () => { rotate(0rad)` ) - page.moveShape('box1', [10, 10]) + act(() => { + page.moveShape('box1', [10, 10]) + }) expect(wrapper.getByTestId('container')).toHaveProperty( 'style.transform', diff --git a/packages/tldraw/src/Tldraw.tsx b/packages/tldraw/src/Tldraw.tsx index 7dfaab2d4..9b52c91ce 100644 --- a/packages/tldraw/src/Tldraw.tsx +++ b/packages/tldraw/src/Tldraw.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Renderer } from '@tldraw/core' -import { defineMessages, IntlConfig, IntlProvider } from 'react-intl' +import { IntlProvider } from 'react-intl' import { styled, dark } from '~styles' import { TDDocument, TDStatus } from '~types' import { TldrawApp, TDCallbacks } from '~state' @@ -443,9 +443,19 @@ const InnerTldraw = React.memo(function InnerTldraw({ const translation = useTranslation(settings.language) + // Put the theme on the body. This means that components with + // multiple editors cannot have different themes. + React.useLayoutEffect(() => { + if (settings.isDarkMode) { + window.document.body.classList.add(dark) + } else { + window.document.body.classList.remove(dark) + } + }, [settings.isDarkMode]) + return ( - + diff --git a/packages/tldraw/src/components/Primitives/DropdownMenu/DMContent.tsx b/packages/tldraw/src/components/Primitives/DropdownMenu/DMContent.tsx index f8a12f373..e0f90ed7d 100644 --- a/packages/tldraw/src/components/Primitives/DropdownMenu/DMContent.tsx +++ b/packages/tldraw/src/components/Primitives/DropdownMenu/DMContent.tsx @@ -10,9 +10,17 @@ export interface DMContentProps { sideOffset?: number children: React.ReactNode id?: string + side?: 'top' | 'left' | 'right' | 'bottom' | undefined } -export function DMContent({ sideOffset = 8, children, align, variant, id }: DMContentProps) { +export function DMContent({ + sideOffset = 8, + children, + align, + variant, + id, + side = 'bottom', +}: DMContentProps) { return ( {children} diff --git a/packages/tldraw/src/components/Primitives/DropdownMenu/DMSubMenu.tsx b/packages/tldraw/src/components/Primitives/DropdownMenu/DMSubMenu.tsx index 03f4b9b78..f72a7a6a6 100644 --- a/packages/tldraw/src/components/Primitives/DropdownMenu/DMSubMenu.tsx +++ b/packages/tldraw/src/components/Primitives/DropdownMenu/DMSubMenu.tsx @@ -20,8 +20,8 @@ export function DMSubMenu({ children, size, disabled = false, label, id }: DMSub {label} - - + + {children} diff --git a/packages/tldraw/src/components/Primitives/MenuContent/MenuContent.ts b/packages/tldraw/src/components/Primitives/MenuContent/MenuContent.ts index 3962faf04..ea49fc6d6 100644 --- a/packages/tldraw/src/components/Primitives/MenuContent/MenuContent.ts +++ b/packages/tldraw/src/components/Primitives/MenuContent/MenuContent.ts @@ -20,5 +20,17 @@ export const MenuContent = styled('div', { minWidth: 72, }, }, + overflow: { + true: { + maxHeight: '60vh', + overflowY: 'auto', + overflowX: 'hidden', + }, + }, + }, + '-ms-overflow-style': 'none' /* for Internet Explorer, Edge */, + scrollbarWidth: 'none', + '&::webkit-scrollbar': { + display: 'none', }, }) diff --git a/packages/tldraw/src/components/Primitives/RowButton/RowButton.tsx b/packages/tldraw/src/components/Primitives/RowButton/RowButton.tsx index 7ae43540c..61a5d377f 100644 --- a/packages/tldraw/src/components/Primitives/RowButton/RowButton.tsx +++ b/packages/tldraw/src/components/Primitives/RowButton/RowButton.tsx @@ -99,7 +99,8 @@ export const StyledRowButton = styled('button', { background: 'none', border: 'none', cursor: 'pointer', - height: '32px', + height: 32, + minHeight: 32, outline: 'none', color: '$text', fontFamily: '$ui', diff --git a/packages/tldraw/src/components/Primitives/TextField/TextField.tsx b/packages/tldraw/src/components/Primitives/TextField/TextField.tsx index 843804c90..96cbd4e97 100644 --- a/packages/tldraw/src/components/Primitives/TextField/TextField.tsx +++ b/packages/tldraw/src/components/Primitives/TextField/TextField.tsx @@ -30,6 +30,7 @@ const StyledInput = styled('input', { width: '100%', paddingLeft: '$3', paddingRight: '$6', + backgroundColor: '$background', height: '32px', outline: 'none', @@ -48,4 +49,5 @@ const StyledInputIcon = styled(SmallIcon, { paddingLeft: '$3', paddingRight: '$3', pointerEvents: 'none', + color: '$text', }) diff --git a/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx b/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx index c1ecbab22..e2318faec 100644 --- a/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx +++ b/packages/tldraw/src/components/ToolsPanel/ActionButton.tsx @@ -34,6 +34,8 @@ import { Divider } from '~components/Primitives/Divider' import { ToolButton } from '~components/Primitives/ToolButton' import { useIntl } from 'react-intl' +const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition + const selectedShapesCountSelector = (s: TDSnapshot) => s.document.pageStates[s.appState.currentPageId].selectedIds.length @@ -77,8 +79,6 @@ export function ActionButton() { const app = useTldrawApp() const intl = useIntl() - const isFrenchLang = navigator.language === 'fr' - const isAllLocked = app.useStore(isAllLockedSelector) const isAllAspectLocked = app.useStore(isAllAspectLockedSelector) @@ -91,6 +91,8 @@ export function ActionButton() { const selectedShapesCount = app.useStore(selectedShapesCountSelector) + const dockPosition = app.useStore(dockPositionState) + const hasTwoOrMore = selectedShapesCount > 1 const hasThreeOrMore = selectedShapesCount > 2 @@ -182,6 +184,8 @@ export function ActionButton() { [app] ) + const contentSide = dockPosition === 'bottom' || dockPosition === 'top' ? 'top' : dockPosition + return ( @@ -189,7 +193,7 @@ export function ActionButton() { - + <> diff --git a/packages/tldraw/src/components/ToolsPanel/BackToContent.tsx b/packages/tldraw/src/components/ToolsPanel/BackToContent.tsx index 125585eac..537594519 100644 --- a/packages/tldraw/src/components/ToolsPanel/BackToContent.tsx +++ b/packages/tldraw/src/components/ToolsPanel/BackToContent.tsx @@ -12,15 +12,33 @@ const isEmptyCanvasSelector = (s: TDSnapshot) => { ) } +const isDebugModeSelector = (s: TDSnapshot) => s.settings.isDebugMode +const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition + export const BackToContent = React.memo(function BackToContent() { const app = useTldrawApp() const isEmptyCanvas = app.useStore(isEmptyCanvasSelector) + const dockPosition = app.useStore(dockPositionState) + const isDebugMode = app.useStore(isDebugModeSelector) + + const style = { + bottom: + dockPosition === 'bottom' && isDebugMode + ? 120 + : dockPosition === 'bottom' + ? 80 + : isDebugMode + ? 60 + : 20, + left: '50%', + transform: 'translate(-50%,0)', + } if (!isEmptyCanvas) return null return ( - + Back to content ) @@ -30,7 +48,9 @@ const BackToContentContainer = styled(MenuContent, { pointerEvents: 'all', width: 'fit-content', minWidth: 0, - gridRow: 1, - flexGrow: 2, - display: 'block', + // gridRow: 1, + // flexGrow: 2, + // display: 'block', + position: 'fixed', + bottom: 0, }) diff --git a/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx b/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx index da85ef83d..b256448b7 100644 --- a/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx +++ b/packages/tldraw/src/components/ToolsPanel/PrimaryTools.tsx @@ -16,6 +16,7 @@ import { EraserIcon } from '~components/Primitives/icons' const activeToolSelector = (s: TDSnapshot) => s.appState.activeTool const toolLockedSelector = (s: TDSnapshot) => s.appState.isToolLocked +const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition export const PrimaryTools = React.memo(function PrimaryTools() { const app = useTldrawApp() @@ -24,6 +25,7 @@ export const PrimaryTools = React.memo(function PrimaryTools() { const activeTool = app.useStore(activeToolSelector) const isToolLocked = app.useStore(toolLockedSelector) + const dockPosition = app.useStore(dockPositionState) const selectSelectTool = React.useCallback(() => { app.selectTool('select') @@ -49,8 +51,10 @@ export const PrimaryTools = React.memo(function PrimaryTools() { app.selectTool(TDShapeType.Sticky) }, [app]) + const panelStyle = dockPosition === 'bottom' || dockPosition === 'top' ? 'row' : 'column' + return ( - + , } -const statusSelector = (s: TDSnapshot) => s.appState.status - enum Status { SpacePanning = 'spacePanning', } +const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition + export const ShapesMenu = React.memo(function ShapesMenu({ activeTool, isToolLocked, @@ -47,7 +47,7 @@ export const ShapesMenu = React.memo(function ShapesMenu({ const app = useTldrawApp() const intl = useIntl() - const status = app.useStore(statusSelector) + const dockPosition = app.useStore(dockPositionState) const [lastActiveTool, setLastActiveTool] = React.useState(TDShapeType.Rectangle) @@ -74,6 +74,9 @@ export const ShapesMenu = React.memo(function ShapesMenu({ }, []) const isActive = shapeShapes.includes(activeTool as ShapeShape) + const contentSide = dockPosition === 'bottom' || dockPosition === 'top' ? 'top' : dockPosition + + const panelStyle = dockPosition === 'bottom' || dockPosition === 'top' ? 'row' : 'column' return ( @@ -89,8 +92,8 @@ export const ShapesMenu = React.memo(function ShapesMenu({ {shapeShapeIcons[lastActiveTool]} - - + + {shapeShapes.map((shape, i) => ( s.settings.isDebugMode +const dockPositionState = (s: TDSnapshot) => s.settings.dockPosition interface ToolsPanelProps { onBlur?: React.FocusEventHandler @@ -17,12 +18,62 @@ interface ToolsPanelProps { export const ToolsPanel = React.memo(function ToolsPanel({ onBlur }: ToolsPanelProps) { const app = useTldrawApp() const isDebugMode = app.useStore(isDebugModeSelector) + const dockPosition = app.useStore(dockPositionState) + const isMobile = useMediaQuery('(max-width: 900px)') + + const bottomStyle = { + width: '100%', + height: 'min-content', + left: 0, + right: 0, + bottom: isDebugMode ? 40 : 0, + } + const topStyle = { + width: '100%', + height: 'min-content', + left: 0, + right: 0, + top: isMobile ? 60 : 10, + } + const rightStyle = { width: 'min-content', height: '100%', right: 0 } + const leftStyle = { width: 'min-content', height: '100%', left: 10 } + + const toolStyle = () => { + switch (dockPosition) { + case 'bottom': + return bottomStyle + case 'left': + return leftStyle + case 'right': + return rightStyle + case 'top': + return topStyle + default: + return bottomStyle + } + } + const style = toolStyle() + const centerWrapStyle = + dockPosition === 'bottom' || dockPosition === 'top' + ? { gridRow: 1, gridColumn: 2 } + : { gridRow: 2, gridColumn: 1 } + const primaryToolStyle = dockPosition === 'bottom' || dockPosition === 'top' ? 'row' : 'column' return ( - - + + - + @@ -39,9 +90,6 @@ export const ToolsPanel = React.memo(function ToolsPanel({ onBlur }: ToolsPanelP const StyledToolsPanelContainer = styled('div', { position: 'absolute', - bottom: 0, - left: 0, - right: 0, width: '100%', minWidth: 0, maxWidth: '100%', @@ -70,8 +118,12 @@ const StyledCenterWrap = styled('div', { }) const StyledStatusWrap = styled('div', { - gridRow: 2, - gridColumn: '1 / span 3', + position: 'fixed', + bottom: 0, + left: 0, + right: 0, + width: '100%', + maxWidth: '100%', }) const StyledPrimaryTools = styled('div', { diff --git a/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx b/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx index c4b2e468e..16097b570 100644 --- a/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/LanguageMenu/LanguageMenu.tsx @@ -1,36 +1,52 @@ +import { ExternalLinkIcon } from '@radix-ui/react-icons' import * as React from 'react' -import { useIntl } from 'react-intl' -import { DMCheckboxItem, DMSubMenu } from '~components/Primitives/DropdownMenu' +import { FormattedMessage, useIntl } from 'react-intl' +import { DMCheckboxItem, DMDivider, DMItem, DMSubMenu } from '~components/Primitives/DropdownMenu' +import { HeartIcon } from '~components/Primitives/icons/HeartIcon' +import { SmallIcon } from '~components/Primitives/SmallIcon' import { useTldrawApp } from '~hooks' import { TDLanguage, TRANSLATIONS } from '~translations' import { TDSnapshot } from '~types' -const settingsSelector = (s: TDSnapshot) => s.settings +const languageSelector = (s: TDSnapshot) => s.settings.language export function LanguageMenu() { const app = useTldrawApp() - const setting = app.useStore(settingsSelector) + const language = app.useStore(languageSelector) const intl = useIntl() const handleChangeLanguage = React.useCallback( - (code: TDLanguage) => { - app.setSetting('language', code) + (locale: TDLanguage) => { + app.setSetting('language', locale) }, [app] ) return ( - {TRANSLATIONS.map(({ code, label }) => ( + {TRANSLATIONS.map(({ locale, label }) => ( handleChangeLanguage(code)} - id={`TD-MenuItem-Language-${code}`} + key={locale} + checked={language === locale} + onCheckedChange={() => handleChangeLanguage(locale)} + id={`TD-MenuItem-Language-${locale}`} > {label} ))} + + + + + + + + + ) } diff --git a/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx b/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx index 67f56bd3c..5f19a6b5f 100644 --- a/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx +++ b/packages/tldraw/src/components/TopPanel/PageOptionsDialog/PageOptionsDialog.tsx @@ -191,7 +191,7 @@ export const StyledDialogContent = styled(Dialog.Content, { marginTop: '-5vh', pointerEvents: 'all', backgroundColor: '$panel', - padding: '$0', + padding: '$1', borderRadius: '$2', font: '$ui', '&:focus': { diff --git a/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx b/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx index 7b3969fd7..f2b3587ef 100644 --- a/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx +++ b/packages/tldraw/src/components/TopPanel/PreferencesMenu/PreferencesMenu.tsx @@ -2,10 +2,13 @@ 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' +import { TDDockPosition, TDSnapshot } from '~types' +import { styled } from '~styles' const settingsSelector = (s: TDSnapshot) => s.settings +const DockPosition = ['bottom', 'left', 'right', 'top'] + export function PreferencesMenu() { const app = useTldrawApp() const intl = useIntl() @@ -52,6 +55,13 @@ export function PreferencesMenu() { app.setSetting('isCadSelectMode', (v) => !v) }, [app]) + const handleChangeDockPosition = React.useCallback( + (position: TDDockPosition) => { + app.setSetting('dockPosition', position) + }, + [app] + ) + return ( + + {DockPosition.map((position) => ( + handleChangeDockPosition(position as TDDockPosition)} + id={`TD-MenuItem-DockPosition-${position}`} + > + + + + + ))} + ) } + +const StyledText = styled('span', { + textTransform: 'capitalize', +}) diff --git a/packages/tldraw/src/hooks/index.ts b/packages/tldraw/src/hooks/index.ts index b55955477..b81b6b17f 100644 --- a/packages/tldraw/src/hooks/index.ts +++ b/packages/tldraw/src/hooks/index.ts @@ -5,3 +5,4 @@ export * from './useStylesheet' export * from './useFileSystemHandlers' export * from './useFileSystem' export * from './useTranslation' +export * from './useMediaQuery' diff --git a/packages/tldraw/src/hooks/useMediaQuery.ts b/packages/tldraw/src/hooks/useMediaQuery.ts new file mode 100644 index 000000000..19a83c413 --- /dev/null +++ b/packages/tldraw/src/hooks/useMediaQuery.ts @@ -0,0 +1,19 @@ +import * as React from 'react' + +export function useMediaQuery(query: string) { + const [matches, setMatches] = React.useState(false) + + React.useEffect(() => { + const media = window.matchMedia(query) + if (media.matches !== matches) { + setMatches(media.matches) + } + const listener = () => setMatches(media.matches) + window.addEventListener('resize', listener) + return () => window.removeEventListener('resize', listener) + }, [matches, query]) + + return matches +} + +export default useMediaQuery diff --git a/packages/tldraw/src/hooks/useTranslation.ts b/packages/tldraw/src/hooks/useTranslation.ts index 7d27d33dd..fca19ff91 100644 --- a/packages/tldraw/src/hooks/useTranslation.ts +++ b/packages/tldraw/src/hooks/useTranslation.ts @@ -1,10 +1,8 @@ import * as React from 'react' import { getTranslation, TDLanguage } from '../translations/translations' -export function useTranslation(code?: TDLanguage) { +export function useTranslation(locale?: TDLanguage) { return React.useMemo(() => { - const locale = code ?? navigator.language.split(/[-_]/)[0] - - return getTranslation(locale) - }, [code]) + return getTranslation(locale ?? navigator.language.split(/[-_]/)[0]) + }, [locale]) } diff --git a/packages/tldraw/src/state/TldrawApp.ts b/packages/tldraw/src/state/TldrawApp.ts index 29cf9987c..0ef52fd28 100644 --- a/packages/tldraw/src/state/TldrawApp.ts +++ b/packages/tldraw/src/state/TldrawApp.ts @@ -4168,6 +4168,7 @@ export class TldrawApp extends StateManager { showCloneHandles: false, showGrid: false, language: 'en', + dockPosition: 'bottom', }, appState: { status: TDStatus.Idle, diff --git a/packages/tldraw/src/state/__snapshots__/TldrawApp.spec.ts.snap b/packages/tldraw/src/state/__snapshots__/TldrawApp.spec.ts.snap index 9c20987d6..cd16ac0a4 100644 --- a/packages/tldraw/src/state/__snapshots__/TldrawApp.spec.ts.snap +++ b/packages/tldraw/src/state/__snapshots__/TldrawApp.spec.ts.snap @@ -53,6 +53,7 @@ TldrawTestApp { "version": 15.3, }, "settings": Object { + "dockPosition": "bottom", "isCadSelectMode": false, "isDarkMode": false, "isDebugMode": false, @@ -203,6 +204,7 @@ TldrawTestApp { "version": 15.3, }, "settings": Object { + "dockPosition": "bottom", "isCadSelectMode": false, "isDarkMode": false, "isDebugMode": false, @@ -374,6 +376,7 @@ TldrawTestApp { "version": 15.3, }, "settings": Object { + "dockPosition": "bottom", "isCadSelectMode": false, "isDarkMode": false, "isDebugMode": false, diff --git a/packages/tldraw/src/translations/ar.json b/packages/tldraw/src/translations/ar.json index 1974edb06..1a2387c22 100644 --- a/packages/tldraw/src/translations/ar.json +++ b/packages/tldraw/src/translations/ar.json @@ -86,5 +86,10 @@ "forward": "للخلف", "backward": "للوراء", "back": "خلف", - "language": "لغة" -} \ No newline at end of file + "language": "لغة", + "dock.position": "موقع الادوات", + "bottom": "اسفل", + "left": "يسار", + "right": "يمين", + "top": "أعلى" +} diff --git a/packages/tldraw/src/translations/en.json b/packages/tldraw/src/translations/en.json new file mode 100644 index 000000000..9e26dfeeb --- /dev/null +++ b/packages/tldraw/src/translations/en.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/packages/tldraw/src/translations/fa.json b/packages/tldraw/src/translations/fa.json index 8a25da3a2..82610179b 100644 --- a/packages/tldraw/src/translations/fa.json +++ b/packages/tldraw/src/translations/fa.json @@ -18,7 +18,7 @@ "menu.preferences": "تنظیم‌ها", "menu.sign.in": "ورود", "menu.sign.out": "خروج", - "sponsored": "حمایت‌شده", + "sponsored": "حامیان", "become.a.sponsor": " حامی شو", "zoom.to.selection": "نمایش انتخاب‌شده‌ها", "zoom.to.fit": "نمایش کل صفحه", diff --git a/packages/tldraw/src/translations/fr.json b/packages/tldraw/src/translations/fr.json index 9cb9c19a2..c3af4bfef 100644 --- a/packages/tldraw/src/translations/fr.json +++ b/packages/tldraw/src/translations/fr.json @@ -87,5 +87,10 @@ "forward": "Au premier plan", "backward": "En arrière plan", "back": "À l'arrière", - "language": "Langage" -} \ No newline at end of file + "language": "Langage", + "dock.position": "Position du dock", + "bottom": "En bas", + "left": "À Gauche", + "right": "À Droite", + "top": "En Haut" +} diff --git a/packages/tldraw/src/translations/he.json b/packages/tldraw/src/translations/he.json new file mode 100644 index 000000000..d53affac1 --- /dev/null +++ b/packages/tldraw/src/translations/he.json @@ -0,0 +1,90 @@ +{ + "style.menu.color": "צבע", + "style.menu.fill": "מלא", + "style.menu.dash": "גבול", + "style.menu.size": "גודל", + "style.menu.keep.open": "השאר פתוח", + "style.menu.font": "גופן", + "style.menu.align": "יישור", + "styles": "עיצוב", + "zoom.in": "הגדל תצוגה", + "zoom.out": "הקטן תצוגה", + "to": "ל", + "to.selection": "לסימון", + "to.fit": "להתאמה", + "menu.file": "קובץ", + "menu.edit": "עריכה", + "menu.view": "תצוגה", + "menu.preferences": "מאפיינים", + "menu.sign.in": "הירשם", + "menu.sign.out": "התנתק", + "sponsored": "חסות", + "become.a.sponsor": "מתן חסות", + "zoom.to.selection": "זום לבחירה", + "zoom.to.fit": "זום להתאמה", + "zoom.to": "זום ל", + "preferences.dark.mode": "מצב חשוך", + "preferences.focus.mode": "מצב פוקוס", + "preferences.debug.mode": "מצב דיבאג", + "preferences.show.grid": "(גריד)הראה רשת עימוד", + "preferences.use.cad.selection": "סימון CAD", + "preferences.keep.stylemenu.open": "השאר תפריט עיצוב פתוח", + "preferences.always.show.snaps": "הראה קווי מתאר", + "preferences.rotate.handles": "הראה ידיות סיבוב", + "preferences.binding.handles": "הראה ידיות קשירה", + "preferences.clone.handles": "הראה ידיות שיכפול", + "undo": "בטל", + "redo": "עשה מחדש", + "cut": "גזור", + "copy": "העתק", + "paste": "הדבק", + "copy.as": "העתק כ", + "export.as": "ייצא כ", + "select.all": "בחר הכל", + "select.none": "בטל בחירה", + "delete": "מחק", + "new.project": "פרויקט חדש", + "open": "פתח", + "save": "שמור", + "save.as": "שמור כ", + "upload.media": "העלאת מדיה", + "create.page": "צור דף", + "new.page": "דף חדש", + "page.name": "שם הדף", + "duplicate": "שכפל", + "cancel": "בטל", + "copy.invite.link": "העתק קישור הזמנה", + "create.multiplayer.project": "צור פרויקט רב משתתפים", + "copy.multiplayer.project": "העתק לפרויקט רב משתתפים", + "select": "סמן", + "eraser": "מחק", + "draw": "צייר", + "arrow": "חץ", + "text": "טקסט", + "sticky": "דביקי", + "Rectangle": "מרובע", + "Ellipse": "אליפסה", + "Triangle": "משולש", + "Line": "קו", + "rotate": "סובב", + "lock.aspect.ratio": "נעל יחס רוחב-גובה", + "unlock.aspect.ratio": "שחרר נעילת יחס רוחב-גובה", + "group": "קבץ", + "ungroup": "בטל קיבוץ", + "move.to.back": "הבא לתחתית", + "move.backward": "הזז אחורה", + "move.forward": "הזז קדימה", + "move.to.front": "הבא לחזית", + "reset.angle": "אפס זווית", + "lock": "נעל", + "unlock": "שחרר נעילה", + "move.to.page": "הזז לדף", + "flip.horizontal": "הפוך אופקית", + "flip.vertical": "הפוך אנכית", + "move": "הזז", + "to.front": "הבא לקדימה", + "forward": "קדימה", + "backward": "אחורה", + "back": "בחזרה", + "language": "שפה" + } \ No newline at end of file diff --git a/packages/tldraw/src/translations/it.json b/packages/tldraw/src/translations/it.json index 2921678a6..b653feb9f 100644 --- a/packages/tldraw/src/translations/it.json +++ b/packages/tldraw/src/translations/it.json @@ -87,5 +87,10 @@ "forward": "Sposta avanti", "backward": "Sposta indietro", "back": "In fondo", - "language": "Lingua" -} \ No newline at end of file + "language": "Lingua", + "dock.position": "Posizione dock", + "bottom": "In basso", + "left": "Sinistra", + "right": "Destra", + "top": "In Alto" +} diff --git a/packages/tldraw/src/translations/main.json b/packages/tldraw/src/translations/main.json index 90b204514..dba9b8c1f 100644 --- a/packages/tldraw/src/translations/main.json +++ b/packages/tldraw/src/translations/main.json @@ -51,7 +51,6 @@ "create.page": "Create Page", "new.page": "New Page", "page.name": "Page Name", - "page": "Page", "duplicate": "Duplicate", "cancel": "Cancel", "copy.invite.link": "Copy Invite Link", @@ -87,5 +86,11 @@ "forward": "Forward", "backward": "Backward", "back": "Back", - "language": "Language" + "language": "Language", + "translation.link": "Learn More", + "dock.position": "Dock Position", + "bottom": "Bottom", + "left": "Left", + "right": "Right", + "top": "Top" } \ No newline at end of file diff --git a/packages/tldraw/src/translations/translations.ts b/packages/tldraw/src/translations/translations.ts index 617a6df2e..7fdc119fd 100644 --- a/packages/tldraw/src/translations/translations.ts +++ b/packages/tldraw/src/translations/translations.ts @@ -1,19 +1,22 @@ import ar from './ar.json' import da from './da.json' import de from './de.json' -import en from './main.json' +import en from './en.json' import es from './es.json' import fa from './fa.json' import fr from './fr.json' +import he from './he.json' import it from './it.json' import ja from './ja.json' import ko_kr from './ko-kr.json' +import main from './main.json' import ne from './ne.json' import no from './no.json' import pl from './pl.json' import pt_br from './pt-br.json' import ru from './ru.json' import tr from './tr.json' +import uk from './uk.json' import zh_cn from './zh-cn.json' // The default language (english) must have a value for every message. @@ -22,49 +25,50 @@ import zh_cn from './zh-cn.json' // translation instead. export const TRANSLATIONS: TDTranslations = [ - { code: 'ar', locale: 'ar', label: 'عربي', messages: ar }, - { code: 'en', locale: 'en', label: 'English', messages: en }, - { code: 'es', locale: 'es', label: 'Español', messages: es }, - { code: 'fr', locale: 'fr', label: 'Français', messages: fr }, - { code: 'fa', locale:'fa', label: 'فارسی', messages: fa }, - { code: 'it', locale: 'it', label: 'Italiano', messages: it }, - { code: 'ja', locale: 'ja', label: '日本語', messages: ja }, - { code: 'ko-kr', locale: 'ko-kr', label: '한국어', messages: ko_kr }, - { code: 'ne', locale: 'ne', label: 'नेपाली', messages: ne }, - { code: 'no', locale: 'no', label: 'Norwegian', messages: no }, - { code: 'pl', locale: 'pl', label: 'Polski', messages: pl }, - { code: 'pt-br', locale: 'pt-br', label: 'Português - Brasil', messages: pt_br }, - { code: 'tr', locale: 'tr', label: 'Türkçe', messages: tr }, - { code: 'zh-cn', locale: 'zh-ch', label: 'Chinese - Simplified', messages: zh_cn }, - { code: 'da', locale: 'da', label: 'Danish', messages: da }, - { code: 'de', locale: 'de', label: 'Deutsch', messages: de}, - { code: 'ru', locale: 'ru', label: 'Russian', messages: ru }, + { locale: 'ar', label: 'عربي', messages: ar }, + { locale: 'da', label: 'Danish', messages: da }, + { locale: 'de', label: 'Deutsch', messages: de }, + { locale: 'en', label: 'English', messages: en }, + { locale: 'es', label: 'Español', messages: es }, + { locale: 'fa', label: 'فارسی', messages: fa }, + { locale: 'fr', label: 'Français', messages: fr }, + { locale: 'he', label: 'עברית', messages: he }, + { locale: 'it', label: 'Italiano', messages: it }, + { locale: 'ja', label: '日本語', messages: ja }, + { locale: 'ko-kr', label: '한국어', messages: ko_kr }, + { locale: 'ne', label: 'नेपाली', messages: ne }, + { locale: 'no', label: 'Norwegian', messages: no }, + { locale: 'pl', label: 'Polski', messages: pl }, + { locale: 'pt-br', label: 'Português - Brasil', messages: pt_br }, + { locale: 'ru', label: 'Russian', messages: ru }, + { locale: 'tr', label: 'Türkçe', messages: tr }, + { locale: 'uk', label: 'Ukrainian', messages: uk }, + { locale: 'zh-ch', label: 'Chinese - Simplified', messages: zh_cn }, ] /* ----------------- (do not change) ---------------- */ -TRANSLATIONS.sort((a, b) => (a.code < b.code ? -1 : 1)) +TRANSLATIONS.sort((a, b) => (a.locale < b.locale ? -1 : 1)) export type TDTranslation = { - readonly code: string - readonly label: string readonly locale: string + readonly label: string readonly messages: Partial } export type TDTranslations = TDTranslation[] -export type TDLanguage = TDTranslations[number]['code'] +export type TDLanguage = TDTranslations[number]['locale'] -export function getTranslation(code: TDLanguage): TDTranslation { - const translation = TRANSLATIONS.find((t) => t.code === code) +export function getTranslation(locale: TDLanguage): TDTranslation { + const translation = TRANSLATIONS.find((t) => t.locale === locale) - const defaultTranslation = TRANSLATIONS.find((t) => t.code === 'en')! - - const messages = { - ...defaultTranslation.messages, - ...translation?.messages, + return { + locale, + label: translation?.label ?? locale, + messages: { + ...main, + ...translation?.messages, + }, } - - return { code, messages, locale: code, label: translation?.label ?? code } -} \ No newline at end of file +} diff --git a/packages/tldraw/src/translations/uk.json b/packages/tldraw/src/translations/uk.json new file mode 100644 index 000000000..709a0434e --- /dev/null +++ b/packages/tldraw/src/translations/uk.json @@ -0,0 +1,90 @@ +{ + "style.menu.color": "Колір", + "style.menu.fill": "Заповнювати", + "style.menu.dash": "Штрих", + "style.menu.size": "Розмір", + "style.menu.keep.open": "Тримати відкритим", + "style.menu.font": "Шрифт", + "style.menu.align": "Вирівняти", + "styles": "Стиль", + "zoom.in": "Збільшити", + "zoom.out": "Зменшити", + "to": "до", + "to.selection": "До виділення", + "to.fit": "За розміром екрану", + "menu.file": "Файл", + "menu.edit": "Редагування", + "menu.view": "Вигляд", + "menu.preferences": "Налаштування", + "menu.sign.in": "Увійти", + "menu.sign.out": "Вийти", + "sponsored": "Спонсовано", + "become.a.sponsor": "Стати спонсором", + "zoom.to.selection": "Наблизити до виділення", + "zoom.to.fit": "Збільшити за розміром екрану", + "zoom.to": "Наблизити до", + "preferences.dark.mode": "Темна тема", + "preferences.focus.mode": "Мінімалістичний режим", + "preferences.debug.mode": "Режим налагодження", + "preferences.show.grid": "Показати сітку", + "preferences.use.cad.selection": "Використовувати CAD виділення", + "preferences.keep.stylemenu.open": "Тримати меню стилів відкритим", + "preferences.always.show.snaps": "Завжди показувати прив'язки", + "preferences.rotate.handles": "Ручки обертання", + "preferences.binding.handles": "Ручки прив'язки", + "preferences.clone.handles": "Ручки клонування", + "undo": "Скасувати", + "redo": "Повторити", + "cut": "Вирізати", + "copy": "Скопіювати", + "paste": "Вставити", + "copy.as": "Скопіювати як", + "export.as": "Експортувати як", + "select.all": "Обрати все", + "select.none": "Зняти виділення", + "delete": "Видалити", + "new.project": "Новий проект", + "open": "Відкрити", + "save": "Зберегти", + "save.as": "Зберегти як", + "upload.media": "Завантажити медіа", + "create.page": "Створити сторінку", + "new.page": "Нова сторінка", + "page.name": "Назва сторінки", + "duplicate": "Дублювати", + "cancel": "Скасувати", + "copy.invite.link": "Скопіювати посилання на запрошення", + "create.multiplayer.project": "Створити багатокористувацький проект", + "copy.multiplayer.project": "Скопіювати в багатокористувацький проект", + "select": "Вибирати", + "eraser": "Ластик", + "draw": "Малювати", + "arrow": "Стрілка", + "text": "Текст", + "sticky": "Нотатка", + "Rectangle": "Прямокутник", + "Ellipse": "Еліпс", + "Triangle": "Трикутник", + "Line": " Лінія", + "rotate": "Повернути", + "lock.aspect.ratio": "Заблокувати співвідношення сторін", + "unlock.aspect.ratio": " Розблокувати співвідношення сторін", + "group": "Згрупувати", + "ungroup": " Розгрупувати", + "move.to.back": "Перемістити назад", + "move.backward": "Перемістити на задній план", + "move.forward": "Перемістити вперед", + "move.to.front": "Перемістити на передній план", + "reset.angle": "Скидання кута", + "lock": "Блокування", + "unlock": " Розблокування", + "move.to.page": "Перейти на сторінку", + "flip.horizontal": "Перевернути горизонтально", + "flip.vertical": "Перевернути вертикально", + "move": "Перемістити", + "to.front": "На передній план", + "forward": " Вперед", + "backward": "На задній план", + "back": "Назад", + "language": "Мова" +} diff --git a/packages/tldraw/src/types.ts b/packages/tldraw/src/types.ts index cfece20e0..696ecf9f3 100644 --- a/packages/tldraw/src/types.ts +++ b/packages/tldraw/src/types.ts @@ -77,6 +77,8 @@ export class TDEventHandler { onShapeClone?: TLShapeCloneHandler } +export type TDDockPosition = 'bottom' | 'left' | 'right' | 'top' + // The shape of the TldrawApp's React (zustand) store export interface TDSnapshot { settings: { @@ -96,6 +98,7 @@ export interface TDSnapshot { showCloneHandles: boolean showGrid: boolean language: TDLanguage + dockPosition: TDDockPosition } appState: { currentStyle: ShapeStyles diff --git a/setupTests.ts b/setupTests.ts index 8bd806966..df68d0744 100644 --- a/setupTests.ts +++ b/setupTests.ts @@ -1,3 +1,17 @@ import '@testing-library/jest-dom/extend-expect' import 'fake-indexeddb/auto' global.ResizeObserver = require('resize-observer-polyfill') + +Object.defineProperty(window, 'matchMedia', { + writable: true, + value: jest.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // Deprecated + removeListener: jest.fn(), // Deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +})