Compare commits

...

142 Commits

Author SHA1 Message Date
Panayiotis Lipiridis 105f7fdaad chore: Update to the latest Cascadia and remove ttf 2021-02-28 19:11:36 +02:00
Lipis 053353841a feat: Use the latest version of Virgil (#3124) 2021-02-28 13:22:32 +01:00
dependabot[bot] 286642ffcf chore(deps-dev): bump mini-css-extract-plugin from 1.3.8 to 1.3.9 in /src/packages/excalidraw (#3129)
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 1.3.8 to 1.3.9.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v1.3.8...v1.3.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:49:29 +02:00
dependabot[bot] 7090938ec1 chore(deps-dev): bump css-loader from 5.0.2 to 5.1.0 in /src/packages/excalidraw (#3141)
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v5.0.2...v5.1.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:48:34 +02:00
dependabot[bot] 6233bc52e3 chore(deps): bump browser-fs-access from 0.13.1 to 0.14.0 (#3140)
Bumps [browser-fs-access](https://github.com/GoogleChromeLabs/browser-fs-access) from 0.13.1 to 0.14.0.
- [Release notes](https://github.com/GoogleChromeLabs/browser-fs-access/releases)
- [Commits](https://github.com/GoogleChromeLabs/browser-fs-access/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 09:14:23 +00:00
dependabot[bot] 7f8ee06710 chore(deps-dev): bump @babel/preset-env from 7.13.5 to 7.13.8 in /src/packages/utils (#3135)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.5 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:13:30 +02:00
dependabot[bot] 3e200634e0 chore(deps-dev): bump @babel/plugin-transform-runtime from 7.12.17 to 7.13.8 in /src/packages/utils (#3133)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.17 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:13:01 +02:00
dependabot[bot] 701b02d6df chore(deps-dev): bump webpack from 5.24.1 to 5.24.2 in /src/packages/excalidraw (#3131)
Bumps [webpack](https://github.com/webpack/webpack) from 5.24.1 to 5.24.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.24.1...v5.24.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 09:12:30 +00:00
dependabot[bot] 535b2b682e chore(deps-dev): bump @babel/plugin-transform-runtime from 7.12.17 to 7.13.8 in /src/packages/excalidraw (#3130)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.17 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:11:47 +02:00
dependabot[bot] 1a4a736d94 chore(deps-dev): bump webpack from 5.24.1 to 5.24.2 in /src/packages/utils (#3137)
Bumps [webpack](https://github.com/webpack/webpack) from 5.24.1 to 5.24.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.24.1...v5.24.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:11:36 +02:00
dependabot[bot] bb207ef861 chore(deps-dev): bump @babel/core from 7.13.1 to 7.13.8 in /src/packages/utils (#3134)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.1 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:04:30 +02:00
dependabot[bot] 2fcbf8658f chore(deps-dev): bump @babel/core from 7.13.1 to 7.13.8 in /src/packages/excalidraw (#3128)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.13.1 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:04:08 +02:00
dependabot[bot] 6a8c6e7f47 chore(deps-dev): bump css-loader from 5.0.2 to 5.1.0 in /src/packages/utils (#3136)
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 5.0.2 to 5.1.0.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v5.0.2...v5.1.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:03:55 +02:00
dependabot[bot] f962503425 chore(deps-dev): bump @babel/preset-env from 7.13.5 to 7.13.8 in /src/packages/excalidraw (#3132)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.13.5 to 7.13.8.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.8/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:03:34 +02:00
dependabot[bot] 02fdc506ee chore(deps-dev): bump eslint-config-prettier from 8.0.0 to 8.1.0 (#3138)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 8.0.0 to 8.1.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v8.0.0...v8.1.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-28 11:02:59 +02:00
Lipis 2ba6088e97 chore: Use @excalidraw/prettier-config (#3122) 2021-02-25 19:26:27 +01:00
Arun 4e421e6e9e feat: Support exporting with dark mode (#3046)
Co-authored-by: Lipis <lipiridis@gmail.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
2021-02-24 15:22:17 +01:00
dependabot[bot] d213dbb42d chore(deps-dev): bump eslint-config-prettier from 7.2.0 to 8.0.0 (#3119)
Bumps [eslint-config-prettier](https://github.com/prettier/eslint-config-prettier) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/prettier/eslint-config-prettier/releases)
- [Changelog](https://github.com/prettier/eslint-config-prettier/blob/main/CHANGELOG.md)
- [Commits](https://github.com/prettier/eslint-config-prettier/compare/v7.2.0...v8.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 13:56:32 +02:00
dependabot[bot] a5779dd5d8 chore(deps-dev): bump @babel/plugin-transform-arrow-functions (#3107)
Bumps [@babel/plugin-transform-arrow-functions](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-arrow-functions) from 7.12.13 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-arrow-functions)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:55:24 +00:00
dependabot[bot] 628b4c1eec chore(deps-dev): bump @babel/preset-env in /src/packages/excalidraw (#3109)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.17 to 7.13.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.5/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:50:49 +00:00
dependabot[bot] 31333e597b chore(deps-dev): bump @babel/core in /src/packages/utils (#3113)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.17 to 7.13.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.1/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:50:25 +00:00
dependabot[bot] 872b340f1b chore(deps-dev): bump @babel/plugin-transform-typescript (#3104)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.17 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:49:56 +00:00
dependabot[bot] 83e8167adf chore(deps-dev): bump @babel/core in /src/packages/excalidraw (#3110)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.17 to 7.13.1.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.1/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:44:24 +00:00
dependabot[bot] baea88942c chore(deps-dev): bump @babel/preset-typescript (#3116)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.17 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:43:40 +00:00
dependabot[bot] ae35037a3b chore(deps-dev): bump @babel/plugin-transform-arrow-functions (#3102)
Bumps [@babel/plugin-transform-arrow-functions](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-arrow-functions) from 7.12.13 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-arrow-functions)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:37:52 +00:00
dependabot[bot] 4f31ae1e4b chore(deps-dev): bump webpack in /src/packages/excalidraw (#3117)
Bumps [webpack](https://github.com/webpack/webpack) from 5.23.0 to 5.24.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.23.0...v5.24.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:37:04 +00:00
dependabot[bot] 704ee30ae6 chore(deps-dev): bump @babel/preset-typescript in /src/packages/utils (#3103)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.17 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:33:12 +00:00
dependabot[bot] 176baef9c2 chore(deps-dev): bump @babel/plugin-transform-async-to-generator (#3112)
Bumps [@babel/plugin-transform-async-to-generator](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-async-to-generator) from 7.12.13 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-async-to-generator)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:31:57 +00:00
dependabot[bot] 3558f07fe0 chore(deps): bump react-scripts from 4.0.2 to 4.0.3 (#3114)
Bumps [react-scripts](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-scripts) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-scripts@4.0.3/packages/react-scripts)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:29:46 +00:00
dependabot[bot] fd24c74ab1 chore(deps-dev): bump firebase-tools from 9.4.0 to 9.5.0 (#3115)
Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 9.4.0 to 9.5.0.
- [Release notes](https://github.com/firebase/firebase-tools/releases)
- [Commits](https://github.com/firebase/firebase-tools/compare/v9.4.0...v9.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:22:02 +00:00
dependabot[bot] ae6892501d chore(deps-dev): bump @babel/plugin-transform-typescript (#3105)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.17 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:19:06 +00:00
dependabot[bot] 1e6adaf0b5 chore(deps-dev): bump webpack in /src/packages/utils (#3106)
Bumps [webpack](https://github.com/webpack/webpack) from 5.23.0 to 5.24.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.23.0...v5.24.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:18:21 +00:00
dependabot[bot] 7ccd38a37f chore(deps-dev): bump @babel/plugin-transform-async-to-generator (#3111)
Bumps [@babel/plugin-transform-async-to-generator](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-async-to-generator) from 7.12.13 to 7.13.0.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.0/packages/babel-plugin-transform-async-to-generator)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:18:03 +00:00
dependabot[bot] e6ce9e0ea7 chore(deps-dev): bump @babel/preset-env in /src/packages/utils (#3108)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.17 to 7.13.5.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.13.5/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-24 10:17:31 +00:00
Lipis c0e05445b1 chore: Consistent job names in GH actions (#3099) 2021-02-24 12:12:19 +02:00
Lipis b44531d94a chore: Remove -- (leftovers from Yarn switch) (#3097) 2021-02-23 15:11:36 +05:30
Aakansha Doshi 464c2cc05e docs: minor readme/changelog changes (#3098)
* docs: minor readme/changelog changes

* Update src/packages/excalidraw/README.md

* Update src/packages/excalidraw/README.md

* fix

* Update src/packages/excalidraw/README.md

Co-authored-by: David Luzar <luzar.david@gmail.com>
2021-02-23 01:55:26 +05:30
dependabot[bot] bd13c2ed48 chore(deps-dev): bump @babel/plugin-transform-typescript (#3079)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:19:34 +00:00
dependabot[bot] 2e58aaae66 chore(deps-dev): bump webpack in /src/packages/utils (#3083)
Bumps [webpack](https://github.com/webpack/webpack) from 5.21.2 to 5.23.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.21.2...v5.23.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:14:05 +00:00
dependabot[bot] d4c14d484c chore(deps-dev): bump @babel/plugin-transform-runtime (#3078)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.15 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:13:36 +00:00
dependabot[bot] 06d1871640 chore(deps-dev): bump @babel/preset-typescript (#3080)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:13:32 +00:00
dependabot[bot] e7a59335e4 chore(deps-dev): bump @babel/plugin-transform-typescript (#3074)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:09:04 +00:00
dependabot[bot] 0dbef18044 chore(deps-dev): bump @babel/preset-typescript in /src/packages/utils (#3081)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:08:43 +00:00
dependabot[bot] e16c2d592f chore(deps-dev): bump @babel/core in /src/packages/excalidraw (#3073)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 09:08:23 +00:00
dependabot[bot] 1f4cf4610f chore(deps-dev): bump mini-css-extract-plugin (#3076)
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 1.3.6 to 1.3.8.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v1.3.6...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:07:11 +02:00
dependabot[bot] 1bee959660 chore(deps-dev): bump @babel/plugin-transform-runtime (#3077)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.15 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:04:05 +02:00
dependabot[bot] f609a4ac3a chore(deps-dev): bump @babel/preset-env in /src/packages/excalidraw (#3082)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:03:39 +02:00
dependabot[bot] eee9d1bc16 chore(deps-dev): bump @babel/core in /src/packages/utils (#3075)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:02:59 +02:00
dependabot[bot] ecdc2582e9 chore(deps-dev): bump webpack in /src/packages/excalidraw (#3072)
Bumps [webpack](https://github.com/webpack/webpack) from 5.21.2 to 5.23.0.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.21.2...v5.23.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:02:35 +02:00
dependabot[bot] 245e13a884 chore(deps-dev): bump @babel/preset-env in /src/packages/utils (#3084)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.16 to 7.12.17.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.17/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 11:01:52 +02:00
dependabot[bot] 8a322b22ed chore(deps): bump @sentry/browser from 6.1.0 to 6.2.0 (#3087)
Bumps [@sentry/browser](https://github.com/getsentry/sentry-javascript) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/6.1.0...6.2.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 08:53:11 +00:00
dependabot[bot] 3f784d76fc chore(deps-dev): bump firebase-tools from 9.3.0 to 9.4.0 (#3086)
Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 9.3.0 to 9.4.0.
- [Release notes](https://github.com/firebase/firebase-tools/releases)
- [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-tools/compare/v9.3.0...v9.4.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 10:27:43 +02:00
dependabot[bot] ba5afe9139 chore(deps): bump firebase from 8.2.7 to 8.2.9 (#3088)
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 8.2.7 to 8.2.9.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@8.2.7...firebase@8.2.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 10:26:46 +02:00
dependabot[bot] 9e6f351672 chore(deps): bump @sentry/integrations from 6.1.0 to 6.2.0 (#3085)
Bumps [@sentry/integrations](https://github.com/getsentry/sentry-javascript) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/getsentry/sentry-javascript/releases)
- [Changelog](https://github.com/getsentry/sentry-javascript/blob/master/CHANGELOG.md)
- [Commits](https://github.com/getsentry/sentry-javascript/compare/6.1.0...6.2.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-22 10:26:18 +02:00
Aakansha Doshi fcd10a6a43 chore: use yarn for packages (#3092) 2021-02-22 08:41:51 +05:30
Aakansha Doshi 3bc18f6aed feat: expose variable window.EXCALIDRAW_ASSET_PATH to allow host define the path for excalidraw assets (#3068)
* feat: expose variable window.EXCALIDRAW_ASSET_PATH to allow host define the path for excalidraw assets
No more __webpack_public_path__ needed explicitly in host and it will default to unpkg cdn if window.EXCALIDRAW_ASSET_PATH is not defined

* fix

* add public path

* add public path

* assign only when env not test

* read from package.json

* Append content hash to excalidraw-assets so cache bursting happens when version update

* update changelog and readme

* update
2021-02-21 21:08:30 +05:30
Aakansha Doshi 7c5481b877 feat: Add support for scrollToCenter in initialData so host can control whether to scroll to center on mount (#3070)
* feat: Add support for scrollToCenter in initialData so host can control whether to scroll to center on mount

* fix

* update changelog and readme

* fix

* Scroll to center only for collab and shareable links in excalidraw app

* fix test

* update readme

* Update src/packages/excalidraw/README.md
2021-02-21 19:01:34 +05:30
Lipis d17464fbaa chore: Replace node-sass with sass (#3067) 2021-02-20 18:31:34 +02:00
Lipis baf9da2b83 chore: Update action versions and docker build (#3065) 2021-02-20 14:28:33 +00:00
Lipis 4bfcf105a5 build: Switch to Yarn (#3057)
Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
2021-02-20 12:47:17 +00:00
Arun 74e82d0d7c fix: Hide scrollbars on mobile (#3044)
* Hide scrollbars on mobile

* Fix package build

* Revert "Fix package build"

This reverts commit 7bf4a0aac1.

* Make requested changes
2021-02-19 12:55:58 +01:00
Lipis 9dd2257932 chore: Consistent CSS variable names and general housekeeping of styles (#2947) 2021-02-16 20:22:18 +02:00
Aakansha Doshi 9c0f832a41 fix: show user state only when passed from host (#3050) 2021-02-16 15:08:27 +05:30
Aakansha Doshi 6cafb6bb90 feat: export restore API's from Excalidraw package (#3049) 2021-02-15 14:22:04 +01:00
David Luzar e6cd97c4f2 feat: adjust line-confirm-threshold based on zoom (#2884)
Co-authored-by: Lipis <lipiridis@gmail.com>
2021-02-14 14:43:23 +01:00
Panayiotis Lipiridis ba9b65b051 chore: npm audit fix 2021-02-14 15:18:17 +02:00
Aakansha Doshi 830fb64a25 fix: Support Excalidraw inside scrollable container (#3018)
* refactor: remove position fixed from excalidraw container, modal and stats

* remove unused css

* remove position fixed from toast and scroll to content

* Make excal interactable by fixing offsets and set popover as fixed since position needs to be calculate from viewport  top

* Assign 200px less than height of Excalidraw to the selected shapes actions o UI doesn't overflow

* update changelog, readme and package.json
2021-02-14 18:18:34 +05:30
dependabot[bot] 5b343a9d46 chore(deps-dev): bump @babel/preset-env from 7.12.13 to 7.12.16 in /src/packages/utils (#3030)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.13 to 7.12.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.16/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 11:47:25 +02:00
Ivan Kurnosov f8beb305de refactor: Removed redundant import from App.tsx (#3040)
Given it's followed by qualified import - unqualified import looks redundant, unless I'm missing some tricky edge case.
2021-02-14 11:25:57 +02:00
dependabot[bot] 4b4eecbd27 chore(deps): bump react-scripts from 4.0.1 to 4.0.2 (#2979)
Bumps [react-scripts](https://github.com/facebook/create-react-app/tree/HEAD/packages/react-scripts) from 4.0.1 to 4.0.2.
- [Release notes](https://github.com/facebook/create-react-app/releases)
- [Changelog](https://github.com/facebook/create-react-app/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/create-react-app/commits/react-scripts@4.0.2/packages/react-scripts)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:23:05 +00:00
dependabot[bot] e8bd910b9b chore(deps-dev): bump @babel/preset-env from 7.12.13 to 7.12.16 in /src/packages/excalidraw (#3019)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 08:20:30 +00:00
dependabot[bot] a9a3e1bca5 chore(deps-dev): bump ts-loader from 8.0.15 to 8.0.17 in /src/packages/utils (#3027)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 08:16:28 +00:00
dependabot[bot] 2a922dd477 chore(deps-dev): bump @babel/preset-typescript from 7.12.13 to 7.12.16 in /src/packages/excalidraw (#3025)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.13 to 7.12.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.16/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 08:12:33 +00:00
dependabot[bot] 07dab85ebf chore(deps-dev): bump sass-loader from 11.0.0 to 11.0.1 in /src/packages/excalidraw (#3020)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 08:07:01 +00:00
dependabot[bot] d2ce4a7523 chore(deps-dev): bump ts-loader from 8.0.15 to 8.0.17 in /src/packages/excalidraw (#3029)
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 8.0.15 to 8.0.17.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/compare/v8.0.15...v8.0.17)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 08:01:57 +00:00
dependabot[bot] dc73f3a9eb chore(deps-dev): bump @babel/core from 7.12.13 to 7.12.16 in /src/packages/excalidraw (#3031)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 07:59:28 +00:00
dependabot[bot] d100f38750 chore(deps-dev): bump @babel/preset-typescript from 7.12.13 to 7.12.16 in /src/packages/utils (#3024)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.13 to 7.12.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.16/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 07:55:41 +00:00
dependabot[bot] 503500cc74 chore(deps-dev): bump @babel/plugin-transform-typescript from 7.12.13 to 7.12.16 in /src/packages/utils (#3028)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 07:46:40 +00:00
dependabot[bot] 1a828a43d9 chore(deps): bump @types/react-dom from 17.0.0 to 17.0.1 (#3035)
Bumps [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom) from 17.0.0 to 17.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 07:45:50 +00:00
dependabot[bot] d88884466b chore(deps-dev): bump @babel/core from 7.12.13 to 7.12.16 in /src/packages/utils (#3021)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.13 to 7.12.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.16/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:44:21 +02:00
dependabot[bot] d3d470ac3d chore(deps-dev): bump jest-canvas-mock from 2.3.0 to 2.3.1 (#3037)
Bumps [jest-canvas-mock](https://github.com/hustcc/jest-canvas-mock) from 2.3.0 to 2.3.1.
- [Release notes](https://github.com/hustcc/jest-canvas-mock/releases)
- [Changelog](https://github.com/hustcc/jest-canvas-mock/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hustcc/jest-canvas-mock/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:43:49 +02:00
dependabot[bot] 54df521a78 chore(deps-dev): bump mini-css-extract-plugin from 1.3.5 to 1.3.6 in /src/packages/excalidraw (#3022)
Bumps [mini-css-extract-plugin](https://github.com/webpack-contrib/mini-css-extract-plugin) from 1.3.5 to 1.3.6.
- [Release notes](https://github.com/webpack-contrib/mini-css-extract-plugin/releases)
- [Changelog](https://github.com/webpack-contrib/mini-css-extract-plugin/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/mini-css-extract-plugin/compare/v1.3.5...v1.3.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:43:38 +02:00
dependabot[bot] c5557b5cc1 chore(deps): bump typescript from 4.1.3 to 4.1.5 (#3034)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.1.3 to 4.1.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.1.3...v4.1.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:43:27 +02:00
dependabot[bot] 51875fd627 chore(deps): bump firebase from 8.2.6 to 8.2.7 (#3038)
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 8.2.6 to 8.2.7.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@8.2.6...firebase@8.2.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:42:53 +02:00
dependabot[bot] b2ba61bbcf chore(deps-dev): bump webpack from 5.21.1 to 5.21.2 in /src/packages/excalidraw (#3032)
Bumps [webpack](https://github.com/webpack/webpack) from 5.21.1 to 5.21.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.21.1...v5.21.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:42:36 +02:00
dependabot[bot] 3b7f62c9a0 chore(deps-dev): bump @babel/plugin-transform-typescript from 7.12.13 to 7.12.16 in /src/packages/excalidraw (#3033)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.13 to 7.12.16.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.16/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:42:26 +02:00
dependabot[bot] aeafb81479 chore(deps-dev): bump css-loader in /src/packages/excalidraw (#3026)
Bumps [css-loader](https://github.com/webpack-contrib/css-loader) from 5.0.1 to 5.0.2.
- [Release notes](https://github.com/webpack-contrib/css-loader/releases)
- [Changelog](https://github.com/webpack-contrib/css-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/css-loader/compare/v5.0.1...v5.0.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:42:13 +02:00
dependabot[bot] dfe81bf6b2 chore(deps-dev): bump webpack from 5.21.1 to 5.21.2 in /src/packages/utils (#3023)
Bumps [webpack](https://github.com/webpack/webpack) from 5.21.1 to 5.21.2.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.21.1...v5.21.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:42:02 +02:00
dependabot[bot] 1d332d597a chore(deps): bump @types/react from 17.0.1 to 17.0.2 (#3036)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 17.0.1 to 17.0.2.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-14 09:41:09 +02:00
Aakansha Doshi b5fc8757a4 fix: allow to toggle between modes when view only mode to make UI consistent (#3009) 2021-02-12 10:40:40 +02:00
Aakansha Doshi ecbd5ba55d docs: update readme, changelog and release 0.3.0 🎉 (#3003) 2021-02-11 19:55:38 +05:30
Excalidraw Bot 6967d8c985 chore: Update translations from Crowdin (#3000) 2021-02-11 14:13:32 +02:00
David Luzar 4b253c7362 fix: refresh wysiwyg position on canvas resize (#3008) 2021-02-11 12:24:26 +01:00
Aakansha Doshi 4fdddb518a docs(readme): link to @excalidraw/excalidraw npm package to give more visibility (#3002) 2021-02-10 21:58:29 +05:30
Aakansha Doshi 0b2e4dd60b build(webpack): remove publicPath so __webpack_public_path__ can be used to host assets (#2835)
* build(webpack): remove publicPath so __webpack_public_path__ can be use to host assets

* update readme and changelog

* fix

* revert version so its released in v3
2021-02-10 21:49:16 +05:30
David Luzar f162512988 docs: link to specific sponsors (#2950) 2021-02-10 10:22:49 +02:00
Lipis 2f7154cdf2 chore: Use Sentence case for Live collaboration 2021-02-09 15:55:03 +02:00
Arun 5ab0ce5a33 feat: Add the ability to clear library (#2997)
* Add the ability to clear libraries

* Update 'libraries' to 'library'

* Update en.json
2021-02-09 11:19:04 +01:00
Excalidraw Bot 073f4032f3 chore: Update translations from Crowdin (#2986) 2021-02-09 11:06:23 +02:00
Jed Fox 73cba59d2d feat: Updates to Collaboration and RTL UX (#2994) 2021-02-08 21:43:51 +01:00
José dBruxelles 4085071347 docs: Fix typo (#2996) 2021-02-08 18:39:59 +02:00
José dBruxelles 8a63187d4f Update the lang attribute with the current lang. (#2995)
Currently, when changing the app language, the `lang` attribute still in `en`.
2021-02-08 12:38:38 +02:00
David Luzar 9c51ba6067 feat: show toast when saving to existing file (#2988) 2021-02-07 22:01:22 +01:00
Excalidraw Bot bf50c9cae7 chore: Update translations from Crowdin (#2946) 2021-02-07 12:33:37 +02:00
dependabot[bot] 1801048763 chore(deps-dev): bump @babel/plugin-transform-arrow-functions from 7.12.1 to 7.12.13 in /src/packages/excalidraw (#2961)
Bumps [@babel/plugin-transform-arrow-functions](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-arrow-functions) from 7.12.1 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-plugin-transform-arrow-functions)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 11:25:00 +02:00
dependabot[bot] 414deea084 chore(deps-dev): bump @babel/preset-typescript from 7.12.7 to 7.12.13 in /src/packages/excalidraw (#2955)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.7 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:15:47 +00:00
dependabot[bot] 979d28d5c6 chore(deps-dev): bump @babel/preset-env from 7.12.11 to 7.12.13 in /src/packages/utils (#2970)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:14:45 +00:00
dependabot[bot] 1f8b7e417f chore(deps-dev): bump @babel/plugin-transform-async-to-generator from 7.12.1 to 7.12.13 in /src/packages/excalidraw (#2957)
Bumps [@babel/plugin-transform-async-to-generator](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-async-to-generator) from 7.12.1 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-plugin-transform-async-to-generator)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:05:16 +00:00
dependabot[bot] 8c968cd13e chore(deps-dev): bump @babel/preset-typescript from 7.12.7 to 7.12.13 in /src/packages/utils (#2964)
Bumps [@babel/preset-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-typescript) from 7.12.7 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-preset-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:59:54 +00:00
dependabot[bot] f798000006 chore(deps-dev): bump @babel/plugin-transform-async-to-generator from 7.12.1 to 7.12.13 in /src/packages/utils (#2972)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:55:43 +00:00
dependabot[bot] 7ff3a71179 chore(deps-dev): bump @babel/preset-env from 7.12.11 to 7.12.13 in /src/packages/excalidraw (#2973)
Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.12.11 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-preset-env)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:48:42 +00:00
dependabot[bot] 6c0804d4c3 chore(deps-dev): bump @babel/core from 7.12.10 to 7.12.13 in /src/packages/excalidraw (#2952)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.10 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:45:04 +00:00
dependabot[bot] ae8e7aca16 chore(deps-dev): bump ts-loader from 8.0.14 to 8.0.15 in /src/packages/excalidraw (#2969)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:41:10 +00:00
dependabot[bot] 842b185aa6 chore(deps-dev): bump @babel/plugin-transform-runtime from 7.12.10 to 7.12.15 in /src/packages/utils (#2968)
Bumps [@babel/plugin-transform-runtime](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-runtime) from 7.12.10 to 7.12.15.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.15/packages/babel-plugin-transform-runtime)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:34:00 +00:00
dependabot[bot] f59387471e chore(deps): bump firebase from 8.2.5 to 8.2.6 (#2983)
Bumps [firebase](https://github.com/firebase/firebase-js-sdk) from 8.2.5 to 8.2.6.
- [Release notes](https://github.com/firebase/firebase-js-sdk/releases)
- [Changelog](https://github.com/firebase/firebase-js-sdk/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-js-sdk/compare/firebase@8.2.5...firebase@8.2.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:31:32 +00:00
dependabot[bot] 60eb709eb3 chore(deps-dev): bump @babel/plugin-transform-runtime from 7.12.10 to 7.12.15 in /src/packages/excalidraw (#2967)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:27:00 +00:00
dependabot[bot] 02539bbb89 chore(deps): bump @testing-library/react from 11.2.3 to 11.2.5 (#2975)
Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 11.2.3 to 11.2.5.
- [Release notes](https://github.com/testing-library/react-testing-library/releases)
- [Changelog](https://github.com/testing-library/react-testing-library/blob/master/CHANGELOG.md)
- [Commits](https://github.com/testing-library/react-testing-library/compare/v11.2.3...v11.2.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 10:19:28 +02:00
Lipis 77ae5d4605 chore(deps): bump @sentry/* from 6.0.3 to 6.1.0 (#2984) 2021-02-07 10:17:05 +02:00
dependabot[bot] bdd4f69bf6 chore(deps-dev): bump @babel/preset-react from 7.12.10 to 7.12.13 in /src/packages/excalidraw (#2963)
Bumps [@babel/preset-react](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-react) from 7.12.10 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-preset-react)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 10:16:47 +02:00
dependabot[bot] 87ca829490 chore(deps-dev): bump webpack-cli from 4.4.0 to 4.5.0 in /src/packages/excalidraw (#2953)
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.4.0...webpack-cli@4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 10:15:42 +02:00
dependabot[bot] a31a7fd766 chore(deps-dev): bump @babel/plugin-transform-typescript from 7.12.1 to 7.12.13 in /src/packages/utils (#2954)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.1 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:12:48 +00:00
dependabot[bot] e70f02063f chore(deps-dev): bump sass-loader from 10.1.1 to 11.0.0 in /src/packages/excalidraw (#2971)
Bumps [sass-loader](https://github.com/webpack-contrib/sass-loader) from 10.1.1 to 11.0.0.
- [Release notes](https://github.com/webpack-contrib/sass-loader/releases)
- [Changelog](https://github.com/webpack-contrib/sass-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/sass-loader/compare/v10.1.1...v11.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 08:10:24 +00:00
dependabot[bot] 769f727bd4 chore(deps-dev): bump @babel/plugin-transform-arrow-functions from 7.12.1 to 7.12.13 in /src/packages/utils (#2960)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 07:58:51 +00:00
dependabot[bot] bc994fcbe2 chore(deps-dev): bump @babel/core from 7.12.10 to 7.12.13 in /src/packages/utils (#2956)
Bumps [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) from 7.12.10 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-core)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:52:55 +02:00
dependabot[bot] ac5e058222 chore(deps-dev): bump webpack from 5.19.0 to 5.21.1 in /src/packages/utils (#2966)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 07:52:22 +00:00
dependabot[bot] d61970cdac chore(deps): bump browser-fs-access from 0.13.0 to 0.13.1 (#2980)
Bumps [browser-fs-access](https://github.com/GoogleChromeLabs/browser-fs-access) from 0.13.0 to 0.13.1.
- [Release notes](https://github.com/GoogleChromeLabs/browser-fs-access/releases)
- [Commits](https://github.com/GoogleChromeLabs/browser-fs-access/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:43:49 +02:00
dependabot[bot] 489d4b7469 chore(deps-dev): bump webpack from 5.19.0 to 5.21.1 in /src/packages/excalidraw (#2965)
Bumps [webpack](https://github.com/webpack/webpack) from 5.19.0 to 5.21.1.
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.19.0...v5.21.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:43:26 +02:00
dependabot[bot] d88de08872 chore(deps-dev): bump webpack-cli from 4.4.0 to 4.5.0 in /src/packages/utils (#2958)
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.4.0...webpack-cli@4.5.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:42:51 +02:00
dependabot[bot] 42882e2a93 chore(deps-dev): bump @babel/plugin-transform-typescript (#2959)
Bumps [@babel/plugin-transform-typescript](https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-typescript) from 7.12.1 to 7.12.13.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.12.13/packages/babel-plugin-transform-typescript)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:42:37 +02:00
dependabot[bot] f6374e5bde chore(deps-dev): bump ts-loader from 8.0.14 to 8.0.15 in /src/packages/utils (#2962)
Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 8.0.14 to 8.0.15.
- [Release notes](https://github.com/TypeStrong/ts-loader/releases)
- [Changelog](https://github.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/ts-loader/compare/v8.0.14...v8.0.15)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:42:20 +02:00
dependabot[bot] aac9d4e837 chore(deps): bump @types/react from 17.0.0 to 17.0.1 (#2978)
Bumps [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react) from 17.0.0 to 17.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:42:12 +02:00
dependabot[bot] d9103b8b24 chore(deps-dev): bump firebase-tools from 9.2.2 to 9.3.0 (#2974)
Bumps [firebase-tools](https://github.com/firebase/firebase-tools) from 9.2.2 to 9.3.0.
- [Release notes](https://github.com/firebase/firebase-tools/releases)
- [Changelog](https://github.com/firebase/firebase-tools/blob/master/CHANGELOG.md)
- [Commits](https://github.com/firebase/firebase-tools/compare/v9.2.2...v9.3.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:42:02 +02:00
dependabot[bot] 8b56346011 chore(deps-dev): bump lint-staged from 10.5.3 to 10.5.4 (#2976)
Bumps [lint-staged](https://github.com/okonet/lint-staged) from 10.5.3 to 10.5.4.
- [Release notes](https://github.com/okonet/lint-staged/releases)
- [Commits](https://github.com/okonet/lint-staged/compare/v10.5.3...v10.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-02-07 09:41:52 +02:00
Aakansha Doshi e63a0ec5be feat: allow host to pass color for collaborators (#2943)
* feat: allow host to pass color for collaborators

* remove user prop as its not used anywhere

* update changelog and readme

* add pr link
2021-02-06 23:33:52 +05:30
Lipis 86222662f2 docs: Add open collective in readme (#2948)
Co-authored-by: David Luzar <luzar.david@gmail.com>
2021-02-06 18:12:35 +02:00
Aakansha Doshi 066560311b feat: add props zenModeEnabled and gridModeEnabled so host can control completely (#2901)
* feat: add props zenModeEnabled and gridModeEnabled so host can control completely

* dnt show exit zenmode button when prop present

* fix

* update when props change

* Add tests

* Add tests

* update changelog and readme

* update

* Update src/tests/excalidrawPackage.test.tsx

* Update src/packages/excalidraw/README.md

Co-authored-by: Lipis <lipiridis@gmail.com>

* Update src/packages/excalidraw/README.md

Co-authored-by: David Luzar <luzar.david@gmail.com>

* Apply suggestions from code review

Co-authored-by: David Luzar <luzar.david@gmail.com>

* fix specs

Co-authored-by: Lipis <lipiridis@gmail.com>
Co-authored-by: David Luzar <luzar.david@gmail.com>
2021-02-06 21:22:28 +05:30
Arun d6ca981f7a fix: Rename 'Grid mode' to 'Show grid' (#2944) 2021-02-05 23:50:53 +02:00
Excalidraw Bot f7f98d9dda chore: Update translations from Crowdin (#2930) 2021-02-05 20:07:33 +02:00
Thomas Steiner 1a67642fd1 chore: [Idle detection] Deal with users on systems that don't handle emoji (#2941)
* Deal with users on systems that don't handle emoji

* Leave no trailing space

* Move function to utils, and actually call it 🤣
Chapeau, TypeScript!

* Use grinning face instead of koala

* Tweak globalAlpha
2021-02-05 18:34:35 +01:00
David Luzar 6aa22bada8 fix: mobile toolbar tooltip regression (#2939) 2021-02-05 16:09:40 +01:00
David Luzar 00209ef9c3 fix: hide collaborator list on mobile if empty (#2938)
Co-authored-by: Lipis <lipiridis@gmail.com>
2021-02-05 15:45:44 +01:00
David Luzar b79ef0d428 fix: don't prompt on empty scenes (#2937) 2021-02-05 12:04:33 +01:00
132 changed files with 21981 additions and 31140 deletions
+6 -6
View File
@@ -1,10 +1,10 @@
* *
!.env
!.eslintrc.json
!.npmrc
!.prettierrc
!package.json
!public/ !public/
!src/ !src/
!.npmrc
!.eslintrc.json
!.prettierrc
!package-lock.json
!package.json
!tsconfig.json !tsconfig.json
!.env !yarn.lock
+1 -1
View File
@@ -2,6 +2,7 @@
"extends": ["prettier", "react-app"], "extends": ["prettier", "react-app"],
"plugins": ["prettier"], "plugins": ["prettier"],
"rules": { "rules": {
"@typescript-eslint/no-unused-vars": "warn",
"curly": "warn", "curly": "warn",
"dot-notation": "warn", "dot-notation": "warn",
"import/no-anonymous-default-export": "off", "import/no-anonymous-default-export": "off",
@@ -22,7 +23,6 @@
], ],
"no-unneeded-ternary": "warn", "no-unneeded-ternary": "warn",
"no-unused-expressions": "warn", "no-unused-expressions": "warn",
"no-unused-vars": "warn",
"no-useless-return": "warn", "no-useless-return": "warn",
"no-var": "warn", "no-var": "warn",
"object-shorthand": "warn", "object-shorthand": "warn",
+3 -6
View File
@@ -1,36 +1,33 @@
version: 2 version: 2
updates: updates:
- package-ecosystem: npm - package-ecosystem: npm
directory: "/" directory: /
schedule: schedule:
interval: weekly interval: weekly
day: sunday day: sunday
time: "01:00" time: "01:00"
open-pull-requests-limit: 99
reviewers: reviewers:
- lipis - lipis
assignees: assignees:
- lipis - lipis
- package-ecosystem: npm - package-ecosystem: npm
directory: "/src/packages/excalidraw/" directory: /src/packages/excalidraw/
schedule: schedule:
interval: weekly interval: weekly
day: sunday day: sunday
time: "01:00" time: "01:00"
open-pull-requests-limit: 99
reviewers: reviewers:
- ad1992 - ad1992
assignees: assignees:
- ad1992 - ad1992
- package-ecosystem: npm - package-ecosystem: npm
directory: "/src/packages/utils/" directory: /src/packages/utils/
schedule: schedule:
interval: weekly interval: weekly
day: sunday day: sunday
time: "01:00" time: "01:00"
open-pull-requests-limit: 99
reviewers: reviewers:
- ad1992 - ad1992
assignees: assignees:
+2 -3
View File
@@ -6,9 +6,8 @@ on:
- master - master
jobs: jobs:
build: build-docker:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- run: docker build -t excalidraw . - run: docker build -t excalidraw .
+8 -12
View File
@@ -7,27 +7,23 @@ on:
pull_request: pull_request:
jobs: jobs:
build: packages:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- name: Setup Node.js 14.x - name: Setup Node.js 14.x
uses: actions/setup-node@v1 uses: actions/setup-node@v2
with: with:
node-version: 14.x node-version: 14.x
- name: Install dependencies - name: Install dependencies
run: | run: |
npm ci yarn --frozen-lockfile
npm ci --prefix src/packages/excalidraw yarn --cwd src/packages/excalidraw
npm ci --prefix src/packages/utils yarn --cwd src/packages/utils
- name: Build @excalidraw/excalidraw - name: Build @excalidraw/excalidraw
run: | run: |
npm run pack --prefix src/packages/excalidraw yarn --cwd src/packages/excalidraw run pack
- name: Build @excalidraw/utils - name: Build @excalidraw/utils
run: | run: |
npm run pack --prefix src/packages/utils yarn --cwd src/packages/utils run pack
-1
View File
@@ -9,7 +9,6 @@ on:
jobs: jobs:
cancel: cancel:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 3 timeout-minutes: 3
steps: steps:
- uses: styfle/cancel-workflow-action@0.6.0 - uses: styfle/cancel-workflow-action@0.6.0
+6 -6
View File
@@ -7,16 +7,16 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- name: Setup Node.js 14.x - name: Setup Node.js 14.x
uses: actions/setup-node@v1 uses: actions/setup-node@v2
with: with:
node-version: 14.x node-version: 14.x
- name: Install and lint - name: Install and lint
run: | run: |
npm ci yarn --frozen-lockfile
npm run test:other yarn test:other
npm run test:code yarn test:code
npm run test:typecheck yarn test:typecheck
+4 -4
View File
@@ -3,7 +3,7 @@ name: Build locales coverage
on: on:
push: push:
branches: branches:
- "l10n_master" - l10n_master
jobs: jobs:
locales: locales:
@@ -15,13 +15,13 @@ jobs:
token: ${{ secrets.PUSH_TRANSLATIONS_COVERAGE_PAT }} token: ${{ secrets.PUSH_TRANSLATIONS_COVERAGE_PAT }}
- name: Setup Node.js 14.x - name: Setup Node.js 14.x
uses: actions/setup-node@v1 uses: actions/setup-node@v2
with: with:
node-version: 14.x node-version: 14.x
- name: Create report file - name: Create report file
run: | run: |
npm run locales-coverage yarn locales-coverage
FILE_CHANGED=$(git diff src/locales/percentages.json) FILE_CHANGED=$(git diff src/locales/percentages.json)
if [ ! -z "${FILE_CHANGED}" ]; then if [ ! -z "${FILE_CHANGED}" ]; then
git config --global user.name 'Excalidraw Bot' git config --global user.name 'Excalidraw Bot'
@@ -33,7 +33,7 @@ jobs:
- name: Construct comment body - name: Construct comment body
id: getCommentBody id: getCommentBody
run: | run: |
body=$(npm run locales-coverage:description | grep '^[^>]') body=$(yarn locales-coverage:description | grep '^[^>]')
body="${body//'%'/'%25'}" body="${body//'%'/'%25'}"
body="${body//$'\n'/'%0A'}" body="${body//$'\n'/'%0A'}"
body="${body//$'\r'/'%0D'}" body="${body//$'\r'/'%0D'}"
+2 -3
View File
@@ -1,4 +1,4 @@
name: "Semantic PR title" name: Semantic PR title
on: on:
pull_request_target: pull_request_target:
@@ -8,9 +8,8 @@ on:
- synchronize - synchronize
jobs: jobs:
main: semantic:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: amannn/action-semantic-pull-request@v3.0.0 - uses: amannn/action-semantic-pull-request@v3.0.0
env: env:
+6 -11
View File
@@ -1,4 +1,4 @@
name: New Sentry Production Release name: New Sentry production release
on: on:
push: push:
@@ -6,28 +6,23 @@ on:
- master - master
jobs: jobs:
release: sentry:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v1.0.0 - uses: actions/checkout@v2
- name: Setup Node.js 14.x - name: Setup Node.js 14.x
uses: actions/setup-node@v1 uses: actions/setup-node@v2
with: with:
node-version: 14.x node-version: 14.x
- name: Install and build - name: Install and build
run: | run: |
npm ci yarn --frozen-lockfile
npm run build:app yarn build:app
env: env:
CI: true CI: true
- name: Install Sentry - name: Install Sentry
run: | run: |
curl -sL https://sentry.io/get-cli/ | bash curl -sL https://sentry.io/get-cli/ | bash
- name: Create new Sentry release - name: Create new Sentry release
run: | run: |
export SENTRY_RELEASE=$(sentry-cli releases propose-version) export SENTRY_RELEASE=$(sentry-cli releases propose-version)
+4 -7
View File
@@ -5,16 +5,13 @@ on: pull_request
jobs: jobs:
test: test:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v2
- name: Setup Node.js 14.x - name: Setup Node.js 14.x
uses: actions/setup-node@v1 uses: actions/setup-node@v2
with: with:
node-version: 14.x node-version: 14.x
- name: Install and test - name: Install and test
run: | run: |
npm ci yarn --frozen-lockfile
npm run test:app yarn test:app
+1 -1
View File
@@ -16,7 +16,7 @@ firebase
logs logs
node_modules node_modules
npm-debug.log* npm-debug.log*
package-lock.json
static static
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
yarn.lock
-4
View File
@@ -1,4 +0,0 @@
{
"proseWrap": "never",
"trailingComma": "all"
}
+1 -2
View File
@@ -19,7 +19,7 @@
### Option 2 - CodeSandbox ### Option 2 - CodeSandbox
1. Go to https://codesandbox.io/s/github/excalidraw/excalidraw 1. Go to https://codesandbox.io/s/github/excalidraw/excalidraw
1. Connect your Github account 1. Connect your GitHub account
1. Go to Git tab on left side 1. Go to Git tab on left side
1. Tap on `Fork Sandbox` 1. Tap on `Fork Sandbox`
1. Write your code 1. Write your code
@@ -35,7 +35,6 @@ Make sure the title starts with a semantic prefix:
- **feat**: A new feature - **feat**: A new feature
- **fix**: A bug fix - **fix**: A bug fix
- **improvement**: An improvement to a current feature
- **docs**: Documentation only changes - **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc) - **style**: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature - **refactor**: A code change that neither fixes a bug nor adds a feature
+3 -3
View File
@@ -2,13 +2,13 @@ FROM node:14-alpine AS build
WORKDIR /opt/node_app WORKDIR /opt/node_app
COPY package.json package-lock.json ./ COPY package.json yarn.lock ./
RUN npm i --no-optional RUN yarn --ignore-optional
ARG NODE_ENV=production ARG NODE_ENV=production
COPY . . COPY . .
RUN npm run build:app:docker RUN yarn build:app:docker
FROM nginx:1.17-alpine FROM nginx:1.17-alpine
+35 -16
View File
@@ -2,7 +2,7 @@
<a href="https://excalidraw.com"> <a href="https://excalidraw.com">
<img width="540" src="./public/og-image-sm.png" alt="Excalidraw logo: Sketch handrawn like diagrams." /> <img width="540" src="./public/og-image-sm.png" alt="Excalidraw logo: Sketch handrawn like diagrams." />
</a> </a>
<h3>Virtual whiteboard for sketching hand-drawn like diagrams.<br>Collaborative and end to end encrypted.</h3> <h3>Virtual whiteboard for sketching hand-drawn like diagrams.<br>Collaborative and end-to-end encrypted.</h3>
<p> <p>
<a href="https://twitter.com/Excalidraw"> <a href="https://twitter.com/Excalidraw">
<img alt="Follow Excalidraw on Twitter" src="https://img.shields.io/twitter/follow/excalidraw.svg?label=follow+excalidraw&style=social&logo=twitter"> <img alt="Follow Excalidraw on Twitter" src="https://img.shields.io/twitter/follow/excalidraw.svg?label=follow+excalidraw&style=social&logo=twitter">
@@ -11,6 +11,7 @@
<img src="https://badges.crowdin.net/excalidraw/localized.svg"> <img src="https://badges.crowdin.net/excalidraw/localized.svg">
</a> </a>
</p> </p>
<p>Ask questions or hang out on our <a target="_blank" href="https://discord.gg/UexuTaE">discord.gg/UexuTaE</a>.</p>
</div> </div>
## Try it now ## Try it now
@@ -19,6 +20,14 @@ Go to [excalidraw.com](https://excalidraw.com) to start sketching.
Read the latest news and updates on our [blog](https://blog.excalidraw.com). A good start is to see all the updates of [One Year of Excalidraw](https://blog.excalidraw.com/one-year-of-excalidraw/). Read the latest news and updates on our [blog](https://blog.excalidraw.com). A good start is to see all the updates of [One Year of Excalidraw](https://blog.excalidraw.com/one-year-of-excalidraw/).
## Supporting Excalidraw
If you like the project, you can become a sponsor at [Open Collective](https://opencollective.com/excalidraw).
[<img src="https://opencollective.com/excalidraw/tiers/sponsors/0/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/0/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/1/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/1/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/2/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/2/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/3/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/3/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/4/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/4/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/5/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/5/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/6/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/6/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/7/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/7/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/8/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/8/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/9/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/9/website) [<img src="https://opencollective.com/excalidraw/tiers/sponsors/10/avatar.svg?avatarHeight=120">](https://opencollective.com/excalidraw/tiers/sponsors/10/website)
<a href="https://opencollective.com/excalidraw#category-CONTRIBUTE" target="_blank"><img src="https://opencollective.com/excalidraw/tiers/backers.svg?avatarHeight=32"/></a>
## Documentation ## Documentation
### Shortcuts ### Shortcuts
@@ -41,7 +50,7 @@ Translations will be available on the app if they exceed a certain threshold of
### Create a collaboration session manually ### Create a collaboration session manually
In order to create a session manually you just need to generate a link of this form: In order to create a session manually, you just need to generate a link of this form:
``` ```
https://excalidraw.com/#room=[0-9a-f]{20},[a-zA-Z0-9_-]{22} https://excalidraw.com/#room=[0-9a-f]{20},[a-zA-Z0-9_-]{22}
@@ -61,18 +70,28 @@ The second set of digits is the encryption key. The Excalidraw server doesnt
Find a growing list of libraries containing assets for your drawings at [libraries.excalidraw.com](https://libraries.excalidraw.com). Find a growing list of libraries containing assets for your drawings at [libraries.excalidraw.com](https://libraries.excalidraw.com).
## Developement ## Embedding Excalidraw in your App?
Try out [`@excalidraw/excalidraw`](https://www.npmjs.com/package/@excalidraw/excalidraw). This package allows you to easily embed Excalidraw as a React component into your apps.
## Development
### Code Sandbox ### Code Sandbox
- Go to https://codesandbox.io/s/github/excalidraw/excalidraw - Go to https://codesandbox.io/s/github/excalidraw/excalidraw
- You may need to sign in with Github and reload the page - You may need to sign in with GitHub and reload the page
- You can start coding instantly, and even send PRs from there! - You can start coding instantly, and even send PRs from there!
### Local Installation ### Local Installation
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
#### Requirements
- [Node.js](https://nodejs.org/en/)
- [Yarn](https://yarnpkg.com/getting-started/install)
- [Git](https://git-scm.com/downloads)
#### Clone the repo #### Clone the repo
```bash ```bash
@@ -81,26 +100,26 @@ git clone https://github.com/excalidraw/excalidraw.git
#### Commands #### Commands
| Command | Description | | Command | Description |
| --------------------- | --------------------------------- | | ------------------ | --------------------------------- |
| `npm install` | Install the dependencies | | `yarn` | Install the dependencies |
| `npm start` | Run the project | | `yarn start` | Run the project |
| `npm run fix` | Reformat all files with Prettier | | `yarn fix` | Reformat all files with Prettier |
| `npm test` | Run tests | | `yarn test` | Run tests |
| `npm run test:update` | Update test snapshots | | `yarn test:update` | Update test snapshots |
| `npm run test:code` | Test for formatting with Prettier | | `yarn test:code` | Test for formatting with Prettier |
#### Docker Compose #### Docker Compose
You can use docker-compose to work on excalidraw locally if you don't want to setup a Node.js env. You can use docker-compose to work on Excalidraw locally if you don't want to setup a Node.js env.
```sh ```sh
docker-compose up --build -d docker-compose up --build -d
``` ```
### Self hosting ### Self-hosting
We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw](https://hub.docker.com/r/excalidraw/excalidraw). You can use it to self host your own client under your own domain, on Kubernetes, AWS ECS, etc. We publish a Docker image with the Excalidraw client at [excalidraw/excalidraw](https://hub.docker.com/r/excalidraw/excalidraw). You can use it to self-host your own client under your own domain, on Kubernetes, AWS ECS, etc.
```sh ```sh
docker build -t excalidraw/excalidraw . docker build -t excalidraw/excalidraw .
@@ -111,7 +130,7 @@ The Docker image is free of analytics and other tracking libraries.
**At the moment, self-hosting your own instance doesn't support sharing or collaboration features.** **At the moment, self-hosting your own instance doesn't support sharing or collaboration features.**
We are working towards providing a full-fledged solution for self hosting your own Excalidraw. We are working towards providing a full-fledged solution for self-hosting your own Excalidraw.
## Contributing ## Contributing
+1 -1
View File
@@ -18,7 +18,7 @@ services:
volumes: volumes:
- ./:/opt/node_app/app:delegated - ./:/opt/node_app/app:delegated
- ./package.json:/opt/node_app/package.json - ./package.json:/opt/node_app/package.json
- ./package-lock.json:/opt/node_app/package-lock.json - ./yarn.lock:/opt/node_app/yarn.lock
- notused:/opt/node_app/app/node_modules - notused:/opt/node_app/app/node_modules
volumes: volumes:
-23407
View File
File diff suppressed because it is too large Load Diff
+26 -23
View File
@@ -19,21 +19,20 @@
] ]
}, },
"dependencies": { "dependencies": {
"@sentry/browser": "6.0.3", "@sentry/browser": "6.2.0",
"@sentry/integrations": "6.0.3", "@sentry/integrations": "6.2.0",
"@testing-library/jest-dom": "5.11.9", "@testing-library/jest-dom": "5.11.9",
"@testing-library/react": "11.2.3", "@testing-library/react": "11.2.5",
"@types/jest": "26.0.20", "@types/jest": "26.0.20",
"@types/react": "17.0.0", "@types/react": "17.0.2",
"@types/react-dom": "17.0.0", "@types/react-dom": "17.0.1",
"@types/socket.io-client": "1.4.35", "@types/socket.io-client": "1.4.35",
"browser-fs-access": "0.13.0", "browser-fs-access": "0.14.0",
"clsx": "1.1.1", "clsx": "1.1.1",
"firebase": "8.2.5", "firebase": "8.2.9",
"i18next-browser-languagedetector": "6.0.1", "i18next-browser-languagedetector": "6.0.1",
"lodash.throttle": "4.1.1", "lodash.throttle": "4.1.1",
"nanoid": "3.1.20", "nanoid": "3.1.20",
"node-sass": "4.14.1",
"open-color": "1.8.0", "open-color": "1.8.0",
"pako": "1.0.11", "pako": "1.0.11",
"png-chunk-text": "1.0.0", "png-chunk-text": "1.0.0",
@@ -43,26 +42,29 @@
"pwacompat": "2.0.17", "pwacompat": "2.0.17",
"react": "17.0.1", "react": "17.0.1",
"react-dom": "17.0.1", "react-dom": "17.0.1",
"react-scripts": "4.0.1", "react-scripts": "4.0.3",
"roughjs": "4.3.1", "roughjs": "4.3.1",
"sass": "1.32.8",
"socket.io-client": "2.3.1", "socket.io-client": "2.3.1",
"typescript": "4.1.3" "typescript": "4.1.5"
}, },
"devDependencies": { "devDependencies": {
"@excalidraw/prettier-config": "1.0.2",
"@types/lodash.throttle": "4.1.6", "@types/lodash.throttle": "4.1.6",
"@types/pako": "1.0.1", "@types/pako": "1.0.1",
"eslint-config-prettier": "7.2.0", "@types/resize-observer-browser": "0.1.5",
"eslint-config-prettier": "8.1.0",
"eslint-plugin-prettier": "3.3.1", "eslint-plugin-prettier": "3.3.1",
"firebase-tools": "9.2.2", "firebase-tools": "9.5.0",
"husky": "4.3.8", "husky": "4.3.8",
"jest-canvas-mock": "2.3.0", "jest-canvas-mock": "2.3.1",
"lint-staged": "10.5.3", "lint-staged": "10.5.4",
"pepjs": "0.5.3", "pepjs": "0.5.3",
"prettier": "2.2.1", "prettier": "2.2.1",
"rewire": "5.0.0" "rewire": "5.0.0"
}, },
"engines": { "engines": {
"node": ">=12.0.0" "node": ">=14.0.0"
}, },
"homepage": ".", "homepage": ".",
"husky": { "husky": {
@@ -77,28 +79,29 @@
"resetMocks": false "resetMocks": false
}, },
"name": "excalidraw", "name": "excalidraw",
"prettier": "@excalidraw/prettier-config",
"private": true, "private": true,
"scripts": { "scripts": {
"build-node": "node ./scripts/build-node.js", "build-node": "node ./scripts/build-node.js",
"build:app:docker": "REACT_APP_DISABLE_SENTRY=true react-scripts build", "build:app:docker": "REACT_APP_DISABLE_SENTRY=true react-scripts build",
"build:app": "REACT_APP_GIT_SHA=$VERCEL_GIT_COMMIT_SHA react-scripts build", "build:app": "REACT_APP_GIT_SHA=$VERCEL_GIT_COMMIT_SHA react-scripts build",
"build:version": "node ./scripts/build-version.js", "build:version": "node ./scripts/build-version.js",
"build": "npm run build:app && npm run build:version", "build": "yarn build:app && yarn build:version",
"eject": "react-scripts eject", "eject": "react-scripts eject",
"fix:code": "npm run test:code -- --fix", "fix:code": "yarn test:code --fix",
"fix:other": "npm run prettier -- --write", "fix:other": "yarn prettier --write",
"fix": "npm run fix:other && npm run fix:code", "fix": "yarn fix:other && yarn fix:code",
"locales-coverage": "node scripts/build-locales-coverage.js", "locales-coverage": "node scripts/build-locales-coverage.js",
"locales-coverage:description": "node scripts/locales-coverage-description.js", "locales-coverage:description": "node scripts/locales-coverage-description.js",
"prettier": "prettier \"**/*.{css,scss,json,md,html,yml}\" --ignore-path=.eslintignore", "prettier": "prettier \"**/*.{css,scss,json,md,html,yml}\" --ignore-path=.eslintignore",
"start": "react-scripts start", "start": "react-scripts start",
"test:all": "npm run test:typecheck && npm run test:code && npm run test:other && npm run test:app -- --watchAll=false", "test:all": "yarn test:typecheck && yarn test:code && yarn test:other && yarn test:app --watchAll=false",
"test:app": "react-scripts test --passWithNoTests", "test:app": "react-scripts test --passWithNoTests",
"test:code": "eslint --max-warnings=0 --ignore-path .gitignore --ext .js,.ts,.tsx .", "test:code": "eslint --max-warnings=0 --ignore-path .gitignore --ext .js,.ts,.tsx .",
"test:debug": "react-scripts --inspect-brk test --runInBand --no-cache", "test:debug": "react-scripts --inspect-brk test --runInBand --no-cache",
"test:other": "npm run prettier -- --list-different", "test:other": "yarn prettier --list-different",
"test:typecheck": "tsc", "test:typecheck": "tsc",
"test:update": "npm run test:app -- --updateSnapshot --watchAll=false", "test:update": "yarn test:app --updateSnapshot --watchAll=false",
"test": "npm run test:app" "test": "yarn test:app"
} }
} }
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1,7 +1,7 @@
/* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */ /* http://www.eaglefonts.com/fg-virgil-ttf-131249.htm */
@font-face { @font-face {
font-family: "Virgil"; font-family: "Virgil";
src: url("FG_Virgil.woff2"); src: url("Virgil.woff2");
font-display: swap; font-display: swap;
} }
+4 -2
View File
@@ -60,7 +60,7 @@
<link <link
rel="preload" rel="preload"
href="FG_Virgil.woff2" href="Virgil.woff2"
as="font" as="font"
type="font/woff2" type="font/woff2"
crossorigin="anonymous" crossorigin="anonymous"
@@ -86,7 +86,9 @@
/> />
<link rel="stylesheet" href="fonts.css" type="text/css" /> <link rel="stylesheet" href="fonts.css" type="text/css" />
<script>
window.EXCALIDRAW_ASSET_PATH = "/";
</script>
<% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %> <% if (process.env.REACT_APP_GOOGLE_ANALYTICS_ID) { %>
<script <script
async async
+1 -1
View File
@@ -5,7 +5,7 @@
// In order to run: // In order to run:
// npm install canvas # please do not check it in // npm install canvas # please do not check it in
// npm run build-node // yarn build-node
// node build/static/js/build-node.js // node build/static/js/build-node.js
// open test.png // open test.png
+45 -1
View File
@@ -5,6 +5,7 @@ import { ProjectName } from "../components/ProjectName";
import { ToolButton } from "../components/ToolButton"; import { ToolButton } from "../components/ToolButton";
import "../components/ToolIcon.scss"; import "../components/ToolIcon.scss";
import { Tooltip } from "../components/Tooltip"; import { Tooltip } from "../components/Tooltip";
import { DarkModeToggle, Appearence } from "../components/DarkModeToggle";
import { loadFromJSON, saveAsJSON } from "../data"; import { loadFromJSON, saveAsJSON } from "../data";
import { t } from "../i18n"; import { t } from "../i18n";
import useIsMobile from "../is-mobile"; import useIsMobile from "../is-mobile";
@@ -96,9 +97,24 @@ export const actionChangeShouldAddWatermark = register({
export const actionSaveScene = register({ export const actionSaveScene = register({
name: "saveScene", name: "saveScene",
perform: async (elements, appState, value) => { perform: async (elements, appState, value) => {
const fileHandleExists = !!appState.fileHandle;
try { try {
const { fileHandle } = await saveAsJSON(elements, appState); const { fileHandle } = await saveAsJSON(elements, appState);
return { commitToHistory: false, appState: { ...appState, fileHandle } }; return {
commitToHistory: false,
appState: {
...appState,
fileHandle,
toastMessage: fileHandleExists
? fileHandle.name
? t("toast.fileSavedToFilename").replace(
"{filename}",
`"${fileHandle.name}"`,
)
: t("toast.fileSaved")
: null,
},
};
} catch (error) { } catch (error) {
if (error?.name !== "AbortError") { if (error?.name !== "AbortError") {
console.error(error); console.error(error);
@@ -189,3 +205,31 @@ export const actionLoadScene = register({
/> />
), ),
}); });
export const actionExportWithDarkMode = register({
name: "exportWithDarkMode",
perform: (_elements, appState, value) => {
return {
appState: { ...appState, exportWithDarkMode: value },
commitToHistory: false,
};
},
PanelComponent: ({ appState, updateData }) => (
<div
style={{
display: "flex",
justifyContent: "flex-end",
marginTop: "-45px",
marginBottom: "10px",
}}
>
<DarkModeToggle
value={appState.exportWithDarkMode ? "dark" : "light"}
onChange={(appearance: Appearence) => {
updateData(appearance === "dark");
}}
title={t("labels.toggleExportColorScheme")}
/>
</div>
),
});
+1 -1
View File
@@ -83,7 +83,7 @@ export const actionFinalize = register({
// If the multi point line closes the loop, // If the multi point line closes the loop,
// set the last point to first point. // set the last point to first point.
// This ensures that loop remains closed at different scales. // This ensures that loop remains closed at different scales.
const isLoop = isPathALoop(multiPointElement.points); const isLoop = isPathALoop(multiPointElement.points, appState.zoom.value);
if ( if (
multiPointElement.type === "line" || multiPointElement.type === "line" ||
multiPointElement.type === "draw" multiPointElement.type === "draw"
+1 -1
View File
@@ -42,7 +42,7 @@ export const actionGoToCollaborator = register({
return null; return null;
} }
const { background, stroke } = getClientColors(clientId); const { background, stroke } = getClientColors(clientId, appState);
const shortName = getClientInitials(collaborator.username); const shortName = getClientInitials(collaborator.username);
return ( return (
+1 -1
View File
@@ -17,6 +17,6 @@ export const actionToggleGridMode = register({
}; };
}, },
checked: (appState: AppState) => appState.gridSize !== null, checked: (appState: AppState) => appState.gridSize !== null,
contextItemLabel: "labels.gridMode", contextItemLabel: "labels.showGrid",
keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.code === CODES.QUOTE, keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.code === CODES.QUOTE,
}); });
+2 -1
View File
@@ -8,6 +8,7 @@ import {
} from "./types"; } from "./types";
import { ExcalidrawElement } from "../element/types"; import { ExcalidrawElement } from "../element/types";
import { AppState, ExcalidrawProps } from "../types"; import { AppState, ExcalidrawProps } from "../types";
import { MODES } from "../constants";
// This is the <App> component, but for now we don't care about anything but its // This is the <App> component, but for now we don't care about anything but its
// `canvas` state. // `canvas` state.
@@ -68,7 +69,7 @@ export class ActionManager implements ActionsManagerInterface {
} }
const { viewModeEnabled } = this.getAppState(); const { viewModeEnabled } = this.getAppState();
if (viewModeEnabled) { if (viewModeEnabled) {
if (data[0].name !== "viewMode") { if (!Object.values(MODES).includes(data[0].name)) {
return false; return false;
} }
} }
+2 -1
View File
@@ -85,7 +85,8 @@ export type ActionName =
| "alignHorizontallyCentered" | "alignHorizontallyCentered"
| "distributeHorizontally" | "distributeHorizontally"
| "distributeVertically" | "distributeVertically"
| "viewMode"; | "viewMode"
| "exportWithDarkMode";
export interface Action { export interface Action {
name: ActionName; name: ActionName;
+2
View File
@@ -40,6 +40,7 @@ export const getDefaultAppState = (): Omit<
errorMessage: null, errorMessage: null,
exportBackground: true, exportBackground: true,
exportEmbedScene: false, exportEmbedScene: false,
exportWithDarkMode: false,
fileHandle: null, fileHandle: null,
gridSize: null, gridSize: null,
height: window.innerHeight, height: window.innerHeight,
@@ -118,6 +119,7 @@ const APP_STATE_STORAGE_CONF = (<
errorMessage: { browser: false, export: false }, errorMessage: { browser: false, export: false },
exportBackground: { browser: true, export: false }, exportBackground: { browser: true, export: false },
exportEmbedScene: { browser: true, export: false }, exportEmbedScene: { browser: true, export: false },
exportWithDarkMode: { browser: true, export: false },
fileHandle: { browser: false, export: false }, fileHandle: { browser: false, export: false },
gridSize: { browser: true, export: true }, gridSize: { browser: true, export: true },
height: { browser: false, export: false }, height: { browser: false, export: false },
+8 -1
View File
@@ -1,6 +1,13 @@
import colors from "./colors"; import colors from "./colors";
import { AppState } from "./types";
export const getClientColors = (clientId: string) => { export const getClientColors = (clientId: string, appState: AppState) => {
if (appState?.collaborators) {
const currentUser = appState.collaborators.get(clientId);
if (currentUser?.color) {
return currentUser.color;
}
}
// Naive way of getting an integer out of the clientId // Naive way of getting an integer out of the clientId
const sum = clientId.split("").reduce((a, str) => a + str.charCodeAt(0), 0); const sum = clientId.split("").reduce((a, str) => a + str.charCodeAt(0), 0);
+68 -21
View File
@@ -4,7 +4,6 @@ import { RoughCanvas } from "roughjs/bin/canvas";
import rough from "roughjs/bin/rough"; import rough from "roughjs/bin/rough";
import clsx from "clsx"; import clsx from "clsx";
import "../actions";
import { import {
actionAddToLibrary, actionAddToLibrary,
actionBringForward, actionBringForward,
@@ -48,9 +47,11 @@ import {
ELEMENT_TRANSLATE_AMOUNT, ELEMENT_TRANSLATE_AMOUNT,
ENV, ENV,
EVENT, EVENT,
GRID_SIZE,
LINE_CONFIRM_THRESHOLD, LINE_CONFIRM_THRESHOLD,
MIME_TYPES, MIME_TYPES,
POINTER_BUTTON, POINTER_BUTTON,
SCROLL_TIMEOUT,
TAP_TWICE_TIMEOUT, TAP_TWICE_TIMEOUT,
TEXT_TO_CENTER_SNAP_THRESHOLD, TEXT_TO_CENTER_SNAP_THRESHOLD,
TOUCH_CTX_MENU_TIMEOUT, TOUCH_CTX_MENU_TIMEOUT,
@@ -299,6 +300,8 @@ class App extends React.Component<ExcalidrawProps, AppState> {
offsetTop, offsetTop,
excalidrawRef, excalidrawRef,
viewModeEnabled = false, viewModeEnabled = false,
zenModeEnabled = false,
gridModeEnabled = false,
} = props; } = props;
this.state = { this.state = {
...defaultAppState, ...defaultAppState,
@@ -307,6 +310,8 @@ class App extends React.Component<ExcalidrawProps, AppState> {
height, height,
...this.getCanvasOffsets({ offsetLeft, offsetTop }), ...this.getCanvasOffsets({ offsetLeft, offsetTop }),
viewModeEnabled, viewModeEnabled,
zenModeEnabled,
gridSize: gridModeEnabled ? GRID_SIZE : null,
}; };
if (excalidrawRef) { if (excalidrawRef) {
const readyPromise = const readyPromise =
@@ -453,6 +458,9 @@ class App extends React.Component<ExcalidrawProps, AppState> {
onExportToBackend={onExportToBackend} onExportToBackend={onExportToBackend}
renderCustomFooter={renderFooter} renderCustomFooter={renderFooter}
viewModeEnabled={viewModeEnabled} viewModeEnabled={viewModeEnabled}
showExitZenModeBtn={
typeof this.props?.zenModeEnabled === "undefined" && zenModeEnabled
}
/> />
<div className="excalidraw-textEditorContainer" /> <div className="excalidraw-textEditorContainer" />
{this.state.showStats && ( {this.state.showStats && (
@@ -511,11 +519,21 @@ class App extends React.Component<ExcalidrawProps, AppState> {
} }
let viewModeEnabled = actionResult?.appState?.viewModeEnabled || false; let viewModeEnabled = actionResult?.appState?.viewModeEnabled || false;
let zenModeEnabled = actionResult?.appState?.zenModeEnabled || false;
let gridSize = actionResult?.appState?.gridSize || null;
if (typeof this.props.viewModeEnabled !== "undefined") { if (typeof this.props.viewModeEnabled !== "undefined") {
viewModeEnabled = this.props.viewModeEnabled; viewModeEnabled = this.props.viewModeEnabled;
} }
if (typeof this.props.zenModeEnabled !== "undefined") {
zenModeEnabled = this.props.zenModeEnabled;
}
if (typeof this.props.gridModeEnabled !== "undefined") {
gridSize = this.props.gridModeEnabled ? GRID_SIZE : null;
}
this.setState( this.setState(
(state) => ({ (state) => ({
...actionResult.appState, ...actionResult.appState,
@@ -526,6 +544,8 @@ class App extends React.Component<ExcalidrawProps, AppState> {
offsetTop: state.offsetTop, offsetTop: state.offsetTop,
offsetLeft: state.offsetLeft, offsetLeft: state.offsetLeft,
viewModeEnabled, viewModeEnabled,
zenModeEnabled,
gridSize,
}), }),
() => { () => {
if (actionResult.syncHistory) { if (actionResult.syncHistory) {
@@ -652,19 +672,24 @@ class App extends React.Component<ExcalidrawProps, AppState> {
scene.appState = { scene.appState = {
...scene.appState, ...scene.appState,
...calculateScrollCenter(
scene.elements,
{
...scene.appState,
width: this.state.width,
height: this.state.height,
offsetTop: this.state.offsetTop,
offsetLeft: this.state.offsetLeft,
},
null,
),
isLoading: false, isLoading: false,
}; };
if (initialData?.scrollToCenter) {
scene.appState = {
...scene.appState,
...calculateScrollCenter(
scene.elements,
{
...scene.appState,
width: this.state.width,
height: this.state.height,
offsetTop: this.state.offsetTop,
offsetLeft: this.state.offsetLeft,
},
null,
),
};
}
this.resetHistory(); this.resetHistory();
this.syncActionResult({ this.syncActionResult({
@@ -806,6 +831,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
document.addEventListener(EVENT.PASTE, this.pasteFromClipboard); document.addEventListener(EVENT.PASTE, this.pasteFromClipboard);
document.addEventListener(EVENT.CUT, this.onCut); document.addEventListener(EVENT.CUT, this.onCut);
document.addEventListener(EVENT.SCROLL, this.onScroll);
window.addEventListener(EVENT.RESIZE, this.onResize, false); window.addEventListener(EVENT.RESIZE, this.onResize, false);
window.addEventListener(EVENT.UNLOAD, this.onUnload, false); window.addEventListener(EVENT.UNLOAD, this.onUnload, false);
@@ -845,6 +871,15 @@ class App extends React.Component<ExcalidrawProps, AppState> {
this.addEventListeners(); this.addEventListeners();
} }
if (prevProps.zenModeEnabled !== this.props.zenModeEnabled) {
this.setState({ zenModeEnabled: !!this.props.zenModeEnabled });
}
if (prevProps.gridModeEnabled !== this.props.gridModeEnabled) {
this.setState({
gridSize: this.props.gridModeEnabled ? GRID_SIZE : null,
});
}
document document
.querySelector(".excalidraw") .querySelector(".excalidraw")
?.classList.toggle("Appearance_dark", this.state.appearance === "dark"); ?.classList.toggle("Appearance_dark", this.state.appearance === "dark");
@@ -942,6 +977,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
}, },
{ {
renderOptimizations: true, renderOptimizations: true,
renderScrollbars: !isMobile(),
}, },
); );
if (scrollBars) { if (scrollBars) {
@@ -970,6 +1006,10 @@ class App extends React.Component<ExcalidrawProps, AppState> {
} }
} }
private onScroll = debounce(() => {
this.setState({ ...this.getCanvasOffsets() });
}, SCROLL_TIMEOUT);
// Copy/paste // Copy/paste
private onCut = withBatchedUpdates((event: ClipboardEvent) => { private onCut = withBatchedUpdates((event: ClipboardEvent) => {
@@ -1522,6 +1562,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
textWysiwyg({ textWysiwyg({
id: element.id, id: element.id,
appState: this.state, appState: this.state,
canvas: this.canvas,
getViewportCoords: (x, y) => { getViewportCoords: (x, y) => {
const { x: viewportX, y: viewportY } = sceneCoordsToViewportCoords( const { x: viewportX, y: viewportY } = sceneCoordsToViewportCoords(
{ {
@@ -1928,7 +1969,7 @@ class App extends React.Component<ExcalidrawProps, AppState> {
points: points.slice(0, -1), points: points.slice(0, -1),
}); });
} else { } else {
if (isPathALoop(points)) { if (isPathALoop(points, this.state.zoom.value)) {
document.documentElement.style.cursor = CURSOR_TYPE.POINTER; document.documentElement.style.cursor = CURSOR_TYPE.POINTER;
} }
// update last uncommitted point // update last uncommitted point
@@ -2600,7 +2641,10 @@ class App extends React.Component<ExcalidrawProps, AppState> {
const { multiElement } = this.state; const { multiElement } = this.state;
// finalize if completing a loop // finalize if completing a loop
if (multiElement.type === "line" && isPathALoop(multiElement.points)) { if (
multiElement.type === "line" &&
isPathALoop(multiElement.points, this.state.zoom.value)
) {
mutateElement(multiElement, { mutateElement(multiElement, {
lastCommittedPoint: lastCommittedPoint:
multiElement.points[multiElement.points.length - 1], multiElement.points[multiElement.points.length - 1],
@@ -3671,15 +3715,16 @@ class App extends React.Component<ExcalidrawProps, AppState> {
options.push(actionCopyAsSvg); options.push(actionCopyAsSvg);
} }
if (!element) { if (!element) {
const viewModeOptions: ContextMenuOption[] = [ const viewModeOptions = [
...options, ...options,
typeof this.props.gridModeEnabled === "undefined" &&
actionToggleGridMode,
typeof this.props.zenModeEnabled === "undefined" && actionToggleZenMode,
typeof this.props.viewModeEnabled === "undefined" &&
actionToggleViewMode,
actionToggleStats, actionToggleStats,
]; ];
if (typeof this.props.viewModeEnabled === "undefined") {
viewModeOptions.push(actionToggleViewMode);
}
ContextMenu.push({ ContextMenu.push({
options: viewModeOptions, options: viewModeOptions,
top: clientY, top: clientY,
@@ -3717,8 +3762,10 @@ class App extends React.Component<ExcalidrawProps, AppState> {
separator, separator,
actionSelectAll, actionSelectAll,
separator, separator,
actionToggleGridMode, typeof this.props.gridModeEnabled === "undefined" &&
actionToggleZenMode, actionToggleGridMode,
typeof this.props.zenModeEnabled === "undefined" &&
actionToggleZenMode,
typeof this.props.viewModeEnabled === "undefined" && typeof this.props.viewModeEnabled === "undefined" &&
actionToggleViewMode, actionToggleViewMode,
actionToggleStats, actionToggleStats,
+3 -2
View File
@@ -2,9 +2,10 @@
.excalidraw { .excalidraw {
.CollabButton.is-collaborating { .CollabButton.is-collaborating {
background-color: var(--button-special-active-background-color); background-color: var(--button-special-active-bg-color);
.ToolIcon__icon svg { .ToolIcon__icon svg,
.ToolIcon__label {
color: var(--icon-green-fill-color); color: var(--icon-green-fill-color);
} }
} }
+2 -2
View File
@@ -25,8 +25,8 @@ const CollabButton = ({
onClick={onClick} onClick={onClick}
icon={users} icon={users}
type="button" type="button"
title={t("buttons.roomDialog")} title={t("labels.liveCollaboration")}
aria-label={t("buttons.roomDialog")} aria-label={t("labels.liveCollaboration")}
showAriaLabel={useIsMobile()} showAriaLabel={useIsMobile()}
> >
{collaboratorCount > 0 && ( {collaboratorCount > 0 && (
+24 -24
View File
@@ -2,9 +2,9 @@
.excalidraw { .excalidraw {
.color-picker { .color-picker {
background: var(--popup-background-color); background: var(--popup-bg-color);
border: 0px solid transparentize($oc-white, 0.75); border: 0 solid transparentize($oc-white, 0.75);
box-shadow: transparentize($oc-black, 0.75) 0px 1px 4px; box-shadow: transparentize($oc-black, 0.75) 0 1px 4px;
border-radius: 4px; border-radius: 4px;
position: absolute; position: absolute;
@@ -24,11 +24,11 @@
} }
.color-picker-triangle { .color-picker-triangle {
width: 0px; width: 0;
height: 0px; height: 0;
border-style: solid; border-style: solid;
border-width: 0px 9px 10px; border-width: 0 9px 10px;
border-color: transparent transparent var(--popup-background-color); border-color: transparent transparent var(--popup-bg-color);
position: absolute; position: absolute;
top: -10px; top: -10px;
@@ -84,12 +84,12 @@
.color-picker-transparent { .color-picker-transparent {
border-radius: 4px; border-radius: 4px;
box-shadow: transparentize($oc-black, 0.9) 0px 0px 0px 1px inset; box-shadow: transparentize($oc-black, 0.9) 0 0 0 1px inset;
position: absolute; position: absolute;
top: 0px; top: 0;
right: 0px; right: 0;
bottom: 0px; bottom: 0;
left: 0px; left: 0;
} }
.color-picker-transparent, .color-picker-transparent,
@@ -104,11 +104,11 @@
width: 1.875rem; width: 1.875rem;
:root[dir="ltr"] & { :root[dir="ltr"] & {
border-radius: 4px 0px 0px 4px; border-radius: 4px 0 0 4px;
} }
:root[dir="rtl"] & { :root[dir="rtl"] & {
border-radius: 0px 4px 4px 0px; border-radius: 0 4px 4px 0;
} }
color: var(--input-label-color); color: var(--input-label-color);
@@ -144,7 +144,7 @@
} }
.color-input-container:focus-within .color-picker-hash::after { .color-input-container:focus-within .color-picker-hash::after {
background: var(--input-background-color); background: var(--input-bg-color);
:root[dir="ltr"] & { :root[dir="ltr"] & {
right: -2px; right: -2px;
@@ -163,19 +163,19 @@
width: 12ch; /* length of `transparent` + 1 */ width: 12ch; /* length of `transparent` + 1 */
margin: 0; margin: 0;
font-size: 1rem; font-size: 1rem;
background-color: var(--input-background-color); background-color: var(--input-bg-color);
color: var(--text-color-primary); color: var(--text-primary-color);
border: 0px; border: 0;
outline: none; outline: none;
height: 1.75em; height: 1.75em;
box-shadow: var(--input-border-color) 0px 0px 0px 1px inset; box-shadow: var(--input-border-color) 0 0 0 1px inset;
:root[dir="ltr"] & { :root[dir="ltr"] & {
border-radius: 0px 4px 4px 0px; border-radius: 0 4px 4px 0;
} }
:root[dir="rtl"] & { :root[dir="rtl"] & {
border-radius: 4px 0px 0px 4px; border-radius: 4px 0 0 4px;
} }
float: left; float: left;
@@ -228,7 +228,7 @@
} }
.color-picker-type-elementBackground .color-picker-keybinding { .color-picker-type-elementBackground .color-picker-keybinding {
color: #fff; color: $oc-white;
} }
.color-picker-swatch[aria-label="transparent"] .color-picker-keybinding { .color-picker-swatch[aria-label="transparent"] .color-picker-keybinding {
@@ -241,10 +241,10 @@
&.Appearance_dark { &.Appearance_dark {
.color-picker-type-elementBackground .color-picker-keybinding { .color-picker-type-elementBackground .color-picker-keybinding {
color: #000; color: $oc-black;
} }
.color-picker-swatch[aria-label="transparent"] .color-picker-keybinding { .color-picker-swatch[aria-label="transparent"] .color-picker-keybinding {
color: #000; color: $oc-black;
} }
} }
} }
+4 -4
View File
@@ -4,13 +4,13 @@
.context-menu { .context-menu {
position: relative; position: relative;
border-radius: 4px; border-radius: 4px;
box-shadow: 0px 3px 10px transparentize($oc-black, 0.8); box-shadow: 0 3px 10px transparentize($oc-black, 0.8);
padding: 0; padding: 0;
list-style: none; list-style: none;
user-select: none; user-select: none;
margin: -0.25rem 0 0 0.125rem; margin: -0.25rem 0 0 0.125rem;
padding: 0.5rem 0; padding: 0.5rem 0;
background-color: var(--popup-secondary-background-color); background-color: var(--popup-secondary-bg-color);
border: 1px solid var(--button-gray-3); border: 1px solid var(--button-gray-3);
cursor: default; cursor: default;
} }
@@ -61,12 +61,12 @@
} }
.context-menu-option:hover { .context-menu-option:hover {
color: var(--popup-background-color); color: var(--popup-bg-color);
background-color: var(--select-highlight-color); background-color: var(--select-highlight-color);
&.dangerous { &.dangerous {
.context-menu-option__label { .context-menu-option__label {
color: var(--popup-background-color); color: var(--popup-bg-color);
} }
background-color: $oc-red-6; background-color: $oc-red-6;
} }
+9 -8
View File
@@ -10,13 +10,18 @@ export type Appearence = "light" | "dark";
export const DarkModeToggle = (props: { export const DarkModeToggle = (props: {
value: Appearence; value: Appearence;
onChange: (value: Appearence) => void; onChange: (value: Appearence) => void;
title?: string;
}) => { }) => {
const title = props.title
? props.title
: props.value === "dark"
? t("buttons.lightMode")
: t("buttons.darkMode");
return ( return (
<label <label
className={`ToolIcon ToolIcon_type_floating ToolIcon_size_M`} className={`ToolIcon ToolIcon_type_floating ToolIcon_size_M`}
title={ title={title}
props.value === "dark" ? t("buttons.lightMode") : t("buttons.darkMode")
}
> >
<input <input
className="ToolIcon_type_checkbox ToolIcon_toggle_opaque" className="ToolIcon_type_checkbox ToolIcon_toggle_opaque"
@@ -25,11 +30,7 @@ export const DarkModeToggle = (props: {
props.onChange(event.target.checked ? "dark" : "light") props.onChange(event.target.checked ? "dark" : "light")
} }
checked={props.value === "dark"} checked={props.value === "dark"}
aria-label={ aria-label={title}
props.value === "dark"
? t("buttons.lightMode")
: t("buttons.darkMode")
}
/> />
<div className="ToolIcon__icon"> <div className="ToolIcon__icon">
{props.value === "light" ? ICONS.MOON : ICONS.SUN} {props.value === "light" ? ICONS.MOON : ICONS.SUN}
+1 -1
View File
@@ -45,7 +45,7 @@
position: sticky; position: sticky;
top: 0; top: 0;
padding: calc(var(--space-factor) * 2); padding: calc(var(--space-factor) * 2);
background: var(--bg-color-island); background: var(--island-bg-color);
font-size: 1.25em; font-size: 1.25em;
box-sizing: border-box; box-sizing: border-box;
+5
View File
@@ -19,6 +19,9 @@ import { ToolButton } from "./ToolButton";
const scales = [1, 2, 3]; const scales = [1, 2, 3];
const defaultScale = scales.includes(devicePixelRatio) ? devicePixelRatio : 1; const defaultScale = scales.includes(devicePixelRatio) ? devicePixelRatio : 1;
const supportsContextFilters =
"filter" in document.createElement("canvas").getContext("2d")!;
export const ErrorCanvasPreview = () => { export const ErrorCanvasPreview = () => {
return ( return (
<div> <div>
@@ -128,6 +131,8 @@ const ExportModal = ({
return ( return (
<div className="ExportDialog"> <div className="ExportDialog">
<div className="ExportDialog__preview" ref={previewRef} /> <div className="ExportDialog__preview" ref={previewRef} />
{supportsContextFilters &&
actionManager.renderAction("exportWithDarkMode")}
<Stack.Col gap={2} align="center"> <Stack.Col gap={2} align="center">
<div className="ExportDialog__actions"> <div className="ExportDialog__actions">
<Stack.Row gap={2}> <Stack.Row gap={2}>
+1 -1
View File
@@ -224,7 +224,7 @@ export const HelpDialog = ({ onClose }: { onClose?: () => void }) => {
shortcuts={[getShortcutKey("Alt+Z")]} shortcuts={[getShortcutKey("Alt+Z")]}
/> />
<Shortcut <Shortcut
label={t("labels.gridMode")} label={t("labels.showGrid")}
shortcuts={[getShortcutKey("CtrlOrCmd+'")]} shortcuts={[getShortcutKey("CtrlOrCmd+'")]}
/> />
<Shortcut <Shortcut
+1 -1
View File
@@ -26,7 +26,7 @@ $wide-viewport-width: 1000px;
> span { > span {
padding: 0.2rem 0.4rem; padding: 0.2rem 0.4rem;
background-color: var(--overlay-background-color); background-color: var(--overlay-bg-color);
border-radius: 4px; border-radius: 4px;
} }
} }
+11 -11
View File
@@ -8,9 +8,9 @@
} }
.picker { .picker {
background: var(--popup-background-color); background: var(--popup-bg-color);
border: 0px solid transparentize($oc-white, 0.75); border: 0 solid transparentize($oc-white, 0.75);
box-shadow: transparentize($oc-black, 0.75) 0px 1px 4px; box-shadow: transparentize($oc-black, 0.75) 0 1px 4px;
border-radius: 4px; border-radius: 4px;
position: absolute; position: absolute;
} }
@@ -56,8 +56,8 @@
} }
.picker-triangle { .picker-triangle {
width: 0px; width: 0;
height: 0px; height: 0;
position: relative; position: relative;
top: -10px; top: -10px;
:root[dir="ltr"] & { :root[dir="ltr"] & {
@@ -73,7 +73,7 @@
content: ""; content: "";
position: absolute; position: absolute;
border-style: solid; border-style: solid;
border-width: 0px 9px 10px; border-width: 0 9px 10px;
border-color: transparent transparent transparentize($oc-black, 0.9); border-color: transparent transparent transparentize($oc-black, 0.9);
top: -1px; top: -1px;
} }
@@ -82,8 +82,8 @@
content: ""; content: "";
position: absolute; position: absolute;
border-style: solid; border-style: solid;
border-width: 0px 9px 10px; border-width: 0 9px 10px;
border-color: transparent transparent var(--popup-background-color); border-color: transparent transparent var(--popup-bg-color);
} }
} }
@@ -121,7 +121,7 @@
} }
.picker-type-elementBackground .picker-keybinding { .picker-type-elementBackground .picker-keybinding {
color: #fff; color: $oc-white;
} }
.picker-swatch[aria-label="transparent"] .picker-keybinding { .picker-swatch[aria-label="transparent"] .picker-keybinding {
@@ -134,10 +134,10 @@
&.Appearance_dark { &.Appearance_dark {
.picker-type-elementBackground .picker-keybinding { .picker-type-elementBackground .picker-keybinding {
color: #000; color: $oc-black;
} }
.picker-swatch[aria-label="transparent"] .picker-keybinding { .picker-swatch[aria-label="transparent"] .picker-keybinding {
color: #000; color: $oc-black;
} }
} }
} }
+2 -7
View File
@@ -1,12 +1,7 @@
import React from "react"; import React from "react";
import { LoadingMessage } from "./LoadingMessage"; import { LoadingMessage } from "./LoadingMessage";
import { import { defaultLang, Language, languages, setLanguage } from "../i18n";
defaultLang,
Language,
languages,
setLanguageFirstTime,
} from "../i18n";
interface Props { interface Props {
langCode: Language["code"]; langCode: Language["code"];
@@ -23,7 +18,7 @@ export class InitializeApp extends React.Component<Props, State> {
const currentLang = const currentLang =
languages.find((lang) => lang.code === this.props.langCode) || languages.find((lang) => lang.code === this.props.langCode) ||
defaultLang; defaultLang;
await setLanguageFirstTime(currentLang); await setLanguage(currentLang);
this.setState({ this.setState({
isLoading: false, isLoading: false,
}); });
+1 -1
View File
@@ -1,7 +1,7 @@
.excalidraw { .excalidraw {
.Island { .Island {
--padding: 0; --padding: 0;
background-color: var(--bg-color-island); background-color: var(--island-bg-color);
backdrop-filter: saturate(100%) blur(10px); backdrop-filter: saturate(100%) blur(10px);
box-shadow: var(--shadow-island); box-shadow: var(--shadow-island);
border-radius: 4px; border-radius: 4px;
+4 -4
View File
@@ -19,9 +19,9 @@
} }
a { a {
margin-left: auto; margin-inline-start: auto;
// 17px for scrollbar (needed for overlay scrollbars on Big Sur?) + 1px extra // 17px for scrollbar (needed for overlay scrollbars on Big Sur?) + 1px extra
padding-right: 18px; padding-inline-end: 18px;
white-space: nowrap; white-space: nowrap;
} }
} }
@@ -73,7 +73,7 @@
&__footer { &__footer {
position: absolute; position: absolute;
z-index: 100; z-index: 100;
bottom: 0px; bottom: 0;
:root[dir="ltr"] & { :root[dir="ltr"] & {
right: 0; right: 0;
@@ -94,7 +94,7 @@
} }
:root[dir="ltr"] &.transition-right { :root[dir="ltr"] &.transition-right {
transform: translate(999px, 0px); transform: translate(999px, 0);
} }
:root[dir="rtl"] &.transition-left { :root[dir="rtl"] &.transition-left {
+53 -26
View File
@@ -27,7 +27,7 @@ import { ExportCB, ExportDialog } from "./ExportDialog";
import { FixedSideContainer } from "./FixedSideContainer"; import { FixedSideContainer } from "./FixedSideContainer";
import { GitHubCorner } from "./GitHubCorner"; import { GitHubCorner } from "./GitHubCorner";
import { HintViewer } from "./HintViewer"; import { HintViewer } from "./HintViewer";
import { exportFile, load, shield } from "./icons"; import { exportFile, load, shield, trash } from "./icons";
import { Island } from "./Island"; import { Island } from "./Island";
import "./LayerUI.scss"; import "./LayerUI.scss";
import { LibraryUnit } from "./LibraryUnit"; import { LibraryUnit } from "./LibraryUnit";
@@ -52,6 +52,7 @@ interface LayerUIProps {
onLockToggle: () => void; onLockToggle: () => void;
onInsertElements: (elements: readonly NonDeletedExcalidrawElement[]) => void; onInsertElements: (elements: readonly NonDeletedExcalidrawElement[]) => void;
zenModeEnabled: boolean; zenModeEnabled: boolean;
showExitZenModeBtn: boolean;
toggleZenMode: () => void; toggleZenMode: () => void;
langCode: Language["code"]; langCode: Language["code"];
isCollaborating: boolean; isCollaborating: boolean;
@@ -99,6 +100,7 @@ const LibraryMenuItems = ({
onInsertShape, onInsertShape,
pendingElements, pendingElements,
setAppState, setAppState,
setLibraryItems,
}: { }: {
library: LibraryItems; library: LibraryItems;
pendingElements: LibraryItem; pendingElements: LibraryItem;
@@ -106,6 +108,7 @@ const LibraryMenuItems = ({
onInsertShape: (elements: LibraryItem) => void; onInsertShape: (elements: LibraryItem) => void;
onAddToLibrary: (elements: LibraryItem) => void; onAddToLibrary: (elements: LibraryItem) => void;
setAppState: React.Component<any, AppState>["setState"]; setAppState: React.Component<any, AppState>["setState"];
setLibraryItems: (library: LibraryItems) => void;
}) => { }) => {
const isMobile = useIsMobile(); const isMobile = useIsMobile();
const numCells = library.length + (pendingElements.length > 0 ? 1 : 0); const numCells = library.length + (pendingElements.length > 0 ? 1 : 0);
@@ -149,6 +152,19 @@ const LibraryMenuItems = ({
}); });
}} }}
/> />
<ToolButton
key="reset"
type="button"
title={t("buttons.resetLibrary")}
aria-label={t("buttons.resetLibrary")}
icon={trash}
onClick={() => {
if (window.confirm(t("alerts.resetLibrary"))) {
Library.resetLibrary();
setLibraryItems([]);
}
}}
/>
<a href="https://libraries.excalidraw.com" target="_excalidraw_libraries"> <a href="https://libraries.excalidraw.com" target="_excalidraw_libraries">
{t("labels.libraries")} {t("labels.libraries")}
@@ -280,6 +296,7 @@ const LibraryMenu = ({
onInsertShape={onInsertShape} onInsertShape={onInsertShape}
pendingElements={pendingElements} pendingElements={pendingElements}
setAppState={setAppState} setAppState={setAppState}
setLibraryItems={setLibraryItems}
/> />
)} )}
</Island> </Island>
@@ -296,6 +313,7 @@ const LayerUI = ({
onLockToggle, onLockToggle,
onInsertElements, onInsertElements,
zenModeEnabled, zenModeEnabled,
showExitZenModeBtn,
toggleZenMode, toggleZenMode,
isCollaborating, isCollaborating,
onExportToBackend, onExportToBackend,
@@ -424,7 +442,15 @@ const LayerUI = ({
"transition-left": zenModeEnabled, "transition-left": zenModeEnabled,
})} })}
> >
<Island className={CLASSES.SHAPE_ACTIONS_MENU} padding={2}> <Island
className={CLASSES.SHAPE_ACTIONS_MENU}
padding={2}
style={{
// we want to make sure this doesn't overflow so substracting 200
// which is approximately height of zoom footer and top left menu items with some buffer
maxHeight: `${appState.height - 200}px`,
}}
>
<SelectedShapeActions <SelectedShapeActions
appState={appState} appState={appState}
elements={elements} elements={elements}
@@ -513,17 +539,18 @@ const LayerUI = ({
"transition-right": zenModeEnabled, "transition-right": zenModeEnabled,
})} })}
> >
{Array.from(appState.collaborators) {appState.collaborators.size > 0 &&
// Collaborator is either not initialized or is actually the current user. Array.from(appState.collaborators)
.filter(([_, client]) => Object.keys(client).length !== 0) // Collaborator is either not initialized or is actually the current user.
.map(([clientId, client]) => ( .filter(([_, client]) => Object.keys(client).length !== 0)
<Tooltip .map(([clientId, client]) => (
label={client.username || "Unknown user"} <Tooltip
key={clientId} label={client.username || "Unknown user"}
> key={clientId}
{actionManager.renderAction("goToCollaborator", clientId)} >
</Tooltip> {actionManager.renderAction("goToCollaborator", clientId)}
))} </Tooltip>
))}
</UserList> </UserList>
</div> </div>
</FixedSideContainer> </FixedSideContainer>
@@ -578,24 +605,12 @@ const LayerUI = ({
</div> </div>
<button <button
className={clsx("disable-zen-mode", { className={clsx("disable-zen-mode", {
"disable-zen-mode--visible": zenModeEnabled, "disable-zen-mode--visible": showExitZenModeBtn,
})} })}
onClick={toggleZenMode} onClick={toggleZenMode}
> >
{t("buttons.exitZenMode")} {t("buttons.exitZenMode")}
</button> </button>
{appState.scrolledOutside && (
<button
className="scroll-back-to-content"
onClick={() => {
setAppState({
...calculateScrollCenter(elements, appState, canvas),
});
}}
>
{t("buttons.scrollBackToContent")}
</button>
)}
</footer> </footer>
); );
@@ -658,6 +673,18 @@ const LayerUI = ({
{renderBottomAppMenu()} {renderBottomAppMenu()}
{renderGitHubCorner()} {renderGitHubCorner()}
{renderFooter()} {renderFooter()}
{appState.scrolledOutside && (
<button
className="scroll-back-to-content"
onClick={() => {
setAppState({
...calculateScrollCenter(elements, appState, canvas),
});
}}
>
{t("buttons.scrollBackToContent")}
</button>
)}
</div> </div>
); );
}; };
+20 -18
View File
@@ -152,24 +152,26 @@ export const MobileMenu = ({
<Stack.Col gap={4}> <Stack.Col gap={4}>
{renderCanvasActions()} {renderCanvasActions()}
{renderCustomFooter?.(true)} {renderCustomFooter?.(true)}
<fieldset> {appState.collaborators.size > 0 && (
<legend>{t("labels.collaborators")}</legend> <fieldset>
<UserList mobile> <legend>{t("labels.collaborators")}</legend>
{Array.from(appState.collaborators) <UserList mobile>
// Collaborator is either not initialized or is actually the current user. {Array.from(appState.collaborators)
.filter( // Collaborator is either not initialized or is actually the current user.
([_, client]) => Object.keys(client).length !== 0, .filter(
) ([_, client]) => Object.keys(client).length !== 0,
.map(([clientId, client]) => ( )
<React.Fragment key={clientId}> .map(([clientId, client]) => (
{actionManager.renderAction( <React.Fragment key={clientId}>
"goToCollaborator", {actionManager.renderAction(
clientId, "goToCollaborator",
)} clientId,
</React.Fragment> )}
))} </React.Fragment>
</UserList> ))}
</fieldset> </UserList>
</fieldset>
)}
</Stack.Col> </Stack.Col>
</div> </div>
</Section> </Section>
+10 -5
View File
@@ -1,8 +1,13 @@
@import "../css/variables.module"; @import "../css/variables.module";
.excalidraw { .excalidraw {
&.excalidraw-modal-container {
position: absolute;
z-index: 10;
}
.Modal { .Modal {
position: fixed; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
@@ -15,7 +20,7 @@
} }
.Modal__background { .Modal__background {
position: fixed; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
@@ -39,10 +44,10 @@
overflow-y: auto; overflow-y: auto;
// for modals, reset blurry bg // for modals, reset blurry bg
background: var(--bg-color-island); background: var(--island-bg-color);
backdrop-filter: none; backdrop-filter: none;
border: 1px solid var(--dialog-border); border: 1px solid var(--dialog-border-color);
box-shadow: 0 2px 10px transparentize($oc-black, 0.75); box-shadow: 0 2px 10px transparentize($oc-black, 0.75);
border-radius: 6px; border-radius: 6px;
@@ -82,7 +87,7 @@
} }
.Modal__content { .Modal__content {
position: fixed; position: absolute;
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
+1 -1
View File
@@ -54,7 +54,7 @@ const useBodyRoot = () => {
?.classList.contains("Appearance_dark"); ?.classList.contains("Appearance_dark");
const div = document.createElement("div"); const div = document.createElement("div");
div.classList.add("excalidraw"); div.classList.add("excalidraw", "excalidraw-modal-container");
if (isDarkTheme) { if (isDarkTheme) {
div.classList.add("Appearance_dark"); div.classList.add("Appearance_dark");
+1 -9
View File
@@ -1,14 +1,6 @@
.excalidraw { .excalidraw {
.popover { .popover {
position: absolute; position: fixed;
z-index: 10; z-index: 10;
} }
.popover .cover {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
} }
+42 -40
View File
@@ -1,51 +1,53 @@
@import "../css/variables.module"; @import "../css/variables.module";
.Stats { .excalidraw {
position: fixed; .Stats {
top: 64px; position: absolute;
right: 12px; top: 64px;
font-size: 12px; right: 12px;
z-index: 999; font-size: 12px;
z-index: 999;
h3 { h3 {
margin: 0 24px 8px 0; margin: 0 24px 8px 0;
white-space: nowrap; white-space: nowrap;
} }
.close { .close {
float: right; float: right;
height: 16px; height: 16px;
width: 16px; width: 16px;
cursor: pointer; cursor: pointer;
svg { svg {
width: 100%;
height: 100%;
}
}
table {
width: 100%; width: 100%;
height: 100%; th {
border-bottom: 1px solid var(--input-border-color);
padding: 4px;
}
tr {
td:nth-child(2) {
min-width: 24px;
text-align: right;
}
}
} }
}
table { :root[dir="rtl"] & {
width: 100%; left: 12px;
th { right: initial;
border-bottom: 1px solid var(--input-border-color);
padding: 4px; h3 {
} margin: 0 0 8px 24px;
tr { }
td:nth-child(2) { .close {
min-width: 24px; float: left;
text-align: right;
} }
} }
} }
:root[dir="rtl"] & {
left: 12px;
right: initial;
h3 {
margin: 0 0 8px 24px;
}
.close {
float: left;
}
}
} }
+3 -3
View File
@@ -2,18 +2,18 @@
.excalidraw { .excalidraw {
.TextInput { .TextInput {
color: var(--text-color-primary); color: var(--text-primary-color);
display: inline-block; display: inline-block;
border: 1.5px solid var(--button-gray-1); border: 1.5px solid var(--button-gray-1);
line-height: 1; line-height: 1;
padding: 0.75rem; padding: 0.75rem;
white-space: nowrap; white-space: nowrap;
border-radius: var(--space-factor); border-radius: var(--space-factor);
background-color: var(--input-background-color); background-color: var(--input-bg-color);
&:not(:focus) { &:not(:focus) {
&:hover { &:hover {
background-color: var(--input-hover-background-color); background-color: var(--input-hover-bg-color);
} }
} }
+1 -1
View File
@@ -11,7 +11,7 @@
left: 50%; left: 50%;
margin-left: -150px; margin-left: -150px;
padding: 4px 0; padding: 4px 0;
position: fixed; position: absolute;
text-align: center; text-align: center;
width: 300px; width: 300px;
z-index: 999999; z-index: 999999;
+13 -2
View File
@@ -1,9 +1,10 @@
import { FontFamily } from "./element/types"; import { FontFamily } from "./element/types";
import cssVariables from "./css/variables.module.scss";
export const APP_NAME = "Excalidraw"; export const APP_NAME = "Excalidraw";
export const DRAGGING_THRESHOLD = 10; // 10px export const DRAGGING_THRESHOLD = 10; // px
export const LINE_CONFIRM_THRESHOLD = 10; // 10px export const LINE_CONFIRM_THRESHOLD = 8; // px
export const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5; export const ELEMENT_SHIFT_TRANSLATE_AMOUNT = 5;
export const ELEMENT_TRANSLATE_AMOUNT = 1; export const ELEMENT_TRANSLATE_AMOUNT = 1;
export const TEXT_TO_CENTER_SNAP_THRESHOLD = 30; export const TEXT_TO_CENTER_SNAP_THRESHOLD = 30;
@@ -47,6 +48,7 @@ export enum EVENT {
TOUCH_END = "touchend", TOUCH_END = "touchend",
HASHCHANGE = "hashchange", HASHCHANGE = "hashchange",
VISIBILITY_CHANGE = "visibilitychange", VISIBILITY_CHANGE = "visibilitychange",
SCROLL = "scroll",
} }
export const ENV = { export const ENV = {
@@ -92,6 +94,7 @@ export const TOUCH_CTX_MENU_TIMEOUT = 500;
export const TITLE_TIMEOUT = 10000; export const TITLE_TIMEOUT = 10000;
export const TOAST_TIMEOUT = 5000; export const TOAST_TIMEOUT = 5000;
export const VERSION_TIMEOUT = 30000; export const VERSION_TIMEOUT = 30000;
export const SCROLL_TIMEOUT = 500;
export const ZOOM_STEP = 0.1; export const ZOOM_STEP = 0.1;
@@ -99,3 +102,11 @@ export const ZOOM_STEP = 0.1;
export const IDLE_THRESHOLD = 60_000; export const IDLE_THRESHOLD = 60_000;
// Report a user active each ACTIVE_THRESHOLD milliseconds // Report a user active each ACTIVE_THRESHOLD milliseconds
export const ACTIVE_THRESHOLD = 3_000; export const ACTIVE_THRESHOLD = 3_000;
export const MODES = {
VIEW: "viewMode",
ZEN: "zenMode",
GRID: "gridMode",
};
export const APPEARANCE_FILTER = cssVariables.appearanceFilter;
+15 -16
View File
@@ -8,9 +8,8 @@
} }
.excalidraw { .excalidraw {
color: var(--text-color-primary); color: var(--text-primary-color);
display: flex; display: flex;
position: fixed;
top: 0; top: 0;
bottom: 0; bottom: 0;
left: 0; left: 0;
@@ -51,10 +50,10 @@
} }
.FixedSideContainer { .FixedSideContainer {
padding-top: var(--sat, 0px); padding-top: var(--sat, 0);
padding-right: var(--sar, 0px); padding-right: var(--sar, 0);
padding-bottom: var(--sab, 0px); padding-bottom: var(--sab, 0);
padding-left: var(--sal, 0px); padding-left: var(--sal, 0);
} }
.panelRow { .panelRow {
@@ -72,7 +71,7 @@
margin-top: 0.333rem; margin-top: 0.333rem;
margin-bottom: 0.333rem; margin-bottom: 0.333rem;
font-size: 0.75rem; font-size: 0.75rem;
color: var(--text-color-primary); color: var(--text-primary-color);
font-weight: bold; font-weight: bold;
display: block; display: block;
} }
@@ -227,7 +226,8 @@
.App-top-bar { .App-top-bar {
z-index: var(--zIndex-layerUI); z-index: var(--zIndex-layerUI);
display: flex; display: flex;
justify-content: center; flex-direction: column;
align-items: center;
} }
.App-bottom-bar { .App-bottom-bar {
@@ -237,10 +237,10 @@
left: 0; left: 0;
right: 0; right: 0;
--bar-padding: calc(4 * var(--space-factor)); --bar-padding: calc(4 * var(--space-factor));
padding-top: #{"max(var(--bar-padding), var(--sat, 0px))"}; padding-top: #{"max(var(--bar-padding), var(--sat,0))"};
padding-right: var(--sar, 0px); padding-right: var(--sar, 0);
padding-bottom: var(--sab, 0px); padding-bottom: var(--sab, 0);
padding-left: var(--sal, 0px); padding-left: var(--sal, 0);
z-index: 4; z-index: 4;
display: flex; display: flex;
align-items: flex-end; align-items: flex-end;
@@ -257,7 +257,7 @@
pointer-events: initial; pointer-events: initial;
.panelColumn { .panelColumn {
padding: 8px 8px 0px 8px; padding: 8px 8px 0 8px;
} }
} }
} }
@@ -361,7 +361,6 @@
.App-menu__left { .App-menu__left {
overflow-y: auto; overflow-y: auto;
max-height: calc(100vh - 236px);
} }
.dropdown-select { .dropdown-select {
@@ -433,7 +432,7 @@
.scroll-back-to-content { .scroll-back-to-content {
color: var(--popup-text-color); color: var(--popup-text-color);
position: fixed; position: absolute;
left: 50%; left: 50%;
bottom: 30px; bottom: 30px;
transform: translateX(-50%); transform: translateX(-50%);
@@ -461,7 +460,7 @@
display: none; display: none;
} }
.scroll-back-to-content { .scroll-back-to-content {
bottom: calc(80px + var(--sab, 0px)); bottom: calc(80px + var(--sab, 0));
z-index: -1; z-index: -1;
} }
} }
+43 -42
View File
@@ -1,43 +1,44 @@
@import "open-color/open-color.scss"; @import "open-color/open-color.scss";
@import "./variables.module.scss";
:root { :root {
--bg-color-island: rgba(255, 255, 255, 0.9); --appearance-filter: none;
--popup-background-color: #{$oc-white}; --button-destructive-bg-color: #{$oc-red-1};
--space-factor: 0.25rem; --button-destructive-color: #{$oc-red-9};
--button-gray-1: #{$oc-gray-2}; --button-gray-1: #{$oc-gray-2};
--button-gray-2: #{$oc-gray-4}; --button-gray-2: #{$oc-gray-4};
--button-gray-3: #{$oc-gray-5}; --button-gray-3: #{$oc-gray-5};
--input-border-color: #{$oc-gray-3}; --button-special-active-bg-color: #{$oc-green-0};
--input-background-color: #{$oc-white}; --dialog-border-color: #{$oc-gray-6};
--input-hover-background-color: #{$oc-gray-1}; --dropdown-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>');
--input-label-color: #{$oc-gray-7}; --focus-highlight-color: #{$oc-blue-2};
--icon-fill-color: #{$oc-black}; --icon-fill-color: #{$oc-black};
--icon-green-fill-color: #{$oc-green-9}; --icon-green-fill-color: #{$oc-green-9};
--input-bg-color: #{$oc-white};
--input-border-color: #{$oc-gray-3};
--input-hover-bg-color: #{$oc-gray-1};
--input-label-color: #{$oc-gray-7};
--island-bg-color: rgba(255, 255, 255, 0.9);
--keybinding-color: #{$oc-gray-5}; --keybinding-color: #{$oc-gray-5};
--sat: env(safe-area-inset-top); --link-color: #{$oc-blue-7};
--overlay-bg-color: #{transparentize($oc-white, 0.12)};
--popup-bg-color: #{$oc-white};
--popup-secondary-bg-color: #{$oc-gray-1};
--popup-text-color: #{$oc-black};
--popup-text-inverted-color: #{$oc-white};
--sab: env(safe-area-inset-bottom); --sab: env(safe-area-inset-bottom);
--sal: env(safe-area-inset-left); --sal: env(safe-area-inset-left);
--sar: env(safe-area-inset-right); --sar: env(safe-area-inset-right);
--text-color-primary: #{$oc-gray-8}; --sat: env(safe-area-inset-top);
--shadow-island: 0 1px 5px #{transparentize($oc-black, 0.85)};
--overlay-background-color: #{transparentize($oc-white, 0.12)};
--dropdown-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>');
--focus-highlight-color: #{$oc-blue-2};
--select-highlight-color: #{$oc-blue-5}; --select-highlight-color: #{$oc-blue-5};
--appearance-filter: none; --shadow-island: 0 1px 5px #{transparentize($oc-black, 0.85)};
--button-special-active-background-color: #{$oc-green-0}; --space-factor: 0.25rem;
--button-destructive-color: #{$oc-red-9}; --text-primary-color: #{$oc-gray-8};
--button-destructive-background-color: #{$oc-red-1};
--popup-secondary-background-color: #{$oc-gray-1};
--popup-text-color: #{$oc-black};
--popup-text-inverted-color: #{$oc-white};
--dialog-border: #{$oc-gray-6};
--link-color: #{$oc-blue-7};
} }
.excalidraw { .excalidraw {
&.Appearance_dark { &.Appearance_dark {
background: #000; background: $oc-black;
&.Appearance_dark-background-none { &.Appearance_dark-background-none {
background: none; background: none;
@@ -45,31 +46,31 @@
} }
&.Appearance_dark { &.Appearance_dark {
--text-color-primary: #{$oc-gray-4}; --appearance-filter: #{$appearance-filter};
--bg-color-island: #1e1e1e; --button-destructive-bg-color: #5a0000;
--popup-background-color: #2c2c2c; --button-destructive-color: #{$oc-red-3};
--button-gray-1: #363636; --button-gray-1: #363636;
--button-gray-2: #272727; --button-gray-2: #272727;
--button-gray-3: #222; --button-gray-3: #222;
--input-border-color: #2e2e2e; --button-special-active-bg-color: #204624;
--input-background-color: #121212; --dialog-border-color: #{$oc-gray-9};
--input-hover-background-color: #181818;
--input-label-color: #{$oc-gray-2};
--icon-fill-color: #{$oc-gray-4};
--icon-green-fill-color: #{$oc-green-4};
--keybinding-color: #{$oc-gray-6};
--shadow-island: 0 1px 5px #{transparentize($oc-black, 0.7)};
--overlay-background-color: rgba(30, 30, 30, 0.88);
--dropdown-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>'); --dropdown-icon: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="292.4" height="292.4" viewBox="0 0 292 292"><path fill="%23ced4da" d="M287 197L159 69c-4-3-8-5-13-5s-9 2-13 5L5 197c-3 4-5 8-5 13s2 9 5 13c4 4 8 5 13 5h256c5 0 9-1 13-5s5-8 5-13-1-9-5-13z"/></svg>');
--focus-highlight-color: #{$oc-blue-6}; --focus-highlight-color: #{$oc-blue-6};
--select-highlight-color: #{$oc-blue-4}; --icon-fill-color: #{$oc-gray-4};
--appearance-filter: invert(93%) hue-rotate(180deg); --icon-green-fill-color: #{$oc-green-4};
--button-special-active-background-color: #204624; --input-bg-color: #121212;
--button-destructive-color: #{$oc-red-3}; --input-border-color: #2e2e2e;
--button-destructive-background-color: #5a0000; --input-hover-bg-color: #181818;
--popup-secondary-background-color: #222; --input-label-color: #{$oc-gray-2};
--island-bg-color: #1e1e1e;
--keybinding-color: #{$oc-gray-6};
--overlay-bg-color: #{transparentize($oc-gray-8, 0.88)};
--popup-bg-color: #2c2c2c;
--popup-secondary-bg-color: #222;
--popup-text-color: #{$oc-gray-4}; --popup-text-color: #{$oc-gray-4};
--popup-text-inverted-color: #2c2c2c; --popup-text-inverted-color: #2c2c2c;
--dialog-border: #{$oc-gray-9}; --select-highlight-color: #{$oc-blue-4};
--shadow-island: 0 1px 5px #{transparentize($oc-black, 0.7)};
--text-primary-color: #{$oc-gray-4};
} }
} }
+2
View File
@@ -2,7 +2,9 @@
// keep up to date with is-mobile.tsx // keep up to date with is-mobile.tsx
$is-mobile-query: "(max-width: 600px), (max-height: 500px) and (max-width: 1000px)"; $is-mobile-query: "(max-width: 600px), (max-height: 500px) and (max-width: 1000px)";
$appearance-filter: "invert(93%) hue-rotate(180deg)";
:export { :export {
isMobileQuery: unquote($is-mobile-query); isMobileQuery: unquote($is-mobile-query);
appearanceFilter: unquote($appearance-filter);
} }
+1
View File
@@ -41,6 +41,7 @@ export const exportCanvas = async (
if (type === "svg" || type === "clipboard-svg") { if (type === "svg" || type === "clipboard-svg") {
const tempSvg = exportToSvg(elements, { const tempSvg = exportToSvg(elements, {
exportBackground, exportBackground,
exportWithDarkMode: appState.exportWithDarkMode,
viewBackgroundColor, viewBackgroundColor,
exportPadding, exportPadding,
scale, scale,
+1 -1
View File
@@ -141,7 +141,7 @@ export const restoreElements = (
}, [] as ExcalidrawElement[]); }, [] as ExcalidrawElement[]);
}; };
const restoreAppState = ( export const restoreAppState = (
appState: ImportedDataState["appState"], appState: ImportedDataState["appState"],
localAppState: Partial<AppState> | null, localAppState: Partial<AppState> | null,
): AppState => { ): AppState => {
+1
View File
@@ -15,6 +15,7 @@ export interface ImportedDataState {
source?: string; source?: string;
elements?: DataState["elements"] | null; elements?: DataState["elements"] | null;
appState?: Partial<DataState["appState"]> | null; appState?: Partial<DataState["appState"]> | null;
scrollToCenter?: boolean;
} }
export interface LibraryData { export interface LibraryData {
+1 -1
View File
@@ -129,7 +129,7 @@ export class LinearElementEditor {
isDragging && isDragging &&
(activePointIndex === 0 || activePointIndex === element.points.length - 1) (activePointIndex === 0 || activePointIndex === element.points.length - 1)
) { ) {
if (isPathALoop(element.points)) { if (isPathALoop(element.points, appState.zoom.value)) {
LinearElementEditor.movePoint( LinearElementEditor.movePoint(
element, element,
activePointIndex, activePointIndex,
+19 -3
View File
@@ -38,6 +38,7 @@ export const textWysiwyg = ({
onSubmit, onSubmit,
getViewportCoords, getViewportCoords,
element, element,
canvas,
}: { }: {
id: ExcalidrawElement["id"]; id: ExcalidrawElement["id"];
appState: AppState; appState: AppState;
@@ -45,6 +46,7 @@ export const textWysiwyg = ({
onSubmit: (text: string) => void; onSubmit: (text: string) => void;
getViewportCoords: (x: number, y: number) => [number, number]; getViewportCoords: (x: number, y: number) => [number, number];
element: ExcalidrawElement; element: ExcalidrawElement;
canvas: HTMLCanvasElement | null;
}) => { }) => {
const updateWysiwygStyle = () => { const updateWysiwygStyle = () => {
const updatedElement = Scene.getScene(element)?.getElement(id); const updatedElement = Scene.getScene(element)?.getElement(id);
@@ -151,6 +153,10 @@ export const textWysiwyg = ({
editable.oninput = null; editable.oninput = null;
editable.onkeydown = null; editable.onkeydown = null;
if (observer) {
observer.disconnect();
}
window.removeEventListener("resize", updateWysiwygStyle); window.removeEventListener("resize", updateWysiwygStyle);
window.removeEventListener("wheel", stopEvent, true); window.removeEventListener("wheel", stopEvent, true);
window.removeEventListener("pointerdown", onPointerDown); window.removeEventListener("pointerdown", onPointerDown);
@@ -197,9 +203,19 @@ export const textWysiwyg = ({
let isDestroyed = false; let isDestroyed = false;
editable.onblur = handleSubmit; editable.onblur = handleSubmit;
// reposition wysiwyg in case of window resize. Happens on mobile when
// device keyboard is opened. // reposition wysiwyg in case of canvas is resized. Using ResizeObserver
window.addEventListener("resize", updateWysiwygStyle); // is preferred so we catch changes from host, where window may not resize.
let observer: ResizeObserver | null = null;
if (canvas && "ResizeObserver" in window) {
observer = new window.ResizeObserver(() => {
updateWysiwygStyle();
});
observer.observe(canvas);
} else {
window.addEventListener("resize", updateWysiwygStyle);
}
window.addEventListener("pointerdown", onPointerDown); window.addEventListener("pointerdown", onPointerDown);
window.addEventListener("wheel", stopEvent, { window.addEventListener("wheel", stopEvent, {
passive: false, passive: false,
+5 -1
View File
@@ -256,6 +256,7 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
if (elements) { if (elements) {
scenePromise.resolve({ scenePromise.resolve({
elements, elements,
scrollToCenter: true,
}); });
} }
} catch (error) { } catch (error) {
@@ -307,7 +308,10 @@ class CollabWrapper extends PureComponent<Props, CollabState> {
init: true, init: true,
}); });
// noop if already resolved via init from firebase // noop if already resolved via init from firebase
scenePromise.resolve({ elements: reconciledElements }); scenePromise.resolve({
elements: reconciledElements,
scrollToCenter: true,
});
} }
break; break;
} }
+17 -3
View File
@@ -7,7 +7,7 @@
} }
.RoomDialog-link { .RoomDialog-link {
color: var(--text-color-primary); color: var(--text-primary-color);
min-width: 0; min-width: 0;
flex: 1 1 auto; flex: 1 1 auto;
margin-inline-start: 1em; margin-inline-start: 1em;
@@ -32,15 +32,29 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@media #{$is-mobile-query} {
flex-direction: column;
align-items: stretch;
}
}
@media #{$is-mobile-query} {
.RoomDialog-usernameLabel {
font-weight: bold;
}
} }
.RoomDialog-username { .RoomDialog-username {
background-color: var(--input-background-color); background-color: var(--input-bg-color);
border-color: var(--input-border-color); border-color: var(--input-border-color);
appearance: none; appearance: none;
min-width: 0; min-width: 0;
flex: 1 1 auto; flex: 1 1 auto;
margin-inline-start: 1em; margin-inline-start: 1em;
@media #{$is-mobile-query} {
margin-top: 0.5em;
margin-inline-start: 0;
}
height: 2.5rem; height: 2.5rem;
font-size: 1em; font-size: 1em;
line-height: 1.5; line-height: 1.5;
@@ -53,7 +67,7 @@
} }
.Modal .RoomDialog-stopSession { .Modal .RoomDialog-stopSession {
background-color: var(--button-destructive-background-color); background-color: var(--button-destructive-bg-color);
.ToolIcon__label, .ToolIcon__label,
.ToolIcon__icon svg { .ToolIcon__icon svg {
+5 -1
View File
@@ -119,7 +119,11 @@ const RoomDialog = ({
); );
}; };
return ( return (
<Dialog small onCloseRequest={handleClose} title={t("labels.createRoom")}> <Dialog
small
onCloseRequest={handleClose}
title={t("labels.liveCollaboration")}
>
{renderRoomDialog()} {renderRoomDialog()}
</Dialog> </Dialog>
); );
+15 -4
View File
@@ -13,7 +13,7 @@ import { ExcalidrawImperativeAPI } from "../components/App";
import { ErrorDialog } from "../components/ErrorDialog"; import { ErrorDialog } from "../components/ErrorDialog";
import { TopErrorBoundary } from "../components/TopErrorBoundary"; import { TopErrorBoundary } from "../components/TopErrorBoundary";
import { APP_NAME, EVENT, TITLE_TIMEOUT, VERSION_TIMEOUT } from "../constants"; import { APP_NAME, EVENT, TITLE_TIMEOUT, VERSION_TIMEOUT } from "../constants";
import { ImportedDataState } from "../data/types"; import { DataState, ImportedDataState } from "../data/types";
import { import {
ExcalidrawElement, ExcalidrawElement,
NonDeletedExcalidrawElement, NonDeletedExcalidrawElement,
@@ -75,18 +75,30 @@ const initializeScene = async (opts: {
const initialData = importFromLocalStorage(); const initialData = importFromLocalStorage();
let scene = await loadScene(null, null, initialData); let scene: DataState & { scrollToCenter?: boolean } = await loadScene(
null,
null,
initialData,
);
let roomLinkData = getCollaborationLinkData(window.location.href); let roomLinkData = getCollaborationLinkData(window.location.href);
const isExternalScene = !!(id || jsonMatch || roomLinkData); const isExternalScene = !!(id || jsonMatch || roomLinkData);
if (isExternalScene) { if (isExternalScene) {
if (roomLinkData || window.confirm(t("alerts.loadSceneOverridePrompt"))) { if (
// don't prompt if scene is empty
!scene.elements.length ||
// don't prompt for collab scenes because we don't override local storage
roomLinkData ||
// otherwise, prompt whether user wants to override current scene
window.confirm(t("alerts.loadSceneOverridePrompt"))
) {
// Backwards compatibility with legacy url format // Backwards compatibility with legacy url format
if (id) { if (id) {
scene = await loadScene(id, null, initialData); scene = await loadScene(id, null, initialData);
} else if (jsonMatch) { } else if (jsonMatch) {
scene = await loadScene(jsonMatch[1], jsonMatch[2], initialData); scene = await loadScene(jsonMatch[1], jsonMatch[2], initialData);
} }
scene.scrollToCenter = true;
if (!roomLinkData) { if (!roomLinkData) {
window.history.replaceState({}, APP_NAME, window.location.origin); window.history.replaceState({}, APP_NAME, window.location.origin);
} }
@@ -274,7 +286,6 @@ function ExcalidrawWrapper() {
width={dimensions.width} width={dimensions.width}
height={dimensions.height} height={dimensions.height}
initialData={initialStatePromiseRef.current.promise} initialData={initialStatePromiseRef.current.promise}
user={{ name: collabAPI?.username }}
onCollabButtonClick={collabAPI?.onCollabButtonClick} onCollabButtonClick={collabAPI?.onCollabButtonClick}
isCollaborating={collabAPI?.isCollaborating()} isCollaborating={collabAPI?.isCollaborating()}
onPointerUpdate={collabAPI?.onPointerUpdate} onPointerUpdate={collabAPI?.onPointerUpdate}
+1
View File
@@ -12,6 +12,7 @@ interface Document {
interface Window { interface Window {
ClipboardItem: any; ClipboardItem: any;
__EXCALIDRAW_SHA__: string | undefined; __EXCALIDRAW_SHA__: string | undefined;
EXCALIDRAW_ASSET_PATH: string | undefined;
gtag: Function; gtag: Function;
} }
+28 -12
View File
@@ -1,5 +1,6 @@
import fallbackLangData from "./locales/en.json"; import fallbackLangData from "./locales/en.json";
import percentages from "./locales/percentages.json"; import percentages from "./locales/percentages.json";
import { ENV } from "./constants";
const COMPLETION_THRESHOLD = 85; const COMPLETION_THRESHOLD = 85;
@@ -55,25 +56,33 @@ export const languages: Language[] = allLanguages
COMPLETION_THRESHOLD, COMPLETION_THRESHOLD,
); );
const TEST_LANG_CODE = "__test__";
if (process.env.NODE_ENV === ENV.DEVELOPMENT) {
languages.unshift(
{ code: TEST_LANG_CODE, label: "test language" },
{
code: `${TEST_LANG_CODE}.rtl`,
label: "\u{202a}test language (rtl)\u{202c}",
rtl: true,
},
);
}
let currentLang: Language = defaultLang; let currentLang: Language = defaultLang;
let currentLangData = {}; let currentLangData = {};
export const setLanguage = async (lang: Language) => { export const setLanguage = async (lang: Language) => {
currentLang = lang; currentLang = lang;
document.documentElement.dir = currentLang.rtl ? "rtl" : "ltr"; document.documentElement.dir = currentLang.rtl ? "rtl" : "ltr";
document.documentElement.lang = currentLang.code;
currentLangData = await import( if (lang.code.startsWith(TEST_LANG_CODE)) {
/* webpackChunkName: "i18n-[request]" */ `./locales/${currentLang.code}.json` currentLangData = {};
); } else {
}; currentLangData = await import(
/* webpackChunkName: "i18n-[request]" */ `./locales/${currentLang.code}.json`
export const setLanguageFirstTime = async (lang: Language) => { );
currentLang = lang; }
document.documentElement.dir = currentLang.rtl ? "rtl" : "ltr";
currentLangData = await import(
/* webpackChunkName: "i18n-[request]" */ `./locales/${currentLang.code}.json`
);
}; };
export const getLanguage = () => currentLang; export const getLanguage = () => currentLang;
@@ -93,6 +102,13 @@ const findPartsForData = (data: any, parts: string[]) => {
}; };
export const t = (path: string, replacement?: { [key: string]: string }) => { export const t = (path: string, replacement?: { [key: string]: string }) => {
if (currentLang.code.startsWith(TEST_LANG_CODE)) {
const name = replacement
? `${path}(${JSON.stringify(replacement).slice(1, -1)})`
: path;
return `\u{202a}[[${name}]]\u{202c}`;
}
const parts = path.split("."); const parts = path.split(".");
let translation = let translation =
findPartsForData(currentLangData, parts) || findPartsForData(currentLangData, parts) ||
+2 -2
View File
@@ -54,8 +54,8 @@ const elements = [
}, },
]; ];
registerFont("./public/FG_Virgil.ttf", { family: "Virgil" }); registerFont("./public/Virgil.woff2", { family: "Virgil" });
registerFont("./public/Cascadia.ttf", { family: "Cascadia" }); registerFont("./public/Cascadia.woff2", { family: "Cascadia" });
const canvas = exportToCanvas( const canvas = exportToCanvas(
elements as any, elements as any,
-1
View File
@@ -4,7 +4,6 @@ import ExcalidrawApp from "./excalidraw-app";
import "./excalidraw-app/pwa"; import "./excalidraw-app/pwa";
import "./excalidraw-app/sentry"; import "./excalidraw-app/sentry";
window.__EXCALIDRAW_SHA__ = process.env.REACT_APP_GIT_SHA; window.__EXCALIDRAW_SHA__ = process.env.REACT_APP_GIT_SHA;
ReactDOM.render(<ExcalidrawApp />, document.getElementById("root")); ReactDOM.render(<ExcalidrawApp />, document.getElementById("root"));
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "الطبقات", "layers": "الطبقات",
"actions": "الإجراءات", "actions": "الإجراءات",
"language": "اللغة", "language": "اللغة",
"createRoom": "مشاركة الجلسة مباشرة", "liveCollaboration": "",
"duplicateSelection": "تكرار", "duplicateSelection": "تكرار",
"untitled": "غير معنون", "untitled": "غير معنون",
"name": "الاسم", "name": "الاسم",
@@ -77,7 +77,7 @@
"group": "تحديد مجموعة", "group": "تحديد مجموعة",
"ungroup": "إلغاء تحديد مجموعة", "ungroup": "إلغاء تحديد مجموعة",
"collaborators": "المتعاونون", "collaborators": "المتعاونون",
"gridMode": "وضع الشبكة", "showGrid": "",
"addToLibrary": "أضف إلى المكتبة", "addToLibrary": "أضف إلى المكتبة",
"removeFromLibrary": "حذف من المكتبة", "removeFromLibrary": "حذف من المكتبة",
"libraryLoadingMessage": "جارٍ تحميل المكتبة…", "libraryLoadingMessage": "جارٍ تحميل المكتبة…",
@@ -117,7 +117,7 @@
"edit": "تعديل", "edit": "تعديل",
"undo": "تراجع", "undo": "تراجع",
"redo": "إعادة تنفيذ", "redo": "إعادة تنفيذ",
"roomDialog": "بدء المشاركة الحية", "resetLibrary": "",
"createNewRoom": "إنشاء غرفة جديدة", "createNewRoom": "إنشاء غرفة جديدة",
"fullScreen": "شاشة كاملة", "fullScreen": "شاشة كاملة",
"darkMode": "الوضع المظلم", "darkMode": "الوضع المظلم",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "حصل خطأ أثناء تحميل مكتبة الطرف الثالث.", "errorLoadingLibrary": "حصل خطأ أثناء تحميل مكتبة الطرف الثالث.",
"confirmAddLibrary": "هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟", "confirmAddLibrary": "هذا سيضيف {{numShapes}} شكل إلى مكتبتك. هل أنت متأكد؟",
"imageDoesNotContainScene": "استيراد الصور غير مدعوم في الوقت الراهن.\n\nهل تريد استيراد مشهد؟ لا يبدو أن هذه الصورة تحتوي على أي بيانات مشهد. هل قمت بسماح هذا أثناء التصدير؟", "imageDoesNotContainScene": "استيراد الصور غير مدعوم في الوقت الراهن.\n\nهل تريد استيراد مشهد؟ لا يبدو أن هذه الصورة تحتوي على أي بيانات مشهد. هل قمت بسماح هذا أثناء التصدير؟",
"cannotRestoreFromImage": "تعذر استعادة المشهد من ملف الصورة" "cannotRestoreFromImage": "تعذر استعادة المشهد من ملف الصورة",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "تحديد", "selection": "تحديد",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+30 -27
View File
@@ -8,11 +8,11 @@
"cut": "Изрежи", "cut": "Изрежи",
"copy": "Копирай", "copy": "Копирай",
"copyAsPng": "Копиране в клипборда", "copyAsPng": "Копиране в клипборда",
"copyAsSvg": "Копиране в клипборда", "copyAsSvg": "Копирано в клипборда като SVG",
"bringForward": "Преместване на~пред", "bringForward": "Преместване напред",
"sendToBack": "Изнасяне назад", "sendToBack": "Изнасяне назад",
"bringToFront": "~Изнасяне отпред", "bringToFront": "Изнасяне отпред",
"sendBackward": "Изпрати назад", "sendBackward": "Изпрати отзад",
"delete": "Изтрий", "delete": "Изтрий",
"copyStyles": "Копирайте стилове", "copyStyles": "Копирайте стилове",
"pasteStyles": "Постави стилове", "pasteStyles": "Постави стилове",
@@ -68,7 +68,7 @@
"layers": "Слоеве", "layers": "Слоеве",
"actions": "Действия", "actions": "Действия",
"language": "Език", "language": "Език",
"createRoom": "Споделете сесия за сътрудничество на живо", "liveCollaboration": "",
"duplicateSelection": "Дублирай", "duplicateSelection": "Дублирай",
"untitled": "Неозаглавено", "untitled": "Неозаглавено",
"name": "Име", "name": "Име",
@@ -77,7 +77,7 @@
"group": "Групирай селекцията", "group": "Групирай селекцията",
"ungroup": "Спри групирането на селекцията", "ungroup": "Спри групирането на селекцията",
"collaborators": "Сътрудници", "collaborators": "Сътрудници",
"gridMode": "Решетъчен режим", "showGrid": "Показване на мрежа",
"addToLibrary": "Добавяне към библиотеката", "addToLibrary": "Добавяне към библиотеката",
"removeFromLibrary": "Премахване от библиотеката", "removeFromLibrary": "Премахване от библиотеката",
"libraryLoadingMessage": "Зареждане на библиотеката…", "libraryLoadingMessage": "Зареждане на библиотеката…",
@@ -92,7 +92,7 @@
"centerHorizontally": "Центрирай хоризонтално", "centerHorizontally": "Центрирай хоризонтално",
"distributeHorizontally": "Разпредели хоризонтално", "distributeHorizontally": "Разпредели хоризонтално",
"distributeVertically": "Разпредели вертикално", "distributeVertically": "Разпредели вертикално",
"viewMode": "" "viewMode": "Изглед"
}, },
"buttons": { "buttons": {
"clearReset": "Нулиране на платно", "clearReset": "Нулиране на платно",
@@ -117,7 +117,7 @@
"edit": "Редактиране", "edit": "Редактиране",
"undo": "Отмяна", "undo": "Отмяна",
"redo": "Повтори", "redo": "Повтори",
"roomDialog": "Започнете сътрудничество на живо", "resetLibrary": "",
"createNewRoom": "Създай нова стая", "createNewRoom": "Създай нова стая",
"fullScreen": "На цял екран", "fullScreen": "На цял екран",
"darkMode": "Тъмен режим", "darkMode": "Тъмен режим",
@@ -136,11 +136,12 @@
"decryptFailed": "Данните не можаха да се дешифрират.", "decryptFailed": "Данните не можаха да се дешифрират.",
"uploadedSecurly": "Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.", "uploadedSecurly": "Качването е защитено с криптиране от край до край, което означава, че сървърът Excalidraw и трети страни не могат да четат съдържанието.",
"loadSceneOverridePrompt": "Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?", "loadSceneOverridePrompt": "Зареждането на външна рисунка ще презапише настоящото ви съдържание. Желаете ли да продължите?",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "Прекратяването на сесията ще презапише предишната, локално запазена, рисунка. Сигурни ли сте?\n\n(Ако искате да продължите с локалната рисунка, просто затворете таба на браузъра.)",
"errorLoadingLibrary": "Възникна грешка при зареждането на външна библиотека.", "errorLoadingLibrary": "Възникна грешка при зареждането на външна библиотека.",
"confirmAddLibrary": "Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?", "confirmAddLibrary": "Ще се добавят {{numShapes}} фигура(и) във вашата библиотека. Сигурни ли сте?",
"imageDoesNotContainScene": "Импортирането на картинки не се поддържва в момента.\n\nИскате да импортнете сцена? Тази картинка не съдържа данни от сцена. Разрешили ли сте последното при експортирането?", "imageDoesNotContainScene": "Импортирането на картинки не се поддържва в момента.\n\nИскате да импортнете сцена? Тази картинка не съдържа данни от сцена. Разрешили ли сте последното при експортирането?",
"cannotRestoreFromImage": "Не може да бъде възстановена сцена от този файл" "cannotRestoreFromImage": "Не може да бъде възстановена сцена от този файл",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Селекция", "selection": "Селекция",
@@ -202,24 +203,24 @@
"title": "Грешка" "title": "Грешка"
}, },
"helpDialog": { "helpDialog": {
"blog": "", "blog": "Прочетете нашия блог",
"click": "клик", "click": "клик",
"curvedArrow": "", "curvedArrow": "Извита стрелка",
"curvedLine": "", "curvedLine": "Извита линия",
"documentation": "", "documentation": "Документация",
"drag": "плъзнете", "drag": "плъзнете",
"editor": "Редактор", "editor": "Редактор",
"github": "", "github": "Намерихте проблем? Изпратете",
"howto": "", "howto": "Следвайте нашите ръководства",
"or": "или", "or": "или",
"preventBinding": "", "preventBinding": "Спри прилепяне на стрелките",
"shapes": "Фигури", "shapes": "Фигури",
"shortcuts": "Клавиши за бърз достъп", "shortcuts": "Клавиши за бърз достъп",
"textFinish": "", "textFinish": "Завършете редактирането (текст)",
"textNewLine": "", "textNewLine": "Добавяне на нов ред (текст)",
"title": "", "title": "Помощ",
"view": "Преглед", "view": "Преглед",
"zoomToFit": "", "zoomToFit": "Приближи докато се виждат всички елементи",
"zoomToSelection": "Приближи селекцията" "zoomToSelection": "Приближи селекцията"
}, },
"encrypted": { "encrypted": {
@@ -235,14 +236,16 @@
"storage": "Съхранение на данни", "storage": "Съхранение на данни",
"title": "Статистика за хакери", "title": "Статистика за хакери",
"total": "Общо", "total": "Общо",
"version": "", "version": "Версия",
"versionCopy": "", "versionCopy": "Настисни за да копираш",
"versionNotAvailable": "", "versionNotAvailable": "Версията не е налична",
"width": "Широчина" "width": "Широчина"
}, },
"toast": { "toast": {
"copyStyles": "", "copyStyles": "Копирани стилове.",
"copyToClipboard": "", "copyToClipboard": "Копирано в клипборда.",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "Копирано в клипборда като PNG.",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Capes", "layers": "Capes",
"actions": "Accions", "actions": "Accions",
"language": "Llengua", "language": "Llengua",
"createRoom": "Compartir una sessió de col·laboració en directe", "liveCollaboration": "",
"duplicateSelection": "Duplicar", "duplicateSelection": "Duplicar",
"untitled": "Sense títol", "untitled": "Sense títol",
"name": "Nom", "name": "Nom",
@@ -77,7 +77,7 @@
"group": "Agrupar la selecció", "group": "Agrupar la selecció",
"ungroup": "Desagrupar la selecció", "ungroup": "Desagrupar la selecció",
"collaborators": "Col·laboradors", "collaborators": "Col·laboradors",
"gridMode": "Mode quadrícula", "showGrid": "",
"addToLibrary": "Afegir a la biblioteca", "addToLibrary": "Afegir a la biblioteca",
"removeFromLibrary": "Eliminar de la biblioteca", "removeFromLibrary": "Eliminar de la biblioteca",
"libraryLoadingMessage": "Carregant la biblioteca…", "libraryLoadingMessage": "Carregant la biblioteca…",
@@ -117,7 +117,7 @@
"edit": "Editar", "edit": "Editar",
"undo": "Desfer", "undo": "Desfer",
"redo": "Refer", "redo": "Refer",
"roomDialog": "Començar col·laboració en directe", "resetLibrary": "",
"createNewRoom": "Crear sala nova", "createNewRoom": "Crear sala nova",
"fullScreen": "Pantalla completa", "fullScreen": "Pantalla completa",
"darkMode": "Mode fosc", "darkMode": "Mode fosc",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "S'ha produït un error en carregar la biblioteca de tercers.", "errorLoadingLibrary": "S'ha produït un error en carregar la biblioteca de tercers.",
"confirmAddLibrary": "Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?", "confirmAddLibrary": "Això afegirà {{numShapes}} forma(es) a la vostra biblioteca. Estàs segur?",
"imageDoesNotContainScene": "En aquest moment no sadmet la importació dimatges.\n\nVolies importar una escena? Sembla que aquesta imatge no conté cap dada descena. Ho has activat durant l'exportació?", "imageDoesNotContainScene": "En aquest moment no sadmet la importació dimatges.\n\nVolies importar una escena? Sembla que aquesta imatge no conté cap dada descena. Ho has activat durant l'exportació?",
"cannotRestoreFromImage": "Lescena no sha pogut restaurar des daquest fitxer dimatge" "cannotRestoreFromImage": "Lescena no sha pogut restaurar des daquest fitxer dimatge",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Selecció", "selection": "Selecció",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+14 -11
View File
@@ -68,7 +68,7 @@
"layers": "Ebenen", "layers": "Ebenen",
"actions": "Aktionen", "actions": "Aktionen",
"language": "Sprache", "language": "Sprache",
"createRoom": "Live-Kollaborationssitzung teilen", "liveCollaboration": "Live-Zusammenarbeit",
"duplicateSelection": "Duplizieren", "duplicateSelection": "Duplizieren",
"untitled": "Unbenannt", "untitled": "Unbenannt",
"name": "Name", "name": "Name",
@@ -76,8 +76,8 @@
"madeWithExcalidraw": "Made with Excalidraw", "madeWithExcalidraw": "Made with Excalidraw",
"group": "Auswahl gruppieren", "group": "Auswahl gruppieren",
"ungroup": "Gruppierung aufheben", "ungroup": "Gruppierung aufheben",
"collaborators": "Mitarbeitende", "collaborators": "Kollaboratoren",
"gridMode": "Rastermodus", "showGrid": "Raster anzeigen",
"addToLibrary": "Zur Bibliothek hinzufügen", "addToLibrary": "Zur Bibliothek hinzufügen",
"removeFromLibrary": "Aus Bibliothek entfernen", "removeFromLibrary": "Aus Bibliothek entfernen",
"libraryLoadingMessage": "Lade Bibliothek…", "libraryLoadingMessage": "Lade Bibliothek…",
@@ -101,7 +101,7 @@
"exportToSvg": "Als SVG exportieren", "exportToSvg": "Als SVG exportieren",
"copyToClipboard": "In Zwischenablage kopieren", "copyToClipboard": "In Zwischenablage kopieren",
"copyPngToClipboard": "PNG in die Zwischenablage kopieren", "copyPngToClipboard": "PNG in die Zwischenablage kopieren",
"scale": "Skalieren", "scale": "Skalierung",
"save": "Speichern", "save": "Speichern",
"saveAs": "Speichern unter", "saveAs": "Speichern unter",
"load": "Laden", "load": "Laden",
@@ -117,7 +117,7 @@
"edit": "Bearbeiten", "edit": "Bearbeiten",
"undo": "Rückgängig machen", "undo": "Rückgängig machen",
"redo": "Wiederholen", "redo": "Wiederholen",
"roomDialog": "Live-Kollaborationssitzung starten", "resetLibrary": "Bibliothek zurücksetzen",
"createNewRoom": "Neuen Raum erstellen", "createNewRoom": "Neuen Raum erstellen",
"fullScreen": "Vollbildanzeige", "fullScreen": "Vollbildanzeige",
"darkMode": "Dunkles Design", "darkMode": "Dunkles Design",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Beim Laden der Drittanbieter-Bibliothek ist ein Fehler aufgetreten.", "errorLoadingLibrary": "Beim Laden der Drittanbieter-Bibliothek ist ein Fehler aufgetreten.",
"confirmAddLibrary": "Dieses fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du sicher?", "confirmAddLibrary": "Dieses fügt {{numShapes}} Form(en) zu deiner Bibliothek hinzu. Bist du sicher?",
"imageDoesNotContainScene": "Das Importieren von Bildern wird derzeit nicht unterstützt.\n\nMöchtest du eine Szene importieren? Dieses Bild scheint keine Zeichnungsdaten zu enthalten. Hast du dies beim Exportieren aktiviert?", "imageDoesNotContainScene": "Das Importieren von Bildern wird derzeit nicht unterstützt.\n\nMöchtest du eine Szene importieren? Dieses Bild scheint keine Zeichnungsdaten zu enthalten. Hast du dies beim Exportieren aktiviert?",
"cannotRestoreFromImage": "Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden" "cannotRestoreFromImage": "Die Zeichnung konnte aus dieser Bilddatei nicht wiederhergestellt werden",
"resetLibrary": "Dieses löscht deine Bibliothek. Bist du sicher?"
}, },
"toolBar": { "toolBar": {
"selection": "Auswahl", "selection": "Auswahl",
@@ -235,14 +236,16 @@
"storage": "Speicher", "storage": "Speicher",
"title": "Statistiken für Nerds", "title": "Statistiken für Nerds",
"total": "Gesamt", "total": "Gesamt",
"version": "", "version": "Version",
"versionCopy": "", "versionCopy": "Zum Kopieren klicken",
"versionNotAvailable": "", "versionNotAvailable": "Version nicht verfügbar",
"width": "Breite" "width": "Breite"
}, },
"toast": { "toast": {
"copyStyles": "Formatierung kopiert.", "copyStyles": "Formatierung kopiert.",
"copyToClipboard": "", "copyToClipboard": "In die Zwischenablage kopiert.",
"copyToClipboardAsPng": "In die Zwischenablage als PNG kopiert." "copyToClipboardAsPng": "In die Zwischenablage als PNG kopiert.",
"fileSaved": "Datei gespeichert.",
"fileSavedToFilename": "Als {filename} gespeichert"
} }
} }
+14 -11
View File
@@ -68,7 +68,7 @@
"layers": "Στρώματα", "layers": "Στρώματα",
"actions": "Ενέργειες", "actions": "Ενέργειες",
"language": "Γλώσσα", "language": "Γλώσσα",
"createRoom": "Έναρξη ζωντανής συνεδρίας", "liveCollaboration": "Ζωντανή συνεργασία",
"duplicateSelection": "Δημιουργία αντιγράφου", "duplicateSelection": "Δημιουργία αντιγράφου",
"untitled": "Χωρίς τίτλο", "untitled": "Χωρίς τίτλο",
"name": "Όνομα", "name": "Όνομα",
@@ -77,7 +77,7 @@
"group": "Δημιουργία ομάδας από επιλογή", "group": "Δημιουργία ομάδας από επιλογή",
"ungroup": "Κατάργηση ομάδας από επιλογή", "ungroup": "Κατάργηση ομάδας από επιλογή",
"collaborators": "Συνεργάτες", "collaborators": "Συνεργάτες",
"gridMode": "Εμφάνιση σε πλέγμα", "showGrid": "Προβολή πλέγματος",
"addToLibrary": "Προσθήκη στη βιβλιοθήκη", "addToLibrary": "Προσθήκη στη βιβλιοθήκη",
"removeFromLibrary": "Αφαίρεση από τη βιβλιοθήκη", "removeFromLibrary": "Αφαίρεση από τη βιβλιοθήκη",
"libraryLoadingMessage": "Φόρτωση βιβλιοθήκης…", "libraryLoadingMessage": "Φόρτωση βιβλιοθήκης…",
@@ -117,13 +117,13 @@
"edit": "Επεξεργασία", "edit": "Επεξεργασία",
"undo": "Αναίρεση", "undo": "Αναίρεση",
"redo": "Επαναφορά", "redo": "Επαναφορά",
"roomDialog": "Έναρξη ζωντανής συνεργασίας", "resetLibrary": "Καθαρισμός βιβλιοθήκης",
"createNewRoom": "Δημιουργία νέου χώρου", "createNewRoom": "Δημιουργία νέου χώρου",
"fullScreen": "Πλήρης οθόνη", "fullScreen": "Πλήρης οθόνη",
"darkMode": "Σκοτεινή λειτουργία", "darkMode": "Σκοτεινή λειτουργία",
"lightMode": "Φωτεινή λειτουργία", "lightMode": "Φωτεινή λειτουργία",
"zenMode": "Λειτουργία Zεν", "zenMode": "Λειτουργία Zεν",
"exitZenMode": "Έξοδος απο την λειτουργία Zen" "exitZenMode": "Έξοδος από την λειτουργία Zen"
}, },
"alerts": { "alerts": {
"clearReset": "Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;", "clearReset": "Αυτό θα σβήσει ολόκληρο τον καμβά. Είσαι σίγουρος;",
@@ -136,11 +136,12 @@
"decryptFailed": "Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.", "decryptFailed": "Δεν ήταν δυνατή η αποκρυπτογράφηση δεδομένων.",
"uploadedSecurly": "Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.", "uploadedSecurly": "Η μεταφόρτωση έχει εξασφαλιστεί με κρυπτογράφηση από άκρο σε άκρο, πράγμα που σημαίνει ότι ο διακομιστής Excalidraw και τρίτα μέρη δεν μπορούν να διαβάσουν το περιεχόμενο.",
"loadSceneOverridePrompt": "Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;", "loadSceneOverridePrompt": "Η φόρτωση εξωτερικού σχεδίου θα αντικαταστήσει το υπάρχον περιεχόμενο. Επιθυμείτε να συνεχίσετε;",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "Η διακοπή της συνεδρίας θα αντικαταστήσει το προηγούμενο, τοπικά αποθηκευμένο σχέδιο. Είστε σίγουροι?\n\n(Αν θέλετε να διατηρήσετε το τοπικό σας σχέδιο, απλά κλείστε την καρτέλα του προγράμματος περιήγησης.)",
"errorLoadingLibrary": "Υπήρξε ένα σφάλμα κατά τη φόρτωση της βιβλιοθήκης τρίτου μέρους.", "errorLoadingLibrary": "Υπήρξε ένα σφάλμα κατά τη φόρτωση της βιβλιοθήκης τρίτου μέρους.",
"confirmAddLibrary": "Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβιλιοθήκη σας. Είστε σίγουροι;", "confirmAddLibrary": "Αυτό θα προσθέσει {{numShapes}} σχήμα(τα) στη βιβλιοθήκη σας. Είστε σίγουροι;",
"imageDoesNotContainScene": "Η εισαγωγή εικόνων δεν υποστηρίζεται αυτή τη στιγμή.\n\nΜήπως θέλετε να εισαγάγετε μια σκηνή; Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει αυτό κατά την εξαγωγή;", "imageDoesNotContainScene": "Η εισαγωγή εικόνων δεν υποστηρίζεται αυτή τη στιγμή.\n\nΜήπως θέλετε να εισαγάγετε μια σκηνή; Αυτή η εικόνα δεν φαίνεται να περιέχει δεδομένα σκηνής. Έχετε ενεργοποιήσει αυτό κατά την εξαγωγή;",
"cannotRestoreFromImage": "Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας" "cannotRestoreFromImage": "Η σκηνή δεν ήταν δυνατό να αποκατασταθεί από αυτό το αρχείο εικόνας",
"resetLibrary": "Αυτό θα καθαρίσει τη βιβλιοθήκη σας. Είστε σίγουροι;"
}, },
"toolBar": { "toolBar": {
"selection": "Επιλογή", "selection": "Επιλογή",
@@ -161,7 +162,7 @@
}, },
"hints": { "hints": {
"linearElement": "Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή", "linearElement": "Κάνε κλικ για να ξεκινήσεις πολλαπλά σημεία, σύρε για μια γραμμή",
"freeDraw": "Κάντε κλικ και σύρατε, απελευθερώσατε όταν έχετε τελειώσει", "freeDraw": "Κάντε κλικ και σύρτε, απελευθερώσατε όταν έχετε τελειώσει",
"text": "Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών", "text": "Tip: μπορείτε επίσης να προσθέστε κείμενο με διπλό-κλικ οπουδήποτε με το εργαλείο επιλογών",
"linearElementMulti": "Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις", "linearElementMulti": "Κάνε κλικ στο τελευταίο σημείο ή πάτησε Escape ή Enter για να τελειώσεις",
"lockAngle": "Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT", "lockAngle": "Μπορείτε να περιορίσετε τη γωνία κρατώντας πατημένο το SHIFT",
@@ -184,7 +185,7 @@
"clearCanvasCaveat": " Αυτό θα προκαλέσει απώλεια της δουλειάς σου ", "clearCanvasCaveat": " Αυτό θα προκαλέσει απώλεια της δουλειάς σου ",
"trackedToSentry_pre": "Το σφάλμα με αναγνωριστικό ", "trackedToSentry_pre": "Το σφάλμα με αναγνωριστικό ",
"trackedToSentry_post": " παρακολουθήθηκε στο σύστημά μας.", "trackedToSentry_post": " παρακολουθήθηκε στο σύστημά μας.",
"openIssueMessage_pre": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψουν να ακολουθήσεις το δικό μας ", "openIssueMessage_pre": "Ήμασταν πολύ προσεκτικοί για να μην συμπεριλάβουμε τις πληροφορίες της σκηνής σου στο σφάλμα. Αν η σκηνή σου δεν είναι ιδιωτική, παρακαλώ σκέψου να ακολουθήσεις το δικό μας ",
"openIssueMessage_button": "ανιχνευτής σφαλμάτων.", "openIssueMessage_button": "ανιχνευτής σφαλμάτων.",
"openIssueMessage_post": " Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.", "openIssueMessage_post": " Παρακαλώ να συμπεριλάβετε τις παρακάτω πληροφορίες, αντιγράφοντας και επικολλώντας το ζήτημα στο GitHub.",
"sceneContent": "Περιεχόμενο σκηνής:" "sceneContent": "Περιεχόμενο σκηνής:"
@@ -223,7 +224,7 @@
"zoomToSelection": "Ζουμ στην επιλογή" "zoomToSelection": "Ζουμ στην επιλογή"
}, },
"encrypted": { "encrypted": {
"tooltip": "Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα έιναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw." "tooltip": "Τα σχέδιά σου είναι κρυπτογραφημένα από άκρο σε άκρο, έτσι δεν θα είναι ποτέ ορατά μέσα από τους διακομιστές του Excalidraw."
}, },
"stats": { "stats": {
"angle": "Γωνία", "angle": "Γωνία",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Αντιγράφηκαν στυλ.", "copyStyles": "Αντιγράφηκαν στυλ.",
"copyToClipboard": "Αντιγράφηκε στο πρόχειρο.", "copyToClipboard": "Αντιγράφηκε στο πρόχειρο.",
"copyToClipboardAsPng": "Αντιγράφτηκε στο πρόχειρο ως PNG." "copyToClipboardAsPng": "Αντιγράφτηκε στο πρόχειρο ως PNG.",
"fileSaved": "Το αρχείο αποθηκεύτηκε.",
"fileSavedToFilename": "Αποθηκεύτηκε στο {filename}"
} }
} }
+10 -6
View File
@@ -68,7 +68,7 @@
"layers": "Layers", "layers": "Layers",
"actions": "Actions", "actions": "Actions",
"language": "Language", "language": "Language",
"createRoom": "Share a live-collaboration session", "liveCollaboration": "Live collaboration",
"duplicateSelection": "Duplicate", "duplicateSelection": "Duplicate",
"untitled": "Untitled", "untitled": "Untitled",
"name": "Name", "name": "Name",
@@ -77,7 +77,7 @@
"group": "Group selection", "group": "Group selection",
"ungroup": "Ungroup selection", "ungroup": "Ungroup selection",
"collaborators": "Collaborators", "collaborators": "Collaborators",
"gridMode": "Grid mode", "showGrid": "Show grid",
"addToLibrary": "Add to library", "addToLibrary": "Add to library",
"removeFromLibrary": "Remove from library", "removeFromLibrary": "Remove from library",
"libraryLoadingMessage": "Loading library…", "libraryLoadingMessage": "Loading library…",
@@ -92,7 +92,8 @@
"centerHorizontally": "Center horizontally", "centerHorizontally": "Center horizontally",
"distributeHorizontally": "Distribute horizontally", "distributeHorizontally": "Distribute horizontally",
"distributeVertically": "Distribute vertically", "distributeVertically": "Distribute vertically",
"viewMode": "View mode" "viewMode": "View mode",
"toggleExportColorScheme": "Toggle export color scheme"
}, },
"buttons": { "buttons": {
"clearReset": "Reset the canvas", "clearReset": "Reset the canvas",
@@ -117,7 +118,7 @@
"edit": "Edit", "edit": "Edit",
"undo": "Undo", "undo": "Undo",
"redo": "Redo", "redo": "Redo",
"roomDialog": "Start live collaboration", "resetLibrary": "Reset library",
"createNewRoom": "Create new room", "createNewRoom": "Create new room",
"fullScreen": "Full screen", "fullScreen": "Full screen",
"darkMode": "Dark mode", "darkMode": "Dark mode",
@@ -140,7 +141,8 @@
"errorLoadingLibrary": "There was an error loading the third party library.", "errorLoadingLibrary": "There was an error loading the third party library.",
"confirmAddLibrary": "This will add {{numShapes}} shape(s) to your library. Are you sure?", "confirmAddLibrary": "This will add {{numShapes}} shape(s) to your library. Are you sure?",
"imageDoesNotContainScene": "Importing images isn't supported at the moment.\n\nDid you want to import a scene? This image does not seem to contain any scene data. Have you enabled this during export?", "imageDoesNotContainScene": "Importing images isn't supported at the moment.\n\nDid you want to import a scene? This image does not seem to contain any scene data. Have you enabled this during export?",
"cannotRestoreFromImage": "Scene couldn't be restored from this image file" "cannotRestoreFromImage": "Scene couldn't be restored from this image file",
"resetLibrary": "This will clear your library. Are you sure?"
}, },
"toolBar": { "toolBar": {
"selection": "Selection", "selection": "Selection",
@@ -243,6 +245,8 @@
"toast": { "toast": {
"copyStyles": "Copied styles.", "copyStyles": "Copied styles.",
"copyToClipboard": "Copied to clipboard.", "copyToClipboard": "Copied to clipboard.",
"copyToClipboardAsPng": "Copied to clipboard as PNG." "copyToClipboardAsPng": "Copied to clipboard as PNG.",
"fileSaved": "File saved.",
"fileSavedToFilename": "Saved to {filename}"
} }
} }
+13 -10
View File
@@ -68,7 +68,7 @@
"layers": "Capas", "layers": "Capas",
"actions": "Acciones", "actions": "Acciones",
"language": "Idioma", "language": "Idioma",
"createRoom": "Compartir una sesión de colaboración en vivo", "liveCollaboration": "Colaboración en directo",
"duplicateSelection": "Duplicar", "duplicateSelection": "Duplicar",
"untitled": "Sin título", "untitled": "Sin título",
"name": "Nombre", "name": "Nombre",
@@ -77,10 +77,10 @@
"group": "Agrupar selección", "group": "Agrupar selección",
"ungroup": "Desagrupar selección", "ungroup": "Desagrupar selección",
"collaborators": "Colaboradores", "collaborators": "Colaboradores",
"gridMode": "Modo cuadrícula", "showGrid": "Mostrar cuadrícula",
"addToLibrary": "Añadir a la biblioteca", "addToLibrary": "Añadir a la biblioteca",
"removeFromLibrary": "Eliminar de la biblioteca", "removeFromLibrary": "Eliminar de la biblioteca",
"libraryLoadingMessage": "Cargando biblioteca…", "libraryLoadingMessage": "Cargando librería…",
"libraries": "Explorar bibliotecas", "libraries": "Explorar bibliotecas",
"loadingScene": "Cargando escena…", "loadingScene": "Cargando escena…",
"align": "Alinear", "align": "Alinear",
@@ -117,7 +117,7 @@
"edit": "Editar", "edit": "Editar",
"undo": "Deshacer", "undo": "Deshacer",
"redo": "Rehacer", "redo": "Rehacer",
"roomDialog": "Iniciar colaboración en vivo", "resetLibrary": "Resetear librería",
"createNewRoom": "Crear nueva sala", "createNewRoom": "Crear nueva sala",
"fullScreen": "Pantalla completa", "fullScreen": "Pantalla completa",
"darkMode": "Modo oscuro", "darkMode": "Modo oscuro",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Se ha producido un error al cargar la biblioteca de terceros.", "errorLoadingLibrary": "Se ha producido un error al cargar la biblioteca de terceros.",
"confirmAddLibrary": "Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?", "confirmAddLibrary": "Esto añadirá {{numShapes}} forma(s) a tu biblioteca. ¿Estás seguro?",
"imageDoesNotContainScene": "La importación de imágenes no está homologada en este momento.\n\n¿Deseas importar una escena? Esta imagen no parece contener ningún dato de escena. ¿Lo has activado durante la exportación?", "imageDoesNotContainScene": "La importación de imágenes no está homologada en este momento.\n\n¿Deseas importar una escena? Esta imagen no parece contener ningún dato de escena. ¿Lo has activado durante la exportación?",
"cannotRestoreFromImage": "No se pudo restaurar la escena desde este archivo de imagen" "cannotRestoreFromImage": "No se pudo restaurar la escena desde este archivo de imagen",
"resetLibrary": "Esto eliminará tu librería. ¿Estás seguro?"
}, },
"toolBar": { "toolBar": {
"selection": "Selección", "selection": "Selección",
@@ -235,14 +236,16 @@
"storage": "Almacenamiento", "storage": "Almacenamiento",
"title": "Estadísticas para nerds", "title": "Estadísticas para nerds",
"total": "Total", "total": "Total",
"version": "", "version": "Versión",
"versionCopy": "", "versionCopy": "Clic para copiar",
"versionNotAvailable": "", "versionNotAvailable": "Versión no disponible",
"width": "Ancho" "width": "Ancho"
}, },
"toast": { "toast": {
"copyStyles": "Estilos copiados.", "copyStyles": "Estilos copiados.",
"copyToClipboard": "", "copyToClipboard": "Copiado en el portapapeles.",
"copyToClipboardAsPng": "Copiado al portapapeles como PNG." "copyToClipboardAsPng": "Copiado al portapapeles como PNG.",
"fileSaved": "Archivo guardado.",
"fileSavedToFilename": "Guardado en {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "لایه ها", "layers": "لایه ها",
"actions": "عملیات", "actions": "عملیات",
"language": "زبان", "language": "زبان",
"createRoom": "اشتراک گذاری جلسه همکاری زنده", "liveCollaboration": "",
"duplicateSelection": "تکرار", "duplicateSelection": "تکرار",
"untitled": "بدون عنوان", "untitled": "بدون عنوان",
"name": "نام", "name": "نام",
@@ -77,7 +77,7 @@
"group": "گروهبندی انتخابها", "group": "گروهبندی انتخابها",
"ungroup": "حذف گروهبندی انتخابها", "ungroup": "حذف گروهبندی انتخابها",
"collaborators": "همکاران", "collaborators": "همکاران",
"gridMode": "حالت شبکه ای", "showGrid": "",
"addToLibrary": "افزودن به کتابخانه", "addToLibrary": "افزودن به کتابخانه",
"removeFromLibrary": "حذف از کتابخانه", "removeFromLibrary": "حذف از کتابخانه",
"libraryLoadingMessage": "بارگذاری کتابخانه…", "libraryLoadingMessage": "بارگذاری کتابخانه…",
@@ -117,7 +117,7 @@
"edit": "ویرایش", "edit": "ویرایش",
"undo": "بازگرد", "undo": "بازگرد",
"redo": "از سر", "redo": "از سر",
"roomDialog": "همکاری آنلاین را شروع کنید", "resetLibrary": "",
"createNewRoom": "ایجاد یک اتاق جدید", "createNewRoom": "ایجاد یک اتاق جدید",
"fullScreen": "تمام‌صفحه", "fullScreen": "تمام‌صفحه",
"darkMode": "حالت تیره", "darkMode": "حالت تیره",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "خطایی در بارگذاری کتابخانه ثالث وجود داشت.", "errorLoadingLibrary": "خطایی در بارگذاری کتابخانه ثالث وجود داشت.",
"confirmAddLibrary": "{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟", "confirmAddLibrary": "{{numShapes}} از اشکال به کتابخانه شما اضافه خواهد شد. مطمئن هستید؟",
"imageDoesNotContainScene": "وارد کردن تصویر در این لحظه امکان پذیر نمی باشد.\nآیا مایل به وارد کردن یک صحنه هستید؟ این تصویر به نظر می رسد که فاقد هرگونه اطلاعاتی مربوط به صحنه باشد. آیا این گزینه را در زمان وارد کردن تصویر فعال کرده اید؟", "imageDoesNotContainScene": "وارد کردن تصویر در این لحظه امکان پذیر نمی باشد.\nآیا مایل به وارد کردن یک صحنه هستید؟ این تصویر به نظر می رسد که فاقد هرگونه اطلاعاتی مربوط به صحنه باشد. آیا این گزینه را در زمان وارد کردن تصویر فعال کرده اید؟",
"cannotRestoreFromImage": "صحنه را نمی توان از این فایل تصویری بازیابی کرد" "cannotRestoreFromImage": "صحنه را نمی توان از این فایل تصویری بازیابی کرد",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "گزینش", "selection": "گزینش",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "کپی سبک.", "copyStyles": "کپی سبک.",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "کپی در حافطه موقت به صورت PNG." "copyToClipboardAsPng": "کپی در حافطه موقت به صورت PNG.",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+12 -9
View File
@@ -68,7 +68,7 @@
"layers": "Tasot", "layers": "Tasot",
"actions": "Toiminnot", "actions": "Toiminnot",
"language": "Kieli", "language": "Kieli",
"createRoom": "Jaa yhteistyöistunto", "liveCollaboration": "Live-yhteistyö",
"duplicateSelection": "Monista", "duplicateSelection": "Monista",
"untitled": "Nimetön", "untitled": "Nimetön",
"name": "Nimi", "name": "Nimi",
@@ -77,7 +77,7 @@
"group": "Ryhmitä valinta", "group": "Ryhmitä valinta",
"ungroup": "Pura valittu ryhmä", "ungroup": "Pura valittu ryhmä",
"collaborators": "Yhteistyökumppanit", "collaborators": "Yhteistyökumppanit",
"gridMode": "Ruudukkotila", "showGrid": "Näytä ruudukko",
"addToLibrary": "Lisää kirjastoon", "addToLibrary": "Lisää kirjastoon",
"removeFromLibrary": "Poista kirjastosta", "removeFromLibrary": "Poista kirjastosta",
"libraryLoadingMessage": "Ladataan kirjastoa…", "libraryLoadingMessage": "Ladataan kirjastoa…",
@@ -117,7 +117,7 @@
"edit": "Muokkaa", "edit": "Muokkaa",
"undo": "Kumoa", "undo": "Kumoa",
"redo": "Tee uudelleen", "redo": "Tee uudelleen",
"roomDialog": "Aloita live-yhteistyö", "resetLibrary": "Tyhjennä kirjasto",
"createNewRoom": "Luo huone", "createNewRoom": "Luo huone",
"fullScreen": "Koko näyttö", "fullScreen": "Koko näyttö",
"darkMode": "Tumma tila", "darkMode": "Tumma tila",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Kolmannen osapuolen kirjastoa ladattaessa tapahtui virhe.", "errorLoadingLibrary": "Kolmannen osapuolen kirjastoa ladattaessa tapahtui virhe.",
"confirmAddLibrary": "Tämä lisää {{numShapes}} muotoa kirjastoosi. Oletko varma?", "confirmAddLibrary": "Tämä lisää {{numShapes}} muotoa kirjastoosi. Oletko varma?",
"imageDoesNotContainScene": "Kuvien lisääminen ei ole tällä hetkellä mahdollista.\n\nHaluatko tuoda piirroksen? Tämä kuva ei näytä sisältävän tarvittavia tietoja. Oletko ottanut piirrostietojen tallennuksen käyttöön viennin aikana?", "imageDoesNotContainScene": "Kuvien lisääminen ei ole tällä hetkellä mahdollista.\n\nHaluatko tuoda piirroksen? Tämä kuva ei näytä sisältävän tarvittavia tietoja. Oletko ottanut piirrostietojen tallennuksen käyttöön viennin aikana?",
"cannotRestoreFromImage": "Teosta ei voitu palauttaa tästä kuvatiedostosta" "cannotRestoreFromImage": "Teosta ei voitu palauttaa tästä kuvatiedostosta",
"resetLibrary": "Tämä tyhjentää kirjastosi. Oletko varma?"
}, },
"toolBar": { "toolBar": {
"selection": "Valinta", "selection": "Valinta",
@@ -235,14 +236,16 @@
"storage": "Tallennustila", "storage": "Tallennustila",
"title": "Nörttien tilastot", "title": "Nörttien tilastot",
"total": "Yhteensä", "total": "Yhteensä",
"version": "", "version": "Versio",
"versionCopy": "", "versionCopy": "Klikkaa kopioidaksesi",
"versionNotAvailable": "", "versionNotAvailable": "Versio ei saatavilla",
"width": "Leveys" "width": "Leveys"
}, },
"toast": { "toast": {
"copyStyles": "Tyylit kopioitu.", "copyStyles": "Tyylit kopioitu.",
"copyToClipboard": "", "copyToClipboard": "Kopioitu leikepöydälle.",
"copyToClipboardAsPng": "Kopioitu leikepöydälle PNG-tiedostona." "copyToClipboardAsPng": "Kopioitu leikepöydälle PNG-tiedostona.",
"fileSaved": "Tiedosto tallennettu.",
"fileSavedToFilename": "Tallennettu kohteeseen {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Calques", "layers": "Calques",
"actions": "Actions", "actions": "Actions",
"language": "Langue", "language": "Langue",
"createRoom": "Partager une session de collaboration en direct", "liveCollaboration": "Collaboration en direct",
"duplicateSelection": "Dupliquer", "duplicateSelection": "Dupliquer",
"untitled": "Sans-titre", "untitled": "Sans-titre",
"name": "Nom", "name": "Nom",
@@ -77,7 +77,7 @@
"group": "Grouper la sélection", "group": "Grouper la sélection",
"ungroup": "Dégrouper la sélection", "ungroup": "Dégrouper la sélection",
"collaborators": "Collaborateurs", "collaborators": "Collaborateurs",
"gridMode": "Mode grille", "showGrid": "Afficher la grille",
"addToLibrary": "Ajouter à la bibliothèque", "addToLibrary": "Ajouter à la bibliothèque",
"removeFromLibrary": "Supprimer de la bibliothèque", "removeFromLibrary": "Supprimer de la bibliothèque",
"libraryLoadingMessage": "Chargement de la bibliothèque…", "libraryLoadingMessage": "Chargement de la bibliothèque…",
@@ -117,7 +117,7 @@
"edit": "Modifier", "edit": "Modifier",
"undo": "Annuler", "undo": "Annuler",
"redo": "Rétablir", "redo": "Rétablir",
"roomDialog": "Démarrer la collaboration en direct", "resetLibrary": "Réinitialiser la bibliothèque",
"createNewRoom": "Créer une nouvelle salle", "createNewRoom": "Créer une nouvelle salle",
"fullScreen": "Plein écran", "fullScreen": "Plein écran",
"darkMode": "Mode sombre", "darkMode": "Mode sombre",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Une erreur s'est produite lors du chargement de la bibliothèque tierce.", "errorLoadingLibrary": "Une erreur s'est produite lors du chargement de la bibliothèque tierce.",
"confirmAddLibrary": "Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?", "confirmAddLibrary": "Cela va ajouter {{numShapes}} forme(s) à votre bibliothèque. Êtes-vous sûr·e ?",
"imageDoesNotContainScene": "L'importation d'images n'est pas prise en charge pour le moment.\n\nVouliez-vous importer une scène ? Cette image ne semble pas contenir de données de scène. Avez-vous activé cette option lors de l'exportation ?", "imageDoesNotContainScene": "L'importation d'images n'est pas prise en charge pour le moment.\n\nVouliez-vous importer une scène ? Cette image ne semble pas contenir de données de scène. Avez-vous activé cette option lors de l'exportation ?",
"cannotRestoreFromImage": "Impossible de restaurer la scène depuis ce fichier image" "cannotRestoreFromImage": "Impossible de restaurer la scène depuis ce fichier image",
"resetLibrary": "Cela va effacer votre bibliothèque. Êtes-vous sûr·e ?"
}, },
"toolBar": { "toolBar": {
"selection": "Sélection", "selection": "Sélection",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Styles copiés.", "copyStyles": "Styles copiés.",
"copyToClipboard": "Copié vers le presse-papiers.", "copyToClipboard": "Copié vers le presse-papiers.",
"copyToClipboardAsPng": "Copié vers le presse-papier en PNG." "copyToClipboardAsPng": "Copié vers le presse-papier en PNG.",
"fileSaved": "Fichier enregistré.",
"fileSavedToFilename": "Enregistré sous {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "שכבות", "layers": "שכבות",
"actions": "פעולות", "actions": "פעולות",
"language": "שפה", "language": "שפה",
"createRoom": "התחל שיתוף פעולה חי", "liveCollaboration": "",
"duplicateSelection": "שכפל", "duplicateSelection": "שכפל",
"untitled": "ללא כותרת", "untitled": "ללא כותרת",
"name": "שם", "name": "שם",
@@ -77,7 +77,7 @@
"group": "אחד לקבוצה", "group": "אחד לקבוצה",
"ungroup": "פרק קבוצה", "ungroup": "פרק קבוצה",
"collaborators": "שותפים", "collaborators": "שותפים",
"gridMode": "מצב רשת", "showGrid": "",
"addToLibrary": "הוסף לספריה", "addToLibrary": "הוסף לספריה",
"removeFromLibrary": "הסר מספריה", "removeFromLibrary": "הסר מספריה",
"libraryLoadingMessage": "טוען ספריה…", "libraryLoadingMessage": "טוען ספריה…",
@@ -117,7 +117,7 @@
"edit": "ערוך", "edit": "ערוך",
"undo": "בטל", "undo": "בטל",
"redo": "בצע מחדש", "redo": "בצע מחדש",
"roomDialog": "התחל שיתוף חי", "resetLibrary": "",
"createNewRoom": "צור חדר", "createNewRoom": "צור חדר",
"fullScreen": "מסך מלא", "fullScreen": "מסך מלא",
"darkMode": "מצב כהה", "darkMode": "מצב כהה",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "קרתה שגיאה בטעינת הספריה החיצונית.", "errorLoadingLibrary": "קרתה שגיאה בטעינת הספריה החיצונית.",
"confirmAddLibrary": "הפעולה תוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?", "confirmAddLibrary": "הפעולה תוסיף {{numShapes}} צורה(ות) לספריה שלך. האם אתה בטוח?",
"imageDoesNotContainScene": "אין תמיכה בייבוא תמונות כעת.\n\nהאם אתה רוצה לייבא תצוגה? התמונה הזאת אינה מכילה מידע על תצוגה. האם הפעלת את האפשרות הזאת בזמן הוצאת המידע?", "imageDoesNotContainScene": "אין תמיכה בייבוא תמונות כעת.\n\nהאם אתה רוצה לייבא תצוגה? התמונה הזאת אינה מכילה מידע על תצוגה. האם הפעלת את האפשרות הזאת בזמן הוצאת המידע?",
"cannotRestoreFromImage": "לא הצלחנו לשחזר את התצוגה מקובץ התמונה" "cannotRestoreFromImage": "לא הצלחנו לשחזר את התצוגה מקובץ התמונה",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "בחירה", "selection": "בחירה",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "परतें", "layers": "परतें",
"actions": "कार्रवाई", "actions": "कार्रवाई",
"language": "भाषा", "language": "भाषा",
"createRoom": "अधिवेशन", "liveCollaboration": "",
"duplicateSelection": "डुप्लिकेट", "duplicateSelection": "डुप्लिकेट",
"untitled": "अशीर्षित", "untitled": "अशीर्षित",
"name": "नाम", "name": "नाम",
@@ -77,7 +77,7 @@
"group": "समूह चयन", "group": "समूह चयन",
"ungroup": "समूह चयन असमूहीकृत करें", "ungroup": "समूह चयन असमूहीकृत करें",
"collaborators": "सहयोगी", "collaborators": "सहयोगी",
"gridMode": "ग्रिड मॉड", "showGrid": "",
"addToLibrary": "लाइब्रेरी से जोड़ें", "addToLibrary": "लाइब्रेरी से जोड़ें",
"removeFromLibrary": "लाइब्रेरी से निकालें", "removeFromLibrary": "लाइब्रेरी से निकालें",
"libraryLoadingMessage": "लाइब्रेरी खुल रही है", "libraryLoadingMessage": "लाइब्रेरी खुल रही है",
@@ -117,7 +117,7 @@
"edit": "संशोधन करें", "edit": "संशोधन करें",
"undo": "पूर्ववत् करें", "undo": "पूर्ववत् करें",
"redo": "फिर से करें", "redo": "फिर से करें",
"roomDialog": "लाइव सहयोग शुरू करें", "resetLibrary": "",
"createNewRoom": "एक नया कमरा बनाएं", "createNewRoom": "एक नया कमरा बनाएं",
"fullScreen": "पूरी स्क्रीन", "fullScreen": "पूरी स्क्रीन",
"darkMode": "डार्क मोड", "darkMode": "डार्क मोड",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "लाइब्रेरी लोड करने में त्रुटि", "errorLoadingLibrary": "लाइब्रेरी लोड करने में त्रुटि",
"confirmAddLibrary": "लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या", "confirmAddLibrary": "लाइब्रेरी जोड़ें पुष्‍टि करें आकार संख्या",
"imageDoesNotContainScene": "दृश्य में छवि नहीं है", "imageDoesNotContainScene": "दृश्य में छवि नहीं है",
"cannotRestoreFromImage": "छवि फ़ाइल बहाल दृश्य नहीं है" "cannotRestoreFromImage": "छवि फ़ाइल बहाल दृश्य नहीं है",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "चयन", "selection": "चयन",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "काॅपी कीए स्टाइल", "copyStyles": "काॅपी कीए स्टाइल",
"copyToClipboard": "क्लिपबोर्ड में कॉपी कीए", "copyToClipboard": "क्लिपबोर्ड में कॉपी कीए",
"copyToClipboardAsPng": "क्लिपबोर्ड में PNG के रूप में कॉपी किए" "copyToClipboardAsPng": "क्लिपबोर्ड में PNG के रूप में कॉपी किए",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Rétegek", "layers": "Rétegek",
"actions": "Műveletek", "actions": "Műveletek",
"language": "Nyelv", "language": "Nyelv",
"createRoom": "Élő együttmüködés megosztása", "liveCollaboration": "",
"duplicateSelection": "Duplikálás", "duplicateSelection": "Duplikálás",
"untitled": "Névtelen", "untitled": "Névtelen",
"name": "Név", "name": "Név",
@@ -77,7 +77,7 @@
"group": "Csoportosítás", "group": "Csoportosítás",
"ungroup": "Csoportbontás", "ungroup": "Csoportbontás",
"collaborators": "Közreműködők", "collaborators": "Közreműködők",
"gridMode": "Hálómód", "showGrid": "",
"addToLibrary": "Hozzáadás a könyvtárhoz", "addToLibrary": "Hozzáadás a könyvtárhoz",
"removeFromLibrary": "Eltávólítás a könyvtárból", "removeFromLibrary": "Eltávólítás a könyvtárból",
"libraryLoadingMessage": "Könyvtár betöltése…", "libraryLoadingMessage": "Könyvtár betöltése…",
@@ -117,7 +117,7 @@
"edit": "Szerkesztés", "edit": "Szerkesztés",
"undo": "Vissza", "undo": "Vissza",
"redo": "Újra", "redo": "Újra",
"roomDialog": "Élő együttműködés indítása", "resetLibrary": "",
"createNewRoom": "Új szoba létrehozása", "createNewRoom": "Új szoba létrehozása",
"fullScreen": "Teljes képernyő", "fullScreen": "Teljes képernyő",
"darkMode": "Sötét mód", "darkMode": "Sötét mód",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Hibába ütközött a harmarmadik féltől származó könyvtár betöltése.", "errorLoadingLibrary": "Hibába ütközött a harmarmadik féltől származó könyvtár betöltése.",
"confirmAddLibrary": "Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?", "confirmAddLibrary": "Ez a művelet {{numShapes}} formát fog hozzáadni a könyvtáradhoz. Biztos vagy benne?",
"imageDoesNotContainScene": "Képek importálása egyelőre nem támogatott.\n\nEgy jelenetet szeretnél betölteni? Úgy tűnik ez a kép fájl nem tartalmazza a szükséges adatokat. Exportáláskor ezt egy külön opcióval lehet beállítani.", "imageDoesNotContainScene": "Képek importálása egyelőre nem támogatott.\n\nEgy jelenetet szeretnél betölteni? Úgy tűnik ez a kép fájl nem tartalmazza a szükséges adatokat. Exportáláskor ezt egy külön opcióval lehet beállítani.",
"cannotRestoreFromImage": "A jelenet visszaállítása nem sikerült ebből a kép fájlból" "cannotRestoreFromImage": "A jelenet visszaállítása nem sikerült ebből a kép fájlból",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Kijelölés", "selection": "Kijelölés",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+13 -10
View File
@@ -68,7 +68,7 @@
"layers": "Lapisan", "layers": "Lapisan",
"actions": "Aksi", "actions": "Aksi",
"language": "Bahasa", "language": "Bahasa",
"createRoom": "Bagikan sesi kolaborasi langsung", "liveCollaboration": "",
"duplicateSelection": "Duplikat", "duplicateSelection": "Duplikat",
"untitled": "Tanpa judul", "untitled": "Tanpa judul",
"name": "Nama", "name": "Nama",
@@ -77,7 +77,7 @@
"group": "Kelompokan pilihan", "group": "Kelompokan pilihan",
"ungroup": "Pisahkan pilihan", "ungroup": "Pisahkan pilihan",
"collaborators": "Kolaborator", "collaborators": "Kolaborator",
"gridMode": "Mode grid", "showGrid": "Tampilkan grid",
"addToLibrary": "Tambahkan ke pustaka", "addToLibrary": "Tambahkan ke pustaka",
"removeFromLibrary": "Hapus dari pustaka", "removeFromLibrary": "Hapus dari pustaka",
"libraryLoadingMessage": "Memuat pustaka…", "libraryLoadingMessage": "Memuat pustaka…",
@@ -117,7 +117,7 @@
"edit": "Edit", "edit": "Edit",
"undo": "Urungkan", "undo": "Urungkan",
"redo": "Ulangi", "redo": "Ulangi",
"roomDialog": "Mulai kolaborasi langsung", "resetLibrary": "",
"createNewRoom": "Buat ruang baru", "createNewRoom": "Buat ruang baru",
"fullScreen": "Layar penuh", "fullScreen": "Layar penuh",
"darkMode": "Mode gelap", "darkMode": "Mode gelap",
@@ -136,11 +136,12 @@
"decryptFailed": "Tidak dapat mengdekripsi data.", "decryptFailed": "Tidak dapat mengdekripsi data.",
"uploadedSecurly": "Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya", "uploadedSecurly": "Pengunggahan ini telah diamankan menggunakan enkripsi end-to-end, artinya server Excalidraw dan pihak ketiga tidak data membaca nya",
"loadSceneOverridePrompt": "Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?", "loadSceneOverridePrompt": "Memuat gambar external akan mengganti konten Anda yang ada. Apakah Anda ingin melanjutkan?",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "Menghentikan sesi akan menimpa gambar Anda yang tersimpan secara lokal. Anda yakin?\n\n(Jika Anda ingin menyimpan gambar lokal Anda, gantinya cukup tutup tab browser.)",
"errorLoadingLibrary": "Terdapat kesalahan dalam memuat pustaka pihak ketiga.", "errorLoadingLibrary": "Terdapat kesalahan dalam memuat pustaka pihak ketiga.",
"confirmAddLibrary": "Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?", "confirmAddLibrary": "Ini akan menambahkan {{numShapes}} bentuk ke pustaka Anda. Anda yakin?",
"imageDoesNotContainScene": "Mengimpor gambar tidak didukung saat ini.\n\nApakah Anda ingin impor pemandangan? Gambar ini tidak berisi data pemandangan. Sudah ka Anda aktifkan ini ketika ekspor?", "imageDoesNotContainScene": "Mengimpor gambar tidak didukung saat ini.\n\nApakah Anda ingin impor pemandangan? Gambar ini tidak berisi data pemandangan. Sudah ka Anda aktifkan ini ketika ekspor?",
"cannotRestoreFromImage": "Pemandangan tidak dapat dipulihkan dari file gambar ini" "cannotRestoreFromImage": "Pemandangan tidak dapat dipulihkan dari file gambar ini",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Pilihan", "selection": "Pilihan",
@@ -235,14 +236,16 @@
"storage": "Penyimpanan", "storage": "Penyimpanan",
"title": "Statistik untuk nerd", "title": "Statistik untuk nerd",
"total": "Total", "total": "Total",
"version": "", "version": "Versi",
"versionCopy": "", "versionCopy": "Klik untuk salin",
"versionNotAvailable": "", "versionNotAvailable": "Versi tidak tersedia",
"width": "Lebar" "width": "Lebar"
}, },
"toast": { "toast": {
"copyStyles": "Gaya tersalin.", "copyStyles": "Gaya tersalin.",
"copyToClipboard": "", "copyToClipboard": "Tersalin ke papan klip.",
"copyToClipboardAsPng": "Tersalin ke clipboard sebagai PNG." "copyToClipboardAsPng": "Tersalin ke clipboard sebagai PNG.",
"fileSaved": "File tersimpan.",
"fileSavedToFilename": "Disimpan ke {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Livelli", "layers": "Livelli",
"actions": "Azioni", "actions": "Azioni",
"language": "Lingua", "language": "Lingua",
"createRoom": "Condividi una sessione di collaborazione in diretta", "liveCollaboration": "Collaborazione live",
"duplicateSelection": "Duplica", "duplicateSelection": "Duplica",
"untitled": "Senza titolo", "untitled": "Senza titolo",
"name": "Nome", "name": "Nome",
@@ -77,7 +77,7 @@
"group": "Crea gruppo da selezione", "group": "Crea gruppo da selezione",
"ungroup": "Dividi gruppo da selezione", "ungroup": "Dividi gruppo da selezione",
"collaborators": "Collaboratori", "collaborators": "Collaboratori",
"gridMode": "Modalità griglia", "showGrid": "Visualizza griglia",
"addToLibrary": "Aggiungi alla libreria", "addToLibrary": "Aggiungi alla libreria",
"removeFromLibrary": "Rimuovi dalla libreria", "removeFromLibrary": "Rimuovi dalla libreria",
"libraryLoadingMessage": "Caricamento libreria…", "libraryLoadingMessage": "Caricamento libreria…",
@@ -117,7 +117,7 @@
"edit": "Modifica", "edit": "Modifica",
"undo": "Annulla", "undo": "Annulla",
"redo": "Ripeti", "redo": "Ripeti",
"roomDialog": "Inizia collaborazione in diretta", "resetLibrary": "Ripristina libreria",
"createNewRoom": "Crea nuova stanza", "createNewRoom": "Crea nuova stanza",
"fullScreen": "Schermo intero", "fullScreen": "Schermo intero",
"darkMode": "Tema scuro", "darkMode": "Tema scuro",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Si è verificato un errore nel caricamento della libreria di terze parti.", "errorLoadingLibrary": "Si è verificato un errore nel caricamento della libreria di terze parti.",
"confirmAddLibrary": "Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?", "confirmAddLibrary": "Questo aggiungerà {{numShapes}} forma(e) alla tua libreria. Sei sicuro?",
"imageDoesNotContainScene": "L'importazione di immagini al momento non è supportata.\n\nVuoi importare una scena? Questa immagine non sembra contenere alcun dato di scena. Hai abilitato questa opzione durante l'esportazione?", "imageDoesNotContainScene": "L'importazione di immagini al momento non è supportata.\n\nVuoi importare una scena? Questa immagine non sembra contenere alcun dato di scena. Hai abilitato questa opzione durante l'esportazione?",
"cannotRestoreFromImage": "Impossibile ripristinare la scena da questo file immagine" "cannotRestoreFromImage": "Impossibile ripristinare la scena da questo file immagine",
"resetLibrary": "Questa azione cancellerà l'intera libreria. Sei sicuro?"
}, },
"toolBar": { "toolBar": {
"selection": "Selezione", "selection": "Selezione",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Stili copiati.", "copyStyles": "Stili copiati.",
"copyToClipboard": "Copiato negli appunti.", "copyToClipboard": "Copiato negli appunti.",
"copyToClipboardAsPng": "Copiato negli appunti come PNG." "copyToClipboardAsPng": "Copiato negli appunti come PNG.",
"fileSaved": "File salvato.",
"fileSavedToFilename": "Salvato in {filename}"
} }
} }
+51 -48
View File
@@ -1,11 +1,11 @@
{ {
"labels": { "labels": {
"paste": "貼り付け", "paste": "貼り付け",
"pasteCharts": "", "pasteCharts": "チャートの貼り付け",
"selectAll": "すべて選択", "selectAll": "すべて選択",
"multiSelect": "複数選択", "multiSelect": "複数選択",
"moveCanvas": "キャンバスを移動", "moveCanvas": "キャンバスを移動",
"cut": "", "cut": "切り取り",
"copy": "コピー", "copy": "コピー",
"copyAsPng": "PNGとしてクリップボードへコピー", "copyAsPng": "PNGとしてクリップボードへコピー",
"copyAsSvg": "SVGとしてクリップボードへコピー", "copyAsSvg": "SVGとしてクリップボードへコピー",
@@ -38,7 +38,7 @@
"fontSize": "フォントの大きさ", "fontSize": "フォントの大きさ",
"fontFamily": "フォントの種類", "fontFamily": "フォントの種類",
"onlySelected": "選択中のみ", "onlySelected": "選択中のみ",
"withBackground": "", "withBackground": "背景を含める",
"exportEmbedScene": "エクスポートされたファイルにシーンを埋め込みます", "exportEmbedScene": "エクスポートされたファイルにシーンを埋め込みます",
"exportEmbedScene_details": "シーンデータはエクスポートされたPNG/SVGファイルに保存され、シーンを復元することができます。\nエクスポートされたファイルのサイズは増加します。", "exportEmbedScene_details": "シーンデータはエクスポートされたPNG/SVGファイルに保存され、シーンを復元することができます。\nエクスポートされたファイルのサイズは増加します。",
"addWatermark": "\"Made with Excalidraw\"と表示", "addWatermark": "\"Made with Excalidraw\"と表示",
@@ -68,20 +68,20 @@
"layers": "レイヤー", "layers": "レイヤー",
"actions": "操作", "actions": "操作",
"language": "言語", "language": "言語",
"createRoom": "共同編集セッションの共有", "liveCollaboration": "ライブ連携",
"duplicateSelection": "複製", "duplicateSelection": "複製",
"untitled": "", "untitled": "無題",
"name": "名前", "name": "名前",
"yourName": "あなたの名前", "yourName": "あなたの名前",
"madeWithExcalidraw": "Excalidrawで作成", "madeWithExcalidraw": "Excalidrawで作成",
"group": "図形のグループ化", "group": "図形のグループ化",
"ungroup": "グループ化を解除", "ungroup": "グループ化を解除",
"collaborators": "共同編集者", "collaborators": "共同編集者",
"gridMode": "", "showGrid": "グリッドを表示",
"addToLibrary": "ライブラリに追加", "addToLibrary": "ライブラリに追加",
"removeFromLibrary": "ライブラリから削除", "removeFromLibrary": "ライブラリから削除",
"libraryLoadingMessage": "ライブラリを読み込み中…", "libraryLoadingMessage": "ライブラリを読み込み中…",
"libraries": "", "libraries": "ライブラリを参照する",
"loadingScene": "シーンを読み込み中…", "loadingScene": "シーンを読み込み中…",
"align": "整列", "align": "整列",
"alignTop": "上揃え", "alignTop": "上揃え",
@@ -90,9 +90,9 @@
"alignRight": "右揃え", "alignRight": "右揃え",
"centerVertically": "縦方向に中央揃え", "centerVertically": "縦方向に中央揃え",
"centerHorizontally": "横方向に中央揃え", "centerHorizontally": "横方向に中央揃え",
"distributeHorizontally": "", "distributeHorizontally": "水平方向に分散配置",
"distributeVertically": "", "distributeVertically": "垂直方向に分散配置",
"viewMode": "" "viewMode": "閲覧モード"
}, },
"buttons": { "buttons": {
"clearReset": "キャンバスのリセット", "clearReset": "キャンバスのリセット",
@@ -117,12 +117,12 @@
"edit": "編集", "edit": "編集",
"undo": "元に戻す", "undo": "元に戻す",
"redo": "やり直し", "redo": "やり直し",
"roomDialog": "共同編集を開始する", "resetLibrary": "ライブラリをリセット",
"createNewRoom": "新しい部屋を作成する", "createNewRoom": "新しい部屋を作成する",
"fullScreen": "全画面表示", "fullScreen": "全画面表示",
"darkMode": "ダークモード", "darkMode": "ダークモード",
"lightMode": "ライトモード", "lightMode": "ライトモード",
"zenMode": "", "zenMode": "Zenモード",
"exitZenMode": "集中モードをやめる" "exitZenMode": "集中モードをやめる"
}, },
"alerts": { "alerts": {
@@ -136,11 +136,12 @@
"decryptFailed": "データを復号できませんでした。", "decryptFailed": "データを復号できませんでした。",
"uploadedSecurly": "データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。", "uploadedSecurly": "データのアップロードはエンドツーエンド暗号化によって保護されています。Excalidrawサーバーと第三者はデータの内容を見ることができません。",
"loadSceneOverridePrompt": "外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか?", "loadSceneOverridePrompt": "外部図面を読み込むと、既存のコンテンツが置き換わります。続行しますか?",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "セッションを停止すると、ローカルに保存されている図が上書きされます。 本当によろしいですか?\n\n(ローカルの図を保持したい場合は、セッションを停止せずにブラウザタブを閉じてください。)",
"errorLoadingLibrary": "サードパーティライブラリの読み込み中にエラーが発生しました。", "errorLoadingLibrary": "サードパーティライブラリの読み込み中にエラーが発生しました。",
"confirmAddLibrary": "{{numShapes}} 個の図形をライブラリに追加します。よろしいですか?", "confirmAddLibrary": "{{numShapes}} 個の図形をライブラリに追加します。よろしいですか?",
"imageDoesNotContainScene": "", "imageDoesNotContainScene": "現在、画像のインポートはサポートされていません。\n\nシーンをインポートしようとしましたか?この画像にはシーンデータが含まれていないようです。エクスポート中に有効にしていましたか?",
"cannotRestoreFromImage": "このイメージファイルからシーンを復元できませんでした" "cannotRestoreFromImage": "このイメージファイルからシーンを復元できませんでした",
"resetLibrary": "ライブラリを消去します。本当によろしいですか?"
}, },
"toolBar": { "toolBar": {
"selection": "選択", "selection": "選択",
@@ -164,7 +165,7 @@
"freeDraw": "クリックしてドラッグします。離すと終了します", "freeDraw": "クリックしてドラッグします。離すと終了します",
"text": "ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます", "text": "ヒント: 選択ツールを使用して任意の場所をダブルクリックしてテキストを追加することもできます",
"linearElementMulti": "最後のポイントをクリックするか、エスケープまたはEnterを押して終了します", "linearElementMulti": "最後のポイントをクリックするか、エスケープまたはEnterを押して終了します",
"lockAngle": "", "lockAngle": "SHIFTを押したままにすると、角度を制限することができます",
"resize": "サイズを変更中にSHIFTを押しすと比率を制御できます。Altを押すと中央からサイズを変更できます。", "resize": "サイズを変更中にSHIFTを押しすと比率を制御できます。Altを押すと中央からサイズを変更できます。",
"rotate": "回転中にSHIFT キーを押すと角度を制限することができます", "rotate": "回転中にSHIFT キーを押すと角度を制限することができます",
"lineEditor_info": "ポイントを編集するには、ダブルクリックまたはEnterキーを押します", "lineEditor_info": "ポイントを編集するには、ダブルクリックまたはEnterキーを押します",
@@ -202,47 +203,49 @@
"title": "エラー" "title": "エラー"
}, },
"helpDialog": { "helpDialog": {
"blog": "", "blog": "公式ブログを読む",
"click": "", "click": "クリック",
"curvedArrow": "", "curvedArrow": "カーブした矢印",
"curvedLine": "", "curvedLine": "曲線",
"documentation": "", "documentation": "ドキュメント",
"drag": "", "drag": "ドラッグ",
"editor": "", "editor": "エディタ",
"github": "", "github": "不具合報告はこちら",
"howto": "", "howto": "ヘルプ・マニュアル",
"or": "", "or": "または",
"preventBinding": "", "preventBinding": "矢印を結合しない",
"shapes": "", "shapes": "図形",
"shortcuts": "", "shortcuts": "キーボードショートカット",
"textFinish": "", "textFinish": "編集を終了する (テキスト)",
"textNewLine": "", "textNewLine": "新しい行を追加 (テキスト)",
"title": "", "title": "ヘルプ",
"view": "", "view": "表示",
"zoomToFit": "", "zoomToFit": "すべての要素が収まるようにズーム",
"zoomToSelection": "" "zoomToSelection": "選択要素にズーム"
}, },
"encrypted": { "encrypted": {
"tooltip": "描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。" "tooltip": "描画内容はエンドツーエンド暗号化が施されており、Excalidrawサーバーが内容を見ることはできません。"
}, },
"stats": { "stats": {
"angle": "", "angle": "角度",
"element": "", "element": "要素",
"elements": "", "elements": "要素",
"height": "高さ", "height": "高さ",
"scene": "", "scene": "シーン",
"selected": "", "selected": "選択済み",
"storage": "", "storage": "ストレージ",
"title": "", "title": "マニア向け統計情報",
"total": "合計", "total": "合計",
"version": "", "version": "バージョン",
"versionCopy": "", "versionCopy": "クリックしてコピー",
"versionNotAvailable": "", "versionNotAvailable": "利用できないバージョン",
"width": "幅" "width": "幅"
}, },
"toast": { "toast": {
"copyStyles": "", "copyStyles": "スタイルをコピー",
"copyToClipboard": "", "copyToClipboard": "クリップボードにコピー",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "PNG形式でクリップボードにコピー",
"fileSaved": "ファイルを保存しました",
"fileSavedToFilename": "{filename} に保存しました"
} }
} }
+17 -14
View File
@@ -24,7 +24,7 @@
"strokeStyle_solid": "Aččuran", "strokeStyle_solid": "Aččuran",
"strokeStyle_dashed": "S tjerriḍin", "strokeStyle_dashed": "S tjerriḍin",
"strokeStyle_dotted": "S tenqiḍin", "strokeStyle_dotted": "S tenqiḍin",
"sloppiness": "", "sloppiness": "Astehzi",
"opacity": "Tiḍullest", "opacity": "Tiḍullest",
"textAlign": "Areyyec n uḍris", "textAlign": "Areyyec n uḍris",
"edges": "Leryuf", "edges": "Leryuf",
@@ -68,7 +68,7 @@
"layers": "Tissiyin", "layers": "Tissiyin",
"actions": "Tigawin", "actions": "Tigawin",
"language": "Tutlayt", "language": "Tutlayt",
"createRoom": "Bḍu tiɣimit n umɛawen s srid", "liveCollaboration": "",
"duplicateSelection": "Sisleg", "duplicateSelection": "Sisleg",
"untitled": "War azwel", "untitled": "War azwel",
"name": "Isem", "name": "Isem",
@@ -77,7 +77,7 @@
"group": "Segrew tafrayt", "group": "Segrew tafrayt",
"ungroup": "Kkess asegrew i tefrayt", "ungroup": "Kkess asegrew i tefrayt",
"collaborators": "Imɛiwnen", "collaborators": "Imɛiwnen",
"gridMode": "Askar n uferrug", "showGrid": "Beqqeḍ aferrug",
"addToLibrary": "Rnu ɣer temkarḍit", "addToLibrary": "Rnu ɣer temkarḍit",
"removeFromLibrary": "Kkes si temkarḍit", "removeFromLibrary": "Kkes si temkarḍit",
"libraryLoadingMessage": "Asali n temkarḍit…", "libraryLoadingMessage": "Asali n temkarḍit…",
@@ -117,7 +117,7 @@
"edit": "Ẓreg", "edit": "Ẓreg",
"undo": "Sefsex", "undo": "Sefsex",
"redo": "Err-d", "redo": "Err-d",
"roomDialog": "Bdu amɛawen s srid", "resetLibrary": "",
"createNewRoom": "Snulfu-d taxxamt tamaynutt", "createNewRoom": "Snulfu-d taxxamt tamaynutt",
"fullScreen": "Agdil aččuran", "fullScreen": "Agdil aččuran",
"darkMode": "Askar imsulles", "darkMode": "Askar imsulles",
@@ -130,17 +130,18 @@
"couldNotCreateShareableLink": "D awezɣi asnulfu n useɣwen n beṭṭu.", "couldNotCreateShareableLink": "D awezɣi asnulfu n useɣwen n beṭṭu.",
"couldNotCreateShareableLinkTooBig": "D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas", "couldNotCreateShareableLinkTooBig": "D awezɣi asnulfu n useɣwen n beṭṭu. Asayes ɣezzif aṭas",
"couldNotLoadInvalidFile": "D awezɣi asali n ufaylu armeɣtu", "couldNotLoadInvalidFile": "D awezɣi asali n ufaylu armeɣtu",
"importBackendFailed": "", "importBackendFailed": "Takterḍ seg uɣawas n deffir ur teddi ara.",
"cannotExportEmptyCanvas": "D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.", "cannotExportEmptyCanvas": "D awezɣi asifeḍ n teɣzut n usuneɣ tilemt.",
"couldNotCopyToClipboard": "D awezɣi anɣal ɣer tecfawit. Eɛreḍ ad tesqedceḍ iminig Chrome.", "couldNotCopyToClipboard": "D awezɣi anɣal ɣer tecfawit. Eɛreḍ ad tesqedceḍ iminig Chrome.",
"decryptFailed": "D awezɣi tukksa n uwgelhen i yisefka.", "decryptFailed": "D awezɣi tukksa n uwgelhen i yisefka.",
"uploadedSecurly": "Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.", "uploadedSecurly": "Asili yettwasɣelles s uwgelhen ixef s ixef, ayagi yebɣa ad d-yini belli aqeddac n Excalidraw akked medden ur zmiren ara ad ɣren agbur.",
"loadSceneOverridePrompt": "Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?", "loadSceneOverridePrompt": "Asali n wunuɣ uffiɣ ad isemselsi agbur-inek (m) yellan. Tebɣiḍ ad tkemmeleḍ?",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "Aḥbas n tɣimit ad yesefsex unuɣ-inek (m) yettwaḥerzen yakan s wudem adigan. Tetḥeqqeḍ?\n(Ma tebɣiḍ ad teǧǧeḍ unuɣ-inek (m) adigan, mdel iccer n yiminig, deg umḍiq.)",
"errorLoadingLibrary": "Teḍra-d tuccḍa deg usali n temkarḍit n wis kraḍ.", "errorLoadingLibrary": "Teḍra-d tuccḍa deg usali n temkarḍit n wis kraḍ.",
"confirmAddLibrary": "Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?", "confirmAddLibrary": "Ayagi adirnu talɣa (win) {{numShapes}} ɣer temkarḍit-inek (m). Tetḥeqqeḍ?",
"imageDoesNotContainScene": "Taktert n tugniwin ur tettwadhel ara akka tura.\nTebɣiḍ ad tketreḍ asayes? Tugna-agi tettban-d ur tegbir ara isefka n usnas. Tesremdeḍ ayagi deg usifeḍ?", "imageDoesNotContainScene": "Taktert n tugniwin ur tettwadhel ara akka tura.\nTebɣiḍ ad tketreḍ asayes? Tugna-agi tettban-d ur tegbir ara isefka n usnas. Tesremdeḍ ayagi deg usifeḍ?",
"cannotRestoreFromImage": "Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna" "cannotRestoreFromImage": "Asayes ulamek ara d-yettwarr seg ufaylu-agi n tugna",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Tafrayt", "selection": "Tafrayt",
@@ -184,7 +185,7 @@
"clearCanvasCaveat": " Ayagi ad d-iglu s usṛuḥu n umahil ", "clearCanvasCaveat": " Ayagi ad d-iglu s usṛuḥu n umahil ",
"trackedToSentry_pre": "Tuccḍa akked umesmagi ", "trackedToSentry_pre": "Tuccḍa akked umesmagi ",
"trackedToSentry_post": " tettwasekles deg unagraw-nneɣ.", "trackedToSentry_post": " tettwasekles deg unagraw-nneɣ.",
"openIssueMessage_pre": "", "openIssueMessage_pre": "Nḥuder aṭas akken ur nseddu ara talɣut n usayes-inek (m) di tuccḍa. Ma yella asayes-inek (m) mačči d amaẓlay, ttxil-k (m) xemmem ad ḍefreḍ ",
"openIssueMessage_button": "afecku n weḍfar n yibugen.", "openIssueMessage_button": "afecku n weḍfar n yibugen.",
"openIssueMessage_post": " Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.", "openIssueMessage_post": " Ma ulac uɣilif seddu talɣut ukessar-agi s wenɣal akked usenṭeḍ di GitHub issue.",
"sceneContent": "Agbur n usayes:" "sceneContent": "Agbur n usayes:"
@@ -212,7 +213,7 @@
"github": "Tufiḍ-d ugur? Azen-aɣ-d", "github": "Tufiḍ-d ugur? Azen-aɣ-d",
"howto": "Ḍfer imniren-nneɣ", "howto": "Ḍfer imniren-nneɣ",
"or": "neɣ", "or": "neɣ",
"preventBinding": "", "preventBinding": "Seḥbes tuqqna n tneccabin",
"shapes": "Talɣiwin", "shapes": "Talɣiwin",
"shortcuts": "Inegzumen n unasiw", "shortcuts": "Inegzumen n unasiw",
"textFinish": "Fak asiẓreg (aḍris)", "textFinish": "Fak asiẓreg (aḍris)",
@@ -235,14 +236,16 @@
"storage": "Aḥraz", "storage": "Aḥraz",
"title": "", "title": "",
"total": "Aɣrud", "total": "Aɣrud",
"version": "", "version": "Alqem",
"versionCopy": "", "versionCopy": "Sit ad tneɣleḍ",
"versionNotAvailable": "", "versionNotAvailable": "Ur inuḥ ulqem",
"width": "Tehri" "width": "Tehri"
}, },
"toast": { "toast": {
"copyStyles": "Iɣunab yettwaneɣlen.", "copyStyles": "Iɣunab yettwaneɣlen.",
"copyToClipboard": "", "copyToClipboard": "Yettwaɣel ɣer tecfawit.",
"copyToClipboardAsPng": "Yettwanɣel ɣer tecfawit am PNG." "copyToClipboardAsPng": "Yettwanɣel ɣer tecfawit am PNG.",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+34 -31
View File
@@ -68,7 +68,7 @@
"layers": "레이어", "layers": "레이어",
"actions": "동작", "actions": "동작",
"language": "언어", "language": "언어",
"createRoom": "실시간 협업 세션 공유", "liveCollaboration": "",
"duplicateSelection": "복제", "duplicateSelection": "복제",
"untitled": "제목 없음", "untitled": "제목 없음",
"name": "이름", "name": "이름",
@@ -77,7 +77,7 @@
"group": "그룹 생성", "group": "그룹 생성",
"ungroup": "그룹 해제", "ungroup": "그룹 해제",
"collaborators": "공동 작업자", "collaborators": "공동 작업자",
"gridMode": "격자 방식", "showGrid": "",
"addToLibrary": "라이브러리에 추가", "addToLibrary": "라이브러리에 추가",
"removeFromLibrary": "라이브러리에서 제거", "removeFromLibrary": "라이브러리에서 제거",
"libraryLoadingMessage": "라이브러리 불러오는 중…", "libraryLoadingMessage": "라이브러리 불러오는 중…",
@@ -92,7 +92,7 @@
"centerHorizontally": "수평으로 중앙 정렬", "centerHorizontally": "수평으로 중앙 정렬",
"distributeHorizontally": "수평으로 분배", "distributeHorizontally": "수평으로 분배",
"distributeVertically": "수직으로 분배", "distributeVertically": "수직으로 분배",
"viewMode": "" "viewMode": "보기 모드"
}, },
"buttons": { "buttons": {
"clearReset": "캔버스 초기화", "clearReset": "캔버스 초기화",
@@ -117,7 +117,7 @@
"edit": "수정", "edit": "수정",
"undo": "실행 취소", "undo": "실행 취소",
"redo": "다시 실행", "redo": "다시 실행",
"roomDialog": "실시간 협업 시작하기", "resetLibrary": "",
"createNewRoom": "방 만들기", "createNewRoom": "방 만들기",
"fullScreen": "전체화면", "fullScreen": "전체화면",
"darkMode": "다크 모드", "darkMode": "다크 모드",
@@ -136,11 +136,12 @@
"decryptFailed": "데이터를 복호화하지 못했습니다.", "decryptFailed": "데이터를 복호화하지 못했습니다.",
"uploadedSecurly": "업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.", "uploadedSecurly": "업로드는 종단 간 암호화로 보호되므로 Excalidraw 서버 및 타사가 콘텐츠를 읽을 수 없습니다.",
"loadSceneOverridePrompt": "외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?", "loadSceneOverridePrompt": "외부 파일을 불러 오면 기존 콘텐츠가 대체됩니다. 계속 진행할까요?",
"collabStopOverridePrompt": "", "collabStopOverridePrompt": "협업 세션을 종료하면 로컬 저장소에 있는 그림이 협업 세션의 그림으로 대체됩니다. 진행하겠습니까?\n\n(로컬 저장소에 있는 그림을 유지하려면 현재 브라우저 탭을 닫아주세요.)",
"errorLoadingLibrary": "외부 라이브러리를 불러오는 중에 문제가 발생했습니다.", "errorLoadingLibrary": "외부 라이브러리를 불러오는 중에 문제가 발생했습니다.",
"confirmAddLibrary": "{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?", "confirmAddLibrary": "{{numShapes}}개의 모양이 라이브러리에 추가됩니다. 계속하시겠어요?",
"imageDoesNotContainScene": "이미지에서 불러오기는 현재 지원되지 않습니다.\n\n화면을 불러오려고 하셨나요? 이미지에 화면 정보가 없는 것 같습니다. 내보낼 때 화면을 포함했나요?", "imageDoesNotContainScene": "이미지에서 불러오기는 현재 지원되지 않습니다.\n\n화면을 불러오려고 하셨나요? 이미지에 화면 정보가 없는 것 같습니다. 내보낼 때 화면을 포함했나요?",
"cannotRestoreFromImage": "이미지 파일에서 화면을 복구할 수 없었습니다" "cannotRestoreFromImage": "이미지 파일에서 화면을 복구할 수 없었습니다",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "선택", "selection": "선택",
@@ -202,25 +203,25 @@
"title": "오류" "title": "오류"
}, },
"helpDialog": { "helpDialog": {
"blog": "", "blog": "블로그 읽어보기",
"click": "", "click": "클릭",
"curvedArrow": "", "curvedArrow": "곡선 화살표",
"curvedLine": "", "curvedLine": "곡선",
"documentation": "", "documentation": "설명서",
"drag": "", "drag": "드래그",
"editor": "", "editor": "에디터",
"github": "", "github": "문제 제보하기",
"howto": "", "howto": "가이드 참고하기",
"or": "", "or": "또는",
"preventBinding": "", "preventBinding": "화살표가 붙지 않게 하기",
"shapes": "", "shapes": "도형",
"shortcuts": "", "shortcuts": "키보드 단축키",
"textFinish": "", "textFinish": "편집 완료 (텍스트)",
"textNewLine": "", "textNewLine": "줄바꿈 (텍스트)",
"title": "", "title": "도움말",
"view": "", "view": "보기",
"zoomToFit": "", "zoomToFit": "모든 요소가 보이도록 확대/축소",
"zoomToSelection": "" "zoomToSelection": "선택 영역으로 확대/축소"
}, },
"encrypted": { "encrypted": {
"tooltip": "그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다." "tooltip": "그림은 종단 간 암호화되므로 Excalidraw의 서버는 절대로 내용을 알 수 없습니다."
@@ -235,14 +236,16 @@
"storage": "저장공간", "storage": "저장공간",
"title": "덕후들을 위한 통계", "title": "덕후들을 위한 통계",
"total": "합계", "total": "합계",
"version": "", "version": "버전",
"versionCopy": "", "versionCopy": "복사하려면 클릭",
"versionNotAvailable": "", "versionNotAvailable": "해당 버전 사용 불가능",
"width": "너비" "width": "너비"
}, },
"toast": { "toast": {
"copyStyles": "", "copyStyles": "스타일 복사.",
"copyToClipboard": "", "copyToClipboard": "클립보드로 복사.",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "클립보드로 PNG 이미지 복사.",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "အလွှာများ", "layers": "အလွှာများ",
"actions": "လုပ်ဆောင်ချက်များ", "actions": "လုပ်ဆောင်ချက်များ",
"language": "ဘာသာစကား", "language": "ဘာသာစကား",
"createRoom": "တိုက်ရိုက်ပူးပေါင်းဆောင်ရွက်ရန်အဖွဲ့ဖွဲ့", "liveCollaboration": "",
"duplicateSelection": "ပွား", "duplicateSelection": "ပွား",
"untitled": "အမည်မရှိ", "untitled": "အမည်မရှိ",
"name": "အမည်", "name": "အမည်",
@@ -77,7 +77,7 @@
"group": "အုပ်စုဖွဲ့", "group": "အုပ်စုဖွဲ့",
"ungroup": "အုပ်စုဖျက်သိမ်း", "ungroup": "အုပ်စုဖျက်သိမ်း",
"collaborators": "ပူးပေါင်းပါဝင်သူများ", "collaborators": "ပူးပေါင်းပါဝင်သူများ",
"gridMode": "", "showGrid": "",
"addToLibrary": "မှတ်တမ်းတင်", "addToLibrary": "မှတ်တမ်းတင်",
"removeFromLibrary": "မှတ်တမ်းမှထုတ်", "removeFromLibrary": "မှတ်တမ်းမှထုတ်",
"libraryLoadingMessage": "မှတ်တမ်းအား တင်သွင်းနေသည်…", "libraryLoadingMessage": "မှတ်တမ်းအား တင်သွင်းနေသည်…",
@@ -117,7 +117,7 @@
"edit": "ပြင်ဆင်", "edit": "ပြင်ဆင်",
"undo": "ပြန်ထား", "undo": "ပြန်ထား",
"redo": "ထပ်လုပ်", "redo": "ထပ်လုပ်",
"roomDialog": "တိုက်ရိုက်ပူးပေါင်းမှုစတင်", "resetLibrary": "",
"createNewRoom": "အခန်းသစ်ဖွဲ့", "createNewRoom": "အခန်းသစ်ဖွဲ့",
"fullScreen": "", "fullScreen": "",
"darkMode": "", "darkMode": "",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "ပြင်ပမှမှတ်တမ်းအားတင်သွင်းရာတွင်အမှားအယွင်းရှိနေသည်။", "errorLoadingLibrary": "ပြင်ပမှမှတ်တမ်းအားတင်သွင်းရာတွင်အမှားအယွင်းရှိနေသည်။",
"confirmAddLibrary": "{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။", "confirmAddLibrary": "{{numShapes}} ခုသောပုံသဏ္ဌာန်အားမှတ်တမ်းတင်ပါမည်။ အတည်ပြုပါ။",
"imageDoesNotContainScene": "", "imageDoesNotContainScene": "",
"cannotRestoreFromImage": "ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။" "cannotRestoreFromImage": "ဤပုံဖြင့်မြင်ကွင်းပြန်လည်မရယူနိုင်ပါ။",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "ရွေးချယ်", "selection": "ရွေးချယ်",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Lag", "layers": "Lag",
"actions": "Handlinger", "actions": "Handlinger",
"language": "Språk", "language": "Språk",
"createRoom": "Del en sanntids-samarbeidsøkt", "liveCollaboration": "Sanntids-samarbeid",
"duplicateSelection": "Dupliser", "duplicateSelection": "Dupliser",
"untitled": "Uten navn", "untitled": "Uten navn",
"name": "Navn", "name": "Navn",
@@ -77,7 +77,7 @@
"group": "Gruppér utvalg", "group": "Gruppér utvalg",
"ungroup": "Avgruppér utvalg", "ungroup": "Avgruppér utvalg",
"collaborators": "Samarbeidspartnere", "collaborators": "Samarbeidspartnere",
"gridMode": "Rutevisning", "showGrid": "Vis rutenett",
"addToLibrary": "Legg til i bibliotek", "addToLibrary": "Legg til i bibliotek",
"removeFromLibrary": "Fjern fra bibliotek", "removeFromLibrary": "Fjern fra bibliotek",
"libraryLoadingMessage": "Laster bibliotek…", "libraryLoadingMessage": "Laster bibliotek…",
@@ -117,7 +117,7 @@
"edit": "Rediger", "edit": "Rediger",
"undo": "Angre", "undo": "Angre",
"redo": "Gjør om", "redo": "Gjør om",
"roomDialog": "Start sanntids-samarbeid", "resetLibrary": "Nullstill bibliotek",
"createNewRoom": "Opprett et nytt rom", "createNewRoom": "Opprett et nytt rom",
"fullScreen": "Fullskjerm", "fullScreen": "Fullskjerm",
"darkMode": "Mørk modus", "darkMode": "Mørk modus",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Det oppstod en feil under lasting av tredjepartsbiblioteket.", "errorLoadingLibrary": "Det oppstod en feil under lasting av tredjepartsbiblioteket.",
"confirmAddLibrary": "Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?", "confirmAddLibrary": "Dette vil legge til {{numShapes}} figur(er) i biblioteket ditt. Er du sikker?",
"imageDoesNotContainScene": "Importering av bilder støttes ikke for øyeblikket.\n\nVil du importere en scene? Dette bildet ser ikke ut til å inneholde noen scene-data. Har du aktivert dette under eksporten?", "imageDoesNotContainScene": "Importering av bilder støttes ikke for øyeblikket.\n\nVil du importere en scene? Dette bildet ser ikke ut til å inneholde noen scene-data. Har du aktivert dette under eksporten?",
"cannotRestoreFromImage": "Scenen kunne ikke gjenopprettes fra denne bildefilen" "cannotRestoreFromImage": "Scenen kunne ikke gjenopprettes fra denne bildefilen",
"resetLibrary": "Dette vil tømme biblioteket ditt. Er du sikker?"
}, },
"toolBar": { "toolBar": {
"selection": "Velg", "selection": "Velg",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Kopierte stiler.", "copyStyles": "Kopierte stiler.",
"copyToClipboard": "Kopiert til utklippstavlen.", "copyToClipboard": "Kopiert til utklippstavlen.",
"copyToClipboardAsPng": "Kopiert til utklippstavlen som PNG." "copyToClipboardAsPng": "Kopiert til utklippstavlen som PNG.",
"fileSaved": "Fil lagret.",
"fileSavedToFilename": "Lagret til {filename}"
} }
} }
+12 -9
View File
@@ -68,7 +68,7 @@
"layers": "Lagen", "layers": "Lagen",
"actions": "Acties", "actions": "Acties",
"language": "Taal", "language": "Taal",
"createRoom": "Deel een live-samenwerkingssessie", "liveCollaboration": "Live Samenwerking",
"duplicateSelection": "Dupliceer", "duplicateSelection": "Dupliceer",
"untitled": "Naamloos", "untitled": "Naamloos",
"name": "Naam", "name": "Naam",
@@ -77,7 +77,7 @@
"group": "Groeperen", "group": "Groeperen",
"ungroup": "Groep opheffen", "ungroup": "Groep opheffen",
"collaborators": "Deelnemers", "collaborators": "Deelnemers",
"gridMode": "Rasterweergave", "showGrid": "Raster weergeven",
"addToLibrary": "Voeg toe aan bibliotheek", "addToLibrary": "Voeg toe aan bibliotheek",
"removeFromLibrary": "Verwijder uit bibliotheek", "removeFromLibrary": "Verwijder uit bibliotheek",
"libraryLoadingMessage": "Bibliotheek laden…", "libraryLoadingMessage": "Bibliotheek laden…",
@@ -117,7 +117,7 @@
"edit": "Bewerken", "edit": "Bewerken",
"undo": "Ongedaan maken", "undo": "Ongedaan maken",
"redo": "Herstel ongedaan maken", "redo": "Herstel ongedaan maken",
"roomDialog": "Live-samenwerkingssessie starten", "resetLibrary": "Bibliotheek Resetten",
"createNewRoom": "Creëer live-samenwerkingssessie", "createNewRoom": "Creëer live-samenwerkingssessie",
"fullScreen": "Volledig scherm", "fullScreen": "Volledig scherm",
"darkMode": "Donkere modus", "darkMode": "Donkere modus",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Bij het laden van de externe bibliotheek is een fout opgetreden.", "errorLoadingLibrary": "Bij het laden van de externe bibliotheek is een fout opgetreden.",
"confirmAddLibrary": "Hiermee worden {{numShapes}} vorm(n) aan uw bibliotheek toegevoegd. Ben je het zeker?", "confirmAddLibrary": "Hiermee worden {{numShapes}} vorm(n) aan uw bibliotheek toegevoegd. Ben je het zeker?",
"imageDoesNotContainScene": "Afbeeldingen importeren wordt op dit moment niet ondersteund.\n\nWil je een scène importeren? Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je dit geactiveerd tijdens het exporteren?", "imageDoesNotContainScene": "Afbeeldingen importeren wordt op dit moment niet ondersteund.\n\nWil je een scène importeren? Deze afbeelding lijkt geen scène gegevens te bevatten. Heb je dit geactiveerd tijdens het exporteren?",
"cannotRestoreFromImage": "Scène kan niet worden hersteld vanuit dit afbeeldingsbestand" "cannotRestoreFromImage": "Scène kan niet worden hersteld vanuit dit afbeeldingsbestand",
"resetLibrary": "Dit zal je bibliotheek wissen. Weet je het zeker?"
}, },
"toolBar": { "toolBar": {
"selection": "Selectie", "selection": "Selectie",
@@ -235,14 +236,16 @@
"storage": "Opslag", "storage": "Opslag",
"title": "Statistieken voor nerds", "title": "Statistieken voor nerds",
"total": "Totaal", "total": "Totaal",
"version": "", "version": "Versie",
"versionCopy": "", "versionCopy": "Klik om te kopiëren",
"versionNotAvailable": "", "versionNotAvailable": "Versie niet beschikbaar",
"width": "Breedte" "width": "Breedte"
}, },
"toast": { "toast": {
"copyStyles": "Stijlen gekopieerd.", "copyStyles": "Stijlen gekopieerd.",
"copyToClipboard": "", "copyToClipboard": "Gekopieerd naar het klembord.",
"copyToClipboardAsPng": "Gekopieerd naar klembord als PNG." "copyToClipboardAsPng": "Gekopieerd naar klembord als PNG.",
"fileSaved": "Bestand opgeslagen.",
"fileSavedToFilename": "Opgeslagen als {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Lag", "layers": "Lag",
"actions": "Handlingar", "actions": "Handlingar",
"language": "Språk", "language": "Språk",
"createRoom": "Del ei sanntids-samarbeidsøkt", "liveCollaboration": "",
"duplicateSelection": "Dupliser", "duplicateSelection": "Dupliser",
"untitled": "Utan namn", "untitled": "Utan namn",
"name": "Namn", "name": "Namn",
@@ -77,7 +77,7 @@
"group": "Grupper utval", "group": "Grupper utval",
"ungroup": "Avgrupper utval", "ungroup": "Avgrupper utval",
"collaborators": "Samarbeidarar", "collaborators": "Samarbeidarar",
"gridMode": "Rutevisning", "showGrid": "",
"addToLibrary": "Legg til i bibliotek", "addToLibrary": "Legg til i bibliotek",
"removeFromLibrary": "Fjern frå bibliotek", "removeFromLibrary": "Fjern frå bibliotek",
"libraryLoadingMessage": "Laster bibliotek…", "libraryLoadingMessage": "Laster bibliotek…",
@@ -117,7 +117,7 @@
"edit": "Rediger", "edit": "Rediger",
"undo": "Angre", "undo": "Angre",
"redo": "Gjer om", "redo": "Gjer om",
"roomDialog": "Start sanntids-samarbeid", "resetLibrary": "",
"createNewRoom": "Lag nytt rom", "createNewRoom": "Lag nytt rom",
"fullScreen": "Fullskjerm", "fullScreen": "Fullskjerm",
"darkMode": "Mørk modus", "darkMode": "Mørk modus",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Det oppstod ein feil under lastinga av tredjepartsbibliotek.", "errorLoadingLibrary": "Det oppstod ein feil under lastinga av tredjepartsbibliotek.",
"confirmAddLibrary": "Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?", "confirmAddLibrary": "Dette vil legge til {{numShapes}} form(er) i biblioteket ditt. Er du sikker?",
"imageDoesNotContainScene": "Importering av bilder støttes ikkje for p. t.\n\nVil du importere ein scene? Dette bildet ser ikkje ut til å inneholde noen scene-data. Har du aktivert dette under eksporten?", "imageDoesNotContainScene": "Importering av bilder støttes ikkje for p. t.\n\nVil du importere ein scene? Dette bildet ser ikkje ut til å inneholde noen scene-data. Har du aktivert dette under eksporten?",
"cannotRestoreFromImage": "Scena kunne ikkje gjenopprettast frå denne biletfila" "cannotRestoreFromImage": "Scena kunne ikkje gjenopprettast frå denne biletfila",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Vel", "selection": "Vel",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "ਪਰਤਾਂ", "layers": "ਪਰਤਾਂ",
"actions": "ਕਾਰਵਾਈਆਂ", "actions": "ਕਾਰਵਾਈਆਂ",
"language": "ਭਾਸ਼ਾ", "language": "ਭਾਸ਼ਾ",
"createRoom": "ਲਾਇਵ ਸਹਿਯੋਗ ਇਜਲਾਸ ਸਾਂਝਾ ਕਰੋ", "liveCollaboration": "",
"duplicateSelection": "ਡੁਪਲੀਕੇਟ ਬਣਾਓ", "duplicateSelection": "ਡੁਪਲੀਕੇਟ ਬਣਾਓ",
"untitled": "ਬੇ-ਸਿਰਨਾਵਾਂ", "untitled": "ਬੇ-ਸਿਰਨਾਵਾਂ",
"name": "ਨਾਂ", "name": "ਨਾਂ",
@@ -77,7 +77,7 @@
"group": "ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ", "group": "ਚੋਣ ਦਾ ਗਰੁੱਪ ਬਣਾਓ",
"ungroup": "ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ", "ungroup": "ਚੋਣ ਦਾ ਗਰੁੱਪ ਤੋੜੋ",
"collaborators": "ਸਹਿਯੋਗੀ", "collaborators": "ਸਹਿਯੋਗੀ",
"gridMode": "ਜਾਲੀਦਾਰ ਮੋਡ", "showGrid": "ਜਾਲੀ ਦਿਖਾਓ",
"addToLibrary": "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ", "addToLibrary": "ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਜੋੜੋ",
"removeFromLibrary": "ਲਾਇਬ੍ਰੇਰੀ 'ਚੋਂ ਹਟਾਓ", "removeFromLibrary": "ਲਾਇਬ੍ਰੇਰੀ 'ਚੋਂ ਹਟਾਓ",
"libraryLoadingMessage": "ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…", "libraryLoadingMessage": "ਲਾਇਬ੍ਰੇਰੀ ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…",
@@ -117,7 +117,7 @@
"edit": "ਸੋਧੋ", "edit": "ਸੋਧੋ",
"undo": "ਅਣਕੀਤਾ ਕਰੋ", "undo": "ਅਣਕੀਤਾ ਕਰੋ",
"redo": "ਮੁੜ-ਕਰੋ", "redo": "ਮੁੜ-ਕਰੋ",
"roomDialog": "ਲਾਇਵ ਸਹਿਯੋਗ ਸ਼ੁਰੂ ਕਰੋ", "resetLibrary": "",
"createNewRoom": "ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ", "createNewRoom": "ਨਵਾਂ ਕਮਰਾ ਬਣਾਓ",
"fullScreen": "ਪੂਰੀ ਸਕਰੀਨ", "fullScreen": "ਪੂਰੀ ਸਕਰੀਨ",
"darkMode": "ਡਾਰਕ ਮੋਡ", "darkMode": "ਡਾਰਕ ਮੋਡ",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "ਤੀਜੀ ਧਿਰ ਦੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀ ਹੋਈ ਸੀ।", "errorLoadingLibrary": "ਤੀਜੀ ਧਿਰ ਦੀ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਲੋਡ ਕਰਨ ਵਿੱਚ ਗਲਤੀ ਹੋਈ ਸੀ।",
"confirmAddLibrary": "ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?", "confirmAddLibrary": "ਇਹ ਤੁਹਾਡੀ ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ {{numShapes}} ਆਕ੍ਰਿਤੀ(ਆਂ) ਨੂੰ ਜੋੜ ਦੇਵੇਗਾ। ਕੀ ਤੁਸੀਂ ਪੱਕਾ ਇੰਝ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?",
"imageDoesNotContainScene": "ਫਿਲਹਾਲ ਤਸਵੀਰਾਂ ਨੂੰ ਆਯਾਤ ਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।\n\nਕੀ ਤੁਸੀਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਸੀ? ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਨਿਰਯਾਤ ਦੌਰਾਨ ਤੁਸੀਂ ਇਹ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?", "imageDoesNotContainScene": "ਫਿਲਹਾਲ ਤਸਵੀਰਾਂ ਨੂੰ ਆਯਾਤ ਕਰਨ ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।\n\nਕੀ ਤੁਸੀਂ ਦ੍ਰਿਸ਼ ਨੂੰ ਆਯਾਤ ਕਰਨਾ ਚਾਹੁੰਦੇ ਸੀ? ਇਸ ਤਸਵੀਰ ਵਿੱਚ ਦ੍ਰਿਸ਼ ਦਾ ਕੋਈ ਵੀ ਡਾਟਾ ਨਜ਼ਰ ਨਹੀਂ ਆ ਰਿਹਾ। ਕੀ ਨਿਰਯਾਤ ਦੌਰਾਨ ਤੁਸੀਂ ਇਹ ਸਮਰੱਥ ਕੀਤਾ ਸੀ?",
"cannotRestoreFromImage": "ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ" "cannotRestoreFromImage": "ਇਸ ਤਸਵੀਰ ਫਾਈਲ ਤੋਂ ਦ੍ਰਿਸ਼ ਬਹਾਲ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "ਚੋਣਕਾਰ", "selection": "ਚੋਣਕਾਰ",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।", "copyStyles": "ਕਾਪੀ ਕੀਤੇ ਸਟਾਇਲ।",
"copyToClipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ।", "copyToClipboard": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ ਕਾਪੀ ਕੀਤਾ।",
"copyToClipboardAsPng": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ।" "copyToClipboardAsPng": "ਕਲਿੱਪਬੋਰਡ 'ਤੇ PNG ਵਜੋਂ ਕਾਪੀ ਕੀਤਾ।",
"fileSaved": "ਫਾਈਲ ਸਾਂਭੀ ਗਈ।",
"fileSavedToFilename": "{filename} ਵਿੱਚ ਸਾਂਭੀ"
} }
} }
+26 -26
View File
@@ -1,36 +1,36 @@
{ {
"ar-SA": 87, "ar-SA": 85,
"bg-BG": 91, "bg-BG": 98,
"ca-ES": 87, "ca-ES": 85,
"de-DE": 98, "de-DE": 100,
"el-GR": 99, "el-GR": 100,
"en": 100, "en": 100,
"es-ES": 98, "es-ES": 100,
"fa-IR": 95, "fa-IR": 93,
"fi-FI": 98, "fi-FI": 100,
"fr-FR": 100, "fr-FR": 100,
"he-IL": 87, "he-IL": 85,
"hi-IN": 98, "hi-IN": 96,
"hu-HU": 87, "hu-HU": 85,
"id-ID": 97, "id-ID": 99,
"it-IT": 100, "it-IT": 100,
"ja-JP": 79, "ja-JP": 100,
"kab-KAB": 94, "kab-KAB": 97,
"ko-KR": 87, "ko-KR": 97,
"my-MM": 81, "my-MM": 79,
"nb-NO": 100, "nb-NO": 100,
"nl-NL": 97, "nl-NL": 99,
"nn-NO": 90, "nn-NO": 87,
"pa-IN": 100, "pa-IN": 99,
"pl-PL": 88, "pl-PL": 85,
"pt-BR": 100, "pt-BR": 100,
"pt-PT": 97, "pt-PT": 94,
"ro-RO": 100, "ro-RO": 100,
"ru-RU": 97, "ru-RU": 100,
"sk-SK": 100, "sk-SK": 100,
"sv-SE": 98, "sv-SE": 100,
"tr-TR": 87, "tr-TR": 85,
"uk-UA": 97, "uk-UA": 99,
"zh-CN": 98, "zh-CN": 95,
"zh-TW": 100 "zh-TW": 100
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Warstwy", "layers": "Warstwy",
"actions": "Akcje", "actions": "Akcje",
"language": "Język", "language": "Język",
"createRoom": "Udostępnij sesję współpracy na żywo", "liveCollaboration": "",
"duplicateSelection": "Powiel", "duplicateSelection": "Powiel",
"untitled": "Bez tytułu", "untitled": "Bez tytułu",
"name": "Nazwa", "name": "Nazwa",
@@ -77,7 +77,7 @@
"group": "Zgrupuj wybrane", "group": "Zgrupuj wybrane",
"ungroup": "Rozgrupuj wybrane", "ungroup": "Rozgrupuj wybrane",
"collaborators": "Współtwórcy", "collaborators": "Współtwórcy",
"gridMode": "Tryb siatki", "showGrid": "",
"addToLibrary": "Dodaj do biblioteki", "addToLibrary": "Dodaj do biblioteki",
"removeFromLibrary": "Usuń z biblioteki", "removeFromLibrary": "Usuń z biblioteki",
"libraryLoadingMessage": "Ładowanie biblioteki…", "libraryLoadingMessage": "Ładowanie biblioteki…",
@@ -117,7 +117,7 @@
"edit": "Edytuj", "edit": "Edytuj",
"undo": "Cofnij", "undo": "Cofnij",
"redo": "Przywróć", "redo": "Przywróć",
"roomDialog": "Utwórz nową sesję współpracy na żywo", "resetLibrary": "",
"createNewRoom": "Utwórz nowy pokój", "createNewRoom": "Utwórz nowy pokój",
"fullScreen": "Pełny ekran", "fullScreen": "Pełny ekran",
"darkMode": "Ciemny motyw", "darkMode": "Ciemny motyw",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Wystąpił błąd podczas ładowania zewnętrznej biblioteki.", "errorLoadingLibrary": "Wystąpił błąd podczas ładowania zewnętrznej biblioteki.",
"confirmAddLibrary": "To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?", "confirmAddLibrary": "To doda {{numShapes}} kształtów do twojej biblioteki. Jesteś pewien?",
"imageDoesNotContainScene": "Importowanie zdjęć nie jest obecnie obsługiwane.\n\nCzy chciałeś zaimportować scenę? Ten obraz nie zawiera żadnych danych sceny. Czy włączyłeś to podczas eksportowania?", "imageDoesNotContainScene": "Importowanie zdjęć nie jest obecnie obsługiwane.\n\nCzy chciałeś zaimportować scenę? Ten obraz nie zawiera żadnych danych sceny. Czy włączyłeś to podczas eksportowania?",
"cannotRestoreFromImage": "Scena nie mogła zostać przywrócona z pliku obrazu" "cannotRestoreFromImage": "Scena nie mogła zostać przywrócona z pliku obrazu",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Zaznaczenie", "selection": "Zaznaczenie",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "", "copyStyles": "",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "" "copyToClipboardAsPng": "",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Camadas", "layers": "Camadas",
"actions": "Ações", "actions": "Ações",
"language": "Idioma", "language": "Idioma",
"createRoom": "Compartilhar uma sessão de colaboração ao vivo", "liveCollaboration": "Colaboração ao vivo",
"duplicateSelection": "Duplicar", "duplicateSelection": "Duplicar",
"untitled": "Sem título", "untitled": "Sem título",
"name": "Nome", "name": "Nome",
@@ -77,7 +77,7 @@
"group": "Agrupar seleção", "group": "Agrupar seleção",
"ungroup": "Desagrupar seleção", "ungroup": "Desagrupar seleção",
"collaborators": "Colaboradores", "collaborators": "Colaboradores",
"gridMode": "Modo grade", "showGrid": "Mostrar grade",
"addToLibrary": "Adicionar à biblioteca", "addToLibrary": "Adicionar à biblioteca",
"removeFromLibrary": "Remover da biblioteca", "removeFromLibrary": "Remover da biblioteca",
"libraryLoadingMessage": "Carregando biblioteca…", "libraryLoadingMessage": "Carregando biblioteca…",
@@ -117,7 +117,7 @@
"edit": "Editar", "edit": "Editar",
"undo": "Desfazer", "undo": "Desfazer",
"redo": "Refazer", "redo": "Refazer",
"roomDialog": "Iniciar colaboração ao vivo", "resetLibrary": "Redefinir biblioteca",
"createNewRoom": "Criar nova sala", "createNewRoom": "Criar nova sala",
"fullScreen": "Tela cheia", "fullScreen": "Tela cheia",
"darkMode": "Modo escuro", "darkMode": "Modo escuro",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Houve um erro ao carregar a biblioteca de terceiros.", "errorLoadingLibrary": "Houve um erro ao carregar a biblioteca de terceiros.",
"confirmAddLibrary": "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?", "confirmAddLibrary": "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?",
"imageDoesNotContainScene": "A importação de imagens não é suportada no momento.\n\nVocê deseja importar uma cena? Esta imagem parece não conter dados de cena. Você ativou isto durante a exportação?", "imageDoesNotContainScene": "A importação de imagens não é suportada no momento.\n\nVocê deseja importar uma cena? Esta imagem parece não conter dados de cena. Você ativou isto durante a exportação?",
"cannotRestoreFromImage": "Não foi possível restaurar a cena deste arquivo de imagem" "cannotRestoreFromImage": "Não foi possível restaurar a cena deste arquivo de imagem",
"resetLibrary": "Isto limpará a sua biblioteca. Você tem certeza?"
}, },
"toolBar": { "toolBar": {
"selection": "Seleção", "selection": "Seleção",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Estilos copiados.", "copyStyles": "Estilos copiados.",
"copyToClipboard": "Copiado para área de transferência.", "copyToClipboard": "Copiado para área de transferência.",
"copyToClipboardAsPng": "Copiado para a área de transferência como PNG." "copyToClipboardAsPng": "Copiado para a área de transferência como PNG.",
"fileSaved": "Arquivo salvo.",
"fileSavedToFilename": "Salvo em {filename}"
} }
} }
+8 -5
View File
@@ -68,7 +68,7 @@
"layers": "Camadas", "layers": "Camadas",
"actions": "Ações", "actions": "Ações",
"language": "Idioma", "language": "Idioma",
"createRoom": "Compartilhar uma sessão de colaboração ao vivo", "liveCollaboration": "",
"duplicateSelection": "Duplicar", "duplicateSelection": "Duplicar",
"untitled": "Sem título", "untitled": "Sem título",
"name": "Nome", "name": "Nome",
@@ -77,7 +77,7 @@
"group": "Agrupar seleção", "group": "Agrupar seleção",
"ungroup": "Desagrupar seleção", "ungroup": "Desagrupar seleção",
"collaborators": "Colaboradores", "collaborators": "Colaboradores",
"gridMode": "Modo grade", "showGrid": "",
"addToLibrary": "Adicionar à biblioteca", "addToLibrary": "Adicionar à biblioteca",
"removeFromLibrary": "Remover da biblioteca", "removeFromLibrary": "Remover da biblioteca",
"libraryLoadingMessage": "Carregando biblioteca…", "libraryLoadingMessage": "Carregando biblioteca…",
@@ -117,7 +117,7 @@
"edit": "Editar", "edit": "Editar",
"undo": "Desfazer", "undo": "Desfazer",
"redo": "Refazer", "redo": "Refazer",
"roomDialog": "Iniciar colaboração ao vivo", "resetLibrary": "",
"createNewRoom": "Criar nova sala", "createNewRoom": "Criar nova sala",
"fullScreen": "Tela cheia", "fullScreen": "Tela cheia",
"darkMode": "Modo escuro", "darkMode": "Modo escuro",
@@ -140,7 +140,8 @@
"errorLoadingLibrary": "Houve um erro ao carregar a biblioteca de terceiros.", "errorLoadingLibrary": "Houve um erro ao carregar a biblioteca de terceiros.",
"confirmAddLibrary": "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?", "confirmAddLibrary": "Isso adicionará {{numShapes}} forma(s) à sua biblioteca. Tem certeza?",
"imageDoesNotContainScene": "A importação de imagens não é suportada no momento.\n\nVocê deseja importar uma cena? Esta imagem parece não conter dados de cena. Você ativou isto durante a exportação?", "imageDoesNotContainScene": "A importação de imagens não é suportada no momento.\n\nVocê deseja importar uma cena? Esta imagem parece não conter dados de cena. Você ativou isto durante a exportação?",
"cannotRestoreFromImage": "Não foi possível restaurar a cena deste arquivo de imagem" "cannotRestoreFromImage": "Não foi possível restaurar a cena deste arquivo de imagem",
"resetLibrary": ""
}, },
"toolBar": { "toolBar": {
"selection": "Seleção", "selection": "Seleção",
@@ -243,6 +244,8 @@
"toast": { "toast": {
"copyStyles": "Estilos copiados.", "copyStyles": "Estilos copiados.",
"copyToClipboard": "", "copyToClipboard": "",
"copyToClipboardAsPng": "Copiado para o clipboard como PNG." "copyToClipboardAsPng": "Copiado para o clipboard como PNG.",
"fileSaved": "",
"fileSavedToFilename": ""
} }
} }

Some files were not shown because too many files have changed in this diff Show More