From 974722370524ee3c288dc5da5062a582fcc6d59b Mon Sep 17 00:00:00 2001 From: Excalidraw Bot <77840495+excalibot@users.noreply.github.com> Date: Fri, 6 Jan 2023 07:53:14 +0100 Subject: [PATCH 1/9] chore: Update translations from Crowdin (#6052) * New translations en.json (German) * Auto commit: Calculate translation coverage * New translations en.json (Hindi) * New translations en.json (Marathi) * New translations en.json (Hindi) * Auto commit: Calculate translation coverage * New translations en.json (Galician) * Auto commit: Calculate translation coverage * New translations en.json (Romanian) * New translations en.json (French) * New translations en.json (Spanish) * New translations en.json (Arabic) * New translations en.json (Bulgarian) * New translations en.json (Catalan) * New translations en.json (Czech) * New translations en.json (Danish) * New translations en.json (German) * New translations en.json (Greek) * New translations en.json (Basque) * New translations en.json (Finnish) * New translations en.json (Hebrew) * New translations en.json (Hungarian) * New translations en.json (Italian) * New translations en.json (Japanese) * New translations en.json (Korean) * New translations en.json (Kurdish) * New translations en.json (Lithuanian) * New translations en.json (Dutch) * New translations en.json (Punjabi) * New translations en.json (Polish) * New translations en.json (Portuguese) * New translations en.json (Russian) * New translations en.json (Slovak) * New translations en.json (Slovenian) * New translations en.json (Swedish) * New translations en.json (Turkish) * New translations en.json (Ukrainian) * New translations en.json (Chinese Simplified) * New translations en.json (Chinese Traditional) * New translations en.json (Vietnamese) * New translations en.json (Galician) * New translations en.json (Portuguese, Brazilian) * New translations en.json (Indonesian) * New translations en.json (Persian) * New translations en.json (Tamil) * New translations en.json (Bengali) * New translations en.json (Marathi) * New translations en.json (Norwegian Nynorsk) * New translations en.json (Kazakh) * New translations en.json (Latvian) * New translations en.json (Hindi) * New translations en.json (Burmese) * New translations en.json (Chinese Traditional, Hong Kong) * New translations en.json (Sinhala) * New translations en.json (Norwegian Bokmal) * New translations en.json (Occitan) * New translations en.json (Kabyle) * Auto commit: Calculate translation coverage * New translations en.json (Chinese Simplified) * Auto commit: Calculate translation coverage * New translations en.json (Chinese Traditional) * New translations en.json (Chinese Traditional) * New translations en.json (Norwegian Bokmal) * Auto commit: Calculate translation coverage * New translations en.json (Latvian) * Auto commit: Calculate translation coverage * New translations en.json (Romanian) * Auto commit: Calculate translation coverage * New translations en.json (Slovenian) * Auto commit: Calculate translation coverage * New translations en.json (Spanish) * New translations en.json (Russian) * Auto commit: Calculate translation coverage * New translations en.json (German) * Auto commit: Calculate translation coverage * New translations en.json (Vietnamese) * Auto commit: Calculate translation coverage * New translations en.json (Hindi) * Auto commit: Calculate translation coverage * New translations en.json (Dutch) * Auto commit: Calculate translation coverage * New translations en.json (Marathi) * Auto commit: Calculate translation coverage * New translations en.json (Latvian) * New translations en.json (French) * Auto commit: Calculate translation coverage * New translations en.json (French) * Auto commit: Calculate translation coverage * New translations en.json (Portuguese, Brazilian) * Auto commit: Calculate translation coverage * New translations en.json (Japanese) * Auto commit: Calculate translation coverage --- src/locales/ar-SA.json | 4 +++- src/locales/bg-BG.json | 4 +++- src/locales/bn-BD.json | 4 +++- src/locales/ca-ES.json | 4 +++- src/locales/cs-CZ.json | 4 +++- src/locales/da-DK.json | 4 +++- src/locales/de-DE.json | 8 ++++--- src/locales/el-GR.json | 4 +++- src/locales/es-ES.json | 4 +++- src/locales/eu-ES.json | 4 +++- src/locales/fa-IR.json | 4 +++- src/locales/fi-FI.json | 4 +++- src/locales/fr-FR.json | 14 ++++++----- src/locales/gl-ES.json | 14 ++++++----- src/locales/he-IL.json | 4 +++- src/locales/hi-IN.json | 10 ++++---- src/locales/hu-HU.json | 4 +++- src/locales/id-ID.json | 4 +++- src/locales/it-IT.json | 4 +++- src/locales/ja-JP.json | 14 ++++++----- src/locales/kab-KAB.json | 4 +++- src/locales/kk-KZ.json | 4 +++- src/locales/ko-KR.json | 4 +++- src/locales/ku-TR.json | 4 +++- src/locales/lt-LT.json | 4 +++- src/locales/lv-LV.json | 14 ++++++----- src/locales/mr-IN.json | 10 ++++---- src/locales/my-MM.json | 4 +++- src/locales/nb-NO.json | 4 +++- src/locales/nl-NL.json | 8 ++++--- src/locales/nn-NO.json | 4 +++- src/locales/oc-FR.json | 4 +++- src/locales/pa-IN.json | 4 +++- src/locales/percentages.json | 46 ++++++++++++++++++------------------ src/locales/pl-PL.json | 4 +++- src/locales/pt-BR.json | 24 ++++++++++--------- src/locales/pt-PT.json | 4 +++- src/locales/ro-RO.json | 4 +++- src/locales/ru-RU.json | 4 +++- src/locales/si-LK.json | 4 +++- src/locales/sk-SK.json | 4 +++- src/locales/sl-SI.json | 4 +++- src/locales/sv-SE.json | 4 +++- src/locales/ta-IN.json | 4 +++- src/locales/tr-TR.json | 4 +++- src/locales/uk-UA.json | 4 +++- src/locales/vi-VN.json | 6 +++-- src/locales/zh-CN.json | 16 +++++++------ src/locales/zh-HK.json | 4 +++- src/locales/zh-TW.json | 4 +++- 50 files changed, 217 insertions(+), 119 deletions(-) diff --git a/src/locales/ar-SA.json b/src/locales/ar-SA.json index 183d9cd35..938db0977 100644 --- a/src/locales/ar-SA.json +++ b/src/locales/ar-SA.json @@ -201,7 +201,9 @@ "svgImageInsertError": "تعذر إدراج صورة SVG. يبدو أن ترميز SVG غير صحيح.", "invalidSVGString": "SVG غير صالح.", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "تحديد", diff --git a/src/locales/bg-BG.json b/src/locales/bg-BG.json index f9a460118..ef2710b41 100644 --- a/src/locales/bg-BG.json +++ b/src/locales/bg-BG.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Селекция", diff --git a/src/locales/bn-BD.json b/src/locales/bn-BD.json index b19d257ec..6dbaa9967 100644 --- a/src/locales/bn-BD.json +++ b/src/locales/bn-BD.json @@ -201,7 +201,9 @@ "svgImageInsertError": "এসভীজী ছবি সন্নিবেশ করা যায়নি। এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷", "invalidSVGString": "এসভীজী মার্কআপটি অবৈধ মনে হচ্ছে৷", "cannotResolveCollabServer": "কোল্যাব সার্ভারের সাথে সংযোগ করা যায়নি। পৃষ্ঠাটি পুনরায় লোড করে আবার চেষ্টা করুন।", - "importLibraryError": "সংগ্রহ লোড করা যায়নি" + "importLibraryError": "সংগ্রহ লোড করা যায়নি", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "বাছাই", diff --git a/src/locales/ca-ES.json b/src/locales/ca-ES.json index 27c3cf944..ef6e33502 100644 --- a/src/locales/ca-ES.json +++ b/src/locales/ca-ES.json @@ -201,7 +201,9 @@ "svgImageInsertError": "No ha estat possible inserir la imatge SVG. Les marques SVG semblen invàlides.", "invalidSVGString": "SVG no vàlid.", "cannotResolveCollabServer": "No ha estat possible connectar amb el servidor collab. Si us plau recarregueu la pàgina i torneu a provar.", - "importLibraryError": "No s'ha pogut carregar la biblioteca" + "importLibraryError": "No s'ha pogut carregar la biblioteca", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Selecció", diff --git a/src/locales/cs-CZ.json b/src/locales/cs-CZ.json index 39a2dd1aa..aa801607a 100644 --- a/src/locales/cs-CZ.json +++ b/src/locales/cs-CZ.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Výběr", diff --git a/src/locales/da-DK.json b/src/locales/da-DK.json index 04a506a75..8f3cde90f 100644 --- a/src/locales/da-DK.json +++ b/src/locales/da-DK.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "", diff --git a/src/locales/de-DE.json b/src/locales/de-DE.json index 1d46724ef..e1c66ac48 100644 --- a/src/locales/de-DE.json +++ b/src/locales/de-DE.json @@ -201,7 +201,9 @@ "svgImageInsertError": "SVG-Bild konnte nicht eingefügt werden. Das SVG-Markup sieht ungültig aus.", "invalidSVGString": "Ungültige SVG.", "cannotResolveCollabServer": "Konnte keine Verbindung zum Collab-Server herstellen. Bitte lade die Seite neu und versuche es erneut.", - "importLibraryError": "Bibliothek konnte nicht geladen werden" + "importLibraryError": "Bibliothek konnte nicht geladen werden", + "collabSaveFailed": "Keine Speicherung in der Backend-Datenbank möglich. Wenn die Probleme weiterhin bestehen, solltest Du Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst.", + "collabSaveFailed_sizeExceeded": "Keine Speicherung in der Backend-Datenbank möglich, die Zeichenfläche scheint zu groß zu sein. Du solltest Deine Datei lokal speichern, um sicherzustellen, dass Du Deine Arbeit nicht verlierst." }, "toolBar": { "selection": "Auswahl", @@ -312,8 +314,8 @@ "zoomToFit": "Zoomen um alle Elemente einzupassen", "zoomToSelection": "Auf Auswahl zoomen", "toggleElementLock": "Auswahl sperren/entsperren", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "Seite nach oben/unten verschieben", + "movePageLeftRight": "Seite nach links/rechts verschieben" }, "clearCanvasDialog": { "title": "Zeichenfläche löschen" diff --git a/src/locales/el-GR.json b/src/locales/el-GR.json index 4ffde305b..0ad867f00 100644 --- a/src/locales/el-GR.json +++ b/src/locales/el-GR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Αδυναμία εισαγωγής εικόνας SVG. Η σήμανση της SVG δεν φαίνεται έγκυρη.", "invalidSVGString": "Μη έγκυρο SVG.", "cannotResolveCollabServer": "Αδυναμία σύνδεσης με τον διακομιστή συνεργασίας. Παρακαλώ ανανεώστε τη σελίδα και προσπαθήστε ξανά.", - "importLibraryError": "Αδυναμία φόρτωσης βιβλιοθήκης" + "importLibraryError": "Αδυναμία φόρτωσης βιβλιοθήκης", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Επιλογή", diff --git a/src/locales/es-ES.json b/src/locales/es-ES.json index 220efdf4c..de2d76a98 100644 --- a/src/locales/es-ES.json +++ b/src/locales/es-ES.json @@ -201,7 +201,9 @@ "svgImageInsertError": "No se pudo insertar la imagen SVG. El código SVG parece inválido.", "invalidSVGString": "SVG no válido.", "cannotResolveCollabServer": "No se pudo conectar al servidor colaborador. Por favor, vuelva a cargar la página y vuelva a intentarlo.", - "importLibraryError": "No se pudo cargar la librería" + "importLibraryError": "No se pudo cargar la librería", + "collabSaveFailed": "No se pudo guardar en la base de datos del backend. Si los problemas persisten, debería guardar su archivo localmente para asegurarse de que no pierde su trabajo.", + "collabSaveFailed_sizeExceeded": "No se pudo guardar en la base de datos del backend, el lienzo parece ser demasiado grande. Debería guardar el archivo localmente para asegurarse de que no pierde su trabajo." }, "toolBar": { "selection": "Selección", diff --git a/src/locales/eu-ES.json b/src/locales/eu-ES.json index 49a4a989e..00e45209e 100644 --- a/src/locales/eu-ES.json +++ b/src/locales/eu-ES.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Ezin izan da SVG irudia txertatu. SVG markak baliogabea dirudi.", "invalidSVGString": "SVG baliogabea.", "cannotResolveCollabServer": "Ezin izan da elkarlaneko zerbitzarira konektatu. Mesedez, berriro kargatu orria eta saiatu berriro.", - "importLibraryError": "Ezin izan da liburutegia kargatu" + "importLibraryError": "Ezin izan da liburutegia kargatu", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Hautapena", diff --git a/src/locales/fa-IR.json b/src/locales/fa-IR.json index 14fbe6023..03974771a 100644 --- a/src/locales/fa-IR.json +++ b/src/locales/fa-IR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "تصویر SVG وارد نشد. نشانه گذاری SVG نامعتبر به نظر می رسد.", "invalidSVGString": "SVG نادرست.", "cannotResolveCollabServer": "به سرور collab متصل نشد. لطفا صفحه را مجددا بارگذاری کنید و دوباره تلاش کنید.", - "importLibraryError": "داده‌ها بارگذاری نشدند" + "importLibraryError": "داده‌ها بارگذاری نشدند", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "گزینش", diff --git a/src/locales/fi-FI.json b/src/locales/fi-FI.json index 56b96c0cf..ba072d4fd 100644 --- a/src/locales/fi-FI.json +++ b/src/locales/fi-FI.json @@ -201,7 +201,9 @@ "svgImageInsertError": "SVG- kuvaa ei voitu lisätä. Tiedoston SVG-sisältö näyttää virheelliseltä.", "invalidSVGString": "Virheellinen SVG.", "cannotResolveCollabServer": "Yhteyden muodostaminen collab-palvelimeen epäonnistui. Virkistä sivu ja yritä uudelleen.", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Valinta", diff --git a/src/locales/fr-FR.json b/src/locales/fr-FR.json index 8fd90bbe4..df733033d 100644 --- a/src/locales/fr-FR.json +++ b/src/locales/fr-FR.json @@ -1,7 +1,7 @@ { "labels": { "paste": "Coller", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "Coller comme texte brut", "pasteCharts": "Coller les graphiques", "selectAll": "Tout sélectionner", "multiSelect": "Ajouter l'élément à la sélection", @@ -201,7 +201,9 @@ "svgImageInsertError": "Impossible d'insérer l'image SVG. Le balisage SVG semble invalide.", "invalidSVGString": "SVG invalide.", "cannotResolveCollabServer": "Impossible de se connecter au serveur collaboratif. Veuillez recharger la page et réessayer.", - "importLibraryError": "Impossible de charger la bibliothèque" + "importLibraryError": "Impossible de charger la bibliothèque", + "collabSaveFailed": "Impossible d'enregistrer dans la base de données en arrière-plan. Si des problèmes persistent, vous devriez enregistrer votre fichier localement pour vous assurer de ne pas perdre votre travail.", + "collabSaveFailed_sizeExceeded": "Impossible d'enregistrer dans la base de données en arrière-plan, le tableau semble trop grand. Vous devriez enregistrer le fichier localement pour vous assurer de ne pas perdre votre travail." }, "toolBar": { "selection": "Sélection", @@ -236,7 +238,7 @@ "resize": "Vous pouvez conserver les proportions en maintenant la touche MAJ pendant le redimensionnement, maintenez la touche ALT pour redimensionner par rapport au centre", "resizeImage": "Vous pouvez redimensionner librement en maintenant SHIFT,\nmaintenez ALT pour redimensionner depuis le centre", "rotate": "Vous pouvez restreindre les angles en maintenant MAJ pendant la rotation", - "lineEditor_info": "", + "lineEditor_info": "Maintenez CtrlOrCmd et Double-cliquez ou appuyez sur CtrlOrCmd + Entrée pour modifier les points", "lineEditor_pointSelected": "Appuyer sur Suppr. pour supprimer des points, Ctrl ou Cmd+D pour dupliquer, ou faire glisser pour déplacer", "lineEditor_nothingSelected": "Sélectionner un point pour éditer (maintenir la touche MAJ pour en sélectionner plusieurs),\nou maintenir la touche Alt enfoncée et cliquer pour ajouter de nouveaux points", "placeImage": "Cliquez pour placer l'image, ou cliquez et faites glisser pour définir sa taille manuellement", @@ -312,8 +314,8 @@ "zoomToFit": "Zoomer pour voir tous les éléments", "zoomToSelection": "Zoomer sur la sélection", "toggleElementLock": "Verrouiller/déverrouiller la sélection", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "Déplacer la page vers le haut/bas", + "movePageLeftRight": "Déplacer la page vers la gauche/droite" }, "clearCanvasDialog": { "title": "Effacer la zone de dessin" @@ -395,7 +397,7 @@ "fileSavedToFilename": "Enregistré sous {filename}", "canvas": "canevas", "selection": "sélection", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Utiliser {{shortcut}} pour coller comme un seul élément,\nou coller dans un éditeur de texte existant" }, "colors": { "ffffff": "Blanc", diff --git a/src/locales/gl-ES.json b/src/locales/gl-ES.json index aa2c4317a..f843c7089 100644 --- a/src/locales/gl-ES.json +++ b/src/locales/gl-ES.json @@ -1,7 +1,7 @@ { "labels": { "paste": "Pegar", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "Pegar coma texto sen formato", "pasteCharts": "Pegar gráficos", "selectAll": "Seleccionar todo", "multiSelect": "Engadir elemento á selección", @@ -201,7 +201,9 @@ "svgImageInsertError": "Non se puido inserir como imaxe SVG. O marcado SVG semella inválido.", "invalidSVGString": "SVG inválido.", "cannotResolveCollabServer": "Non se puido conectar ao servidor de colaboración. Por favor recargue a páxina e probe de novo.", - "importLibraryError": "Non se puido cargar a biblioteca" + "importLibraryError": "Non se puido cargar a biblioteca", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Selección", @@ -236,7 +238,7 @@ "resize": "Pode reducir as proporcións mantendo SHIFT mentres axusta o tamaño,\nmanteña ALT para axustalo dende o centro", "resizeImage": "Pode axustar o tamaño libremente mantendo SHIFT,\nmanteña ALT para axustalo dende o centro", "rotate": "Podes reducir os ángulos mantendo SHIFT mentres os rotas", - "lineEditor_info": "", + "lineEditor_info": "Manteña pulsado CtrlOrCmd e faga dobre clic ou prema CtrlOrCmd + Enter para editar puntos", "lineEditor_pointSelected": "Prema Suprimir para eliminar o(s) punto(s)\nCtrlOrCmd+D para duplicalos, ou arrastre para movelos", "lineEditor_nothingSelected": "Seleccione un punto para editar (manteña pulsado SHIFT para selección múltiple),\nou manteña pulsado Alt e faga clic para engadir novos puntos", "placeImage": "Faga clic para colocar a imaxe, ou faga clic e arrastre para establecer o seu tamaño manualmente", @@ -312,8 +314,8 @@ "zoomToFit": "Zoom que se axuste a todos os elementos", "zoomToSelection": "Zoom á selección", "toggleElementLock": "Bloquear/desbloquear selección", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "Mover páxina cara enriba/abaixo", + "movePageLeftRight": "Mover páxina cara a esquerda/dereita" }, "clearCanvasDialog": { "title": "Limpar lenzo" @@ -395,7 +397,7 @@ "fileSavedToFilename": "Gardado en {filename}", "canvas": "lenzo", "selection": "selección", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Usa {{shortcut}} para pegar como un único elemento\nou pega nun editor de texto existente" }, "colors": { "ffffff": "Branco", diff --git a/src/locales/he-IL.json b/src/locales/he-IL.json index 4fcb6b440..24d1db079 100644 --- a/src/locales/he-IL.json +++ b/src/locales/he-IL.json @@ -201,7 +201,9 @@ "svgImageInsertError": "לא ניתן היה להטמיע את תמונת ה-SVG. קידוד ה-SVG אינו תקני.", "invalidSVGString": "SVG בלתי תקני.", "cannotResolveCollabServer": "", - "importLibraryError": "לא ניתן היה לטעון את הספריה" + "importLibraryError": "לא ניתן היה לטעון את הספריה", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "בחירה", diff --git a/src/locales/hi-IN.json b/src/locales/hi-IN.json index 57844d97a..56fac78d8 100644 --- a/src/locales/hi-IN.json +++ b/src/locales/hi-IN.json @@ -1,7 +1,7 @@ { "labels": { "paste": "चिपकाएँ", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "सादे पाठ के रूप में चिपकाएं", "pasteCharts": "चार्ट चिपकाएँ", "selectAll": "सभी चुनें", "multiSelect": "आकार को चयन में जोड़ें", @@ -201,7 +201,9 @@ "svgImageInsertError": "एसवीजी छवि सम्मिलित नहीं कर सके, एसवीजी रचना अनुचित हैं", "invalidSVGString": "अनुचित SVG", "cannotResolveCollabServer": "कॉलेब सर्वर से कनेक्शन नहीं हो पा रहा. कृपया पृष्ठ को पुनः लाने का प्रयास करे.", - "importLibraryError": "संग्रह प्रतिष्ठापित नहीं किया जा सका" + "importLibraryError": "संग्रह प्रतिष्ठापित नहीं किया जा सका", + "collabSaveFailed": "किसी कारण वश अंदरूनी डेटाबेस में सहेजा नहीं जा सका। यदि समस्या बनी रहती है, तो किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।", + "collabSaveFailed_sizeExceeded": "लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।" }, "toolBar": { "selection": "चयन", @@ -236,7 +238,7 @@ "resize": "आकार बदलते समय आप SHIFT को पकड़ कर अनुपात में कमी कर सकते हैं,\nकेंद्र से आकार बदलने के लिए ALT दबाए रखें", "resizeImage": "", "rotate": "आप घूर्णन करते समय SHIFT पकड़कर कोणों को विवश कर सकते हैं", - "lineEditor_info": "", + "lineEditor_info": "बिंदुओं को सम्पादित करने के लिए CtrlOrCmd को दबायें रखते हुये डबल क्लिक करे, अथवा CtrlOrCmd + Enter साथ दबाये", "lineEditor_pointSelected": "", "lineEditor_nothingSelected": "", "placeImage": "", @@ -395,7 +397,7 @@ "fileSavedToFilename": "", "canvas": "", "selection": "", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "एक अवयव के रूप में चिपकाने के लिए {{shortcut}} का उपयोग करें,\nया किसी मौजूदा पाठ संपादक में चिपकायें" }, "colors": { "ffffff": "सफेद", diff --git a/src/locales/hu-HU.json b/src/locales/hu-HU.json index 99913d11a..8938fe37e 100644 --- a/src/locales/hu-HU.json +++ b/src/locales/hu-HU.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Nem sikerült beszúrni az SVG-képet. Az SVG szintaktika érvénytelennek tűnik.", "invalidSVGString": "Érvénytelen SVG.", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Kijelölés", diff --git a/src/locales/id-ID.json b/src/locales/id-ID.json index 9038b382c..68d06d466 100644 --- a/src/locales/id-ID.json +++ b/src/locales/id-ID.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Tidak dapat menyisipkan gambar SVG. Markup SVG sepertinya tidak valid.", "invalidSVGString": "SVG tidak valid.", "cannotResolveCollabServer": "Tidak dapat terhubung ke server kolab. Muat ulang laman dan coba lagi.", - "importLibraryError": "Tidak dapat memuat pustaka" + "importLibraryError": "Tidak dapat memuat pustaka", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Pilihan", diff --git a/src/locales/it-IT.json b/src/locales/it-IT.json index 589940f00..5f57b042e 100644 --- a/src/locales/it-IT.json +++ b/src/locales/it-IT.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Impossibile inserire l'immagine SVG. Il markup SVG non sembra corretto.", "invalidSVGString": "SVG non valido.", "cannotResolveCollabServer": "Impossibile connettersi al server di collab. Ricarica la pagina e riprova.", - "importLibraryError": "Impossibile caricare la libreria" + "importLibraryError": "Impossibile caricare la libreria", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Selezione", diff --git a/src/locales/ja-JP.json b/src/locales/ja-JP.json index fe0a1320c..e40b15ba0 100644 --- a/src/locales/ja-JP.json +++ b/src/locales/ja-JP.json @@ -1,7 +1,7 @@ { "labels": { "paste": "貼り付け", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "書式なしテキストとして貼り付け", "pasteCharts": "チャートの貼り付け", "selectAll": "すべて選択", "multiSelect": "複数選択", @@ -201,7 +201,9 @@ "svgImageInsertError": "SVGイメージを挿入できませんでした。SVGマークアップは無効に見えます。", "invalidSVGString": "無効なSVGです。", "cannotResolveCollabServer": "コラボレーションサーバに接続できませんでした。ページを再読み込みして、もう一度お試しください。", - "importLibraryError": "ライブラリを読み込めませんでした。" + "importLibraryError": "ライブラリを読み込めませんでした。", + "collabSaveFailed": "バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。", + "collabSaveFailed_sizeExceeded": "キャンバスが大きすぎるため、バックエンドデータベースに保存できませんでした。問題が解決しない場合は、作業を失わないようにローカルにファイルを保存してください。" }, "toolBar": { "selection": "選択", @@ -236,7 +238,7 @@ "resize": "サイズを変更中にSHIFTを押すと縦横比を固定できます。Altを押すと中央からサイズを変更できます", "resizeImage": "SHIFTを長押しすると自由にサイズを変更できます。\n中央からサイズを変更するにはALTを長押しします", "rotate": "回転中にSHIFT キーを押すと角度を制限することができます", - "lineEditor_info": "", + "lineEditor_info": "CtrlOrCmd を押したままダブルクリックするか、CtrlOrCmd + Enter を押して点を編集します", "lineEditor_pointSelected": "Deleteキーを押すと点を削除、CtrlOrCmd+Dで複製、マウスドラッグで移動", "lineEditor_nothingSelected": "編集する点を選択(SHIFTを押したままで複数選択)、\nAltキーを押しながらクリックすると新しい点を追加", "placeImage": "クリックして画像を配置するか、クリックしてドラッグしてサイズを手動で設定します", @@ -312,8 +314,8 @@ "zoomToFit": "すべての要素が収まるようにズーム", "zoomToSelection": "選択要素にズーム", "toggleElementLock": "選択したアイテムをロック/ロック解除", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "ページを上下に移動", + "movePageLeftRight": "ページを左右に移動" }, "clearCanvasDialog": { "title": "キャンバスを消去" @@ -395,7 +397,7 @@ "fileSavedToFilename": "{filename} に保存しました", "canvas": "キャンバス", "selection": "選択", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "{{shortcut}} を使用して単一の要素として貼り付けるか、\n既存のテキストエディタに貼り付け" }, "colors": { "ffffff": "ホワイト", diff --git a/src/locales/kab-KAB.json b/src/locales/kab-KAB.json index b0e64fccc..f2763b0f9 100644 --- a/src/locales/kab-KAB.json +++ b/src/locales/kab-KAB.json @@ -201,7 +201,9 @@ "svgImageInsertError": "D awezɣi tugra n tugna SVG. Acraḍ SVG yettban-d d armeɣtu.", "invalidSVGString": "SVG armeɣtu.", "cannotResolveCollabServer": "Ulamek tuqqna s aqeddac n umyalel. Ma ulac uɣilif ales asali n usebter sakin eɛreḍ tikkelt-nniḍen.", - "importLibraryError": "Ur d-ssalay ara tamkarḍit" + "importLibraryError": "Ur d-ssalay ara tamkarḍit", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Tafrayt", diff --git a/src/locales/kk-KZ.json b/src/locales/kk-KZ.json index 9a848d935..a9601b8b1 100644 --- a/src/locales/kk-KZ.json +++ b/src/locales/kk-KZ.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "", diff --git a/src/locales/ko-KR.json b/src/locales/ko-KR.json index 7fb133f78..575ff41b1 100644 --- a/src/locales/ko-KR.json +++ b/src/locales/ko-KR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "SVG 이미지를 삽입하지 못했습니다. SVG 문법이 유효하지 않은 것 같습니다.", "invalidSVGString": "유효하지 않은 SVG입니다.", "cannotResolveCollabServer": "협업 서버에 접속하는데 실패했습니다. 페이지를 새로고침하고 다시 시도해보세요.", - "importLibraryError": "라이브러리를 불러오지 못했습니다." + "importLibraryError": "라이브러리를 불러오지 못했습니다.", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "선택", diff --git a/src/locales/ku-TR.json b/src/locales/ku-TR.json index 69ab5e101..17180e8e9 100644 --- a/src/locales/ku-TR.json +++ b/src/locales/ku-TR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "نەیتوانی وێنەی SVG داخڵ بکات. نیشانەی ئێس ڤی جی نادروست دیارە.", "invalidSVGString": "ئێس ڤی جی نادروستە.", "cannotResolveCollabServer": "ناتوانێت پەیوەندی بکات بە سێرڤەری کۆلاب. تکایە لاپەڕەکە دووبارە باربکەوە و دووبارە هەوڵ بدەوە.", - "importLibraryError": "نەیتوانی کتێبخانە بار بکات" + "importLibraryError": "نەیتوانی کتێبخانە بار بکات", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "دەستنیشانکردن", diff --git a/src/locales/lt-LT.json b/src/locales/lt-LT.json index a9e06e1d3..24768875f 100644 --- a/src/locales/lt-LT.json +++ b/src/locales/lt-LT.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Nepavyko įtraukti SVG paveiksliuko. Panašu, jog SVG yra nevalidus.", "invalidSVGString": "Nevalidus SVG.", "cannotResolveCollabServer": "Nepavyko prisijungti prie serverio bendradarbiavimui. Perkrauk puslapį ir pabandyk prisijungti dar kartą.", - "importLibraryError": "Nepavyko įkelti bibliotekos" + "importLibraryError": "Nepavyko įkelti bibliotekos", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Žymėjimas", diff --git a/src/locales/lv-LV.json b/src/locales/lv-LV.json index 40ba383b1..ee98e9adb 100644 --- a/src/locales/lv-LV.json +++ b/src/locales/lv-LV.json @@ -1,7 +1,7 @@ { "labels": { "paste": "Ielīmēt", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "Ielīmēt kā vienkāršu tekstu", "pasteCharts": "Ielīmēt grafikus", "selectAll": "Atlasīt visu", "multiSelect": "Pievienot elementu atlasei", @@ -201,7 +201,9 @@ "svgImageInsertError": "Nevarēja ievietot SVG attēlu. Šķiet, ka SVG marķējums nav derīgs.", "invalidSVGString": "Nederīgs SVG.", "cannotResolveCollabServer": "Nevarēja savienoties ar sadarbošanās serveri. Lūdzu, pārlādējiet lapu un mēģiniet vēlreiz.", - "importLibraryError": "Nevarēja ielādēt bibliotēku" + "importLibraryError": "Nevarēja ielādēt bibliotēku", + "collabSaveFailed": "Darbs nav saglabāts datubāzē. Ja problēma turpinās, saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu.", + "collabSaveFailed_sizeExceeded": "Darbs nav saglabāts datubāzē, šķiet, ka tāfele ir pārāk liela. Saglabājiet datni lokālajā krātuvē, lai nodrošinātos pret darba pazaudēšanu." }, "toolBar": { "selection": "Atlase", @@ -236,7 +238,7 @@ "resize": "Kad maināt izmēru, varat ierobežot proporcijas, turot nospiestu SHIFT,\nvai arī ALT, lai mainītu izmēru ap centru", "resizeImage": "Varat brīvi mainīt izmēru, turot nospiestu SHIFT;\nturiet nospiestu ALT, lai mainītu izmēru ap centru", "rotate": "Rotējot varat ierobežot leņķi, turot nospiestu SHIFT", - "lineEditor_info": "", + "lineEditor_info": "Turiet CtrlOrCmd un dubultklikšķiniet, vai spiediet CtrlOrCmd + Enter, lai rediģētu punktus", "lineEditor_pointSelected": "Spiediet dzēšanas taustiņu, lai noņemtu punktus, – CtrlOrCmd+D, lai to kopētu, vai velciet, lai pārvietotu", "lineEditor_nothingSelected": "Atlasiet punktu, lai labotu (turiet nospiestu SHIFT, lai atlasītu vairākus),\nvai turiet Alt un clikšķiniet, lai pievienotu jaunus punktus", "placeImage": "Klikšķiniet, lai novietotu attēlu, vai spiediet un velciet, lai iestatītu tā izmēru", @@ -312,8 +314,8 @@ "zoomToFit": "Iestatīt mērogu, kas iekļauj visus elementus", "zoomToSelection": "Iestatīt mērogu, lai rādītu atlasi", "toggleElementLock": "Fiksēt/atbrīvot atlasīto", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "Pārvietot lapu augšup/lejup", + "movePageLeftRight": "Pārvietot lapu pa labi/kreisi" }, "clearCanvasDialog": { "title": "Notīrīt tāfeli" @@ -395,7 +397,7 @@ "fileSavedToFilename": "Saglabāts kā {filename}", "canvas": "tāfeli", "selection": "atlasi", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Izmantojiet {{shortcut}}, lai ielīmētu kā jaunu elementu, vai ielīmētu esošā teksta lauciņā" }, "colors": { "ffffff": "Balts", diff --git a/src/locales/mr-IN.json b/src/locales/mr-IN.json index 5749cbee1..07576dfd3 100644 --- a/src/locales/mr-IN.json +++ b/src/locales/mr-IN.json @@ -1,7 +1,7 @@ { "labels": { "paste": "चिटकवा", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "साधा मजकूर च्या रुपात पेस्ट करा", "pasteCharts": "चार्ट चिकटवा", "selectAll": "समस्त निवडा", "multiSelect": "निवडित तत्व जोडा", @@ -201,7 +201,9 @@ "svgImageInsertError": "एस-वी-जी प्रतिमा आत घालवू शकलो नाही. एस-वी-जी-मार्क-अप यंत्र अयोग्य आहे.", "invalidSVGString": "अयोग्य एस-वी-जी.", "cannotResolveCollabServer": "कॉलेब-सर्वर हे पोहोचत नाही आहे. पान परत लोड करायचा प्रयत्न करावे.", - "importLibraryError": "संग्रह प्रतिस्थापित नाही करता आला" + "importLibraryError": "संग्रह प्रतिस्थापित नाही करता आला", + "collabSaveFailed": "काही कारणा निमित्त आतल्या डेटाबेसमध्ये जतन करू शकत नाही। समस्या तशिस राहिल्यास, तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही तुमची फाइल स्थानिक जतन करावी.", + "collabSaveFailed_sizeExceeded": "लगता है कि पृष्ठ तल काफ़ी बड़ा है, इस्कारण अंदरूनी डेटाबेस में सहेजा नहीं जा सका। किये काम को खोने न देने के लिये अपनी फ़ाइल को स्थानीय रूप से सहेजे।\n\nबॅकएंड डेटाबेसमध्ये जतन करू शकत नाही, कॅनव्हास खूप मोठा असल्याचे दिसते. तुम्ही तुमचे काम गमावणार नाही याची खात्री करण्यासाठी तुम्ही फाइल स्थानिक पातळीवर जतन करावी." }, "toolBar": { "selection": "निवड", @@ -236,7 +238,7 @@ "resize": "आकार छोटा मोठा करताना SHIFT धरून तुम्ही प्रमाण मर्यादित करू शकता, \nकेंद्रापासून आकार छोटा मोठा करण्यासाठी ALT धरून ठेवा", "resizeImage": "SHIFT धरून तुम्ही मुक्तपणे आकार मोठा छोटा करु शकता,\nकेंद्रापासून आकार मोठा छोटा करण्यासाठी ALT धरून ठेवा", "rotate": "फिरवत असताना शिफ्ट धरून तुम्ही कोन मर्यादित करू शकता", - "lineEditor_info": "", + "lineEditor_info": "पॉइंट संपादित करण्यासाठी CtrlOrCmd दाबून ठेवुन डबल-क्लिक करा किंवा CtrlOrCmd + Enter बरोबर दाबा", "lineEditor_pointSelected": "बिंदु (एक किव्हा अनेक) काढ़ण्या साठी डिलीट की दाबा,\nCtrlOrCmd बरोबार D प्रति साठी,\nकिव्हा ड्रेग हलवण्या साठी", "lineEditor_nothingSelected": "संपादित करण्यासाठी एक बिंदू निवडा (अनेक निवडण्यासाठी SHIFT धरून ठेवा),\nकिंवा Alt धरून ठेवा आणि नवीन बिंदू जोडण्यासाठी क्लिक करा", "placeImage": "प्रतिमा ठेवण्यासाठी क्लिक करा, किंवा त्याचा आकार बदलण्या साठी क्लिक करा आणि ड्रॅग करा", @@ -395,7 +397,7 @@ "fileSavedToFilename": "{filename} मधे जतन झाली", "canvas": "पटल", "selection": "निवड", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "एक घटक म्हणून चिपकावण्या साठी {{shortcut}} वापरा,\nकिंवा विद्यमान मजकूर संपादकात चिपकवा" }, "colors": { "ffffff": "पांढरा", diff --git a/src/locales/my-MM.json b/src/locales/my-MM.json index 0614a3f41..c165074a0 100644 --- a/src/locales/my-MM.json +++ b/src/locales/my-MM.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "ရွေးချယ်", diff --git a/src/locales/nb-NO.json b/src/locales/nb-NO.json index c391ddd6e..8fe2f15dc 100644 --- a/src/locales/nb-NO.json +++ b/src/locales/nb-NO.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Kunne ikke sette inn SVG-bilde. SVG-koden ser ugyldig ut.", "invalidSVGString": "Ugyldig SVG.", "cannotResolveCollabServer": "Kunne ikke koble til samarbeidsserveren. Vennligst oppdater siden og prøv på nytt.", - "importLibraryError": "Kunne ikke laste bibliotek" + "importLibraryError": "Kunne ikke laste bibliotek", + "collabSaveFailed": "Kan ikke lagre i backend-databasen. Hvis problemer vedvarer, bør du lagre filen lokalt for å sikre at du ikke mister arbeidet.", + "collabSaveFailed_sizeExceeded": "Kunne ikke lagre til backend-databasen, lerretet ser ut til å være for stort. Du bør lagre filen lokalt for å sikre at du ikke mister arbeidet ditt." }, "toolBar": { "selection": "Velg", diff --git a/src/locales/nl-NL.json b/src/locales/nl-NL.json index a29ae81ab..afdbbc73c 100644 --- a/src/locales/nl-NL.json +++ b/src/locales/nl-NL.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Kon geen SVG-afbeelding invoegen. De SVG-opmaak ziet er niet geldig uit.", "invalidSVGString": "Ongeldige SVG.", "cannotResolveCollabServer": "Kan geen verbinding maken met de collab server. Herlaad de pagina en probeer het opnieuw.", - "importLibraryError": "Kon bibliotheek niet laden" + "importLibraryError": "Kon bibliotheek niet laden", + "collabSaveFailed": "Kan niet opslaan in de backend database. Als de problemen blijven bestaan, moet u het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest.", + "collabSaveFailed_sizeExceeded": "Kan de backend database niet opslaan, het canvas lijkt te groot te zijn. U moet het bestand lokaal opslaan om ervoor te zorgen dat u uw werk niet verliest." }, "toolBar": { "selection": "Selectie", @@ -236,7 +238,7 @@ "resize": "Houd tijdens het vergroten SHIFT ingedrukt om verhoudingen te behouden,\ngebruik ALT om vanuit het midden te vergroten/verkleinen", "resizeImage": "", "rotate": "Je kan hoeken beperken door SHIFT ingedrukt te houden wanneer je draait", - "lineEditor_info": "", + "lineEditor_info": "Houd CtrlOrCmd en Dubbelklik of druk op CtrlOrCmd + Enter om punten te bewerken", "lineEditor_pointSelected": "", "lineEditor_nothingSelected": "", "placeImage": "", @@ -395,7 +397,7 @@ "fileSavedToFilename": "Opgeslagen als {filename}", "canvas": "canvas", "selection": "selectie", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Gebruik {{shortcut}} om te plakken als een enkel element,\nof plak in een bestaande teksteditor" }, "colors": { "ffffff": "Wit", diff --git a/src/locales/nn-NO.json b/src/locales/nn-NO.json index ecc340041..0375954ec 100644 --- a/src/locales/nn-NO.json +++ b/src/locales/nn-NO.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Kunne ikkje sette inn SVG-biletet. SVG-koden ser ugyldig ut.", "invalidSVGString": "Ugyldig SVG.", "cannotResolveCollabServer": "Kunne ikkje kople til samarbeidsserveren. Ver vennleg å oppdatere inn sida og prøv på nytt.", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Vel", diff --git a/src/locales/oc-FR.json b/src/locales/oc-FR.json index 05474c908..f04f01725 100644 --- a/src/locales/oc-FR.json +++ b/src/locales/oc-FR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Insercion d’imatge SVG impossibla. Las balisas SVG semblan invalidas.", "invalidSVGString": "SVG invalid.", "cannotResolveCollabServer": "Connexion impossibla al servidor collab. Mercés de recargar la pagina e tornar ensajar.", - "importLibraryError": "Impossible de cargar la bibliotèca" + "importLibraryError": "Impossible de cargar la bibliotèca", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Seleccion", diff --git a/src/locales/pa-IN.json b/src/locales/pa-IN.json index 0972bcfdd..94f5c1fb1 100644 --- a/src/locales/pa-IN.json +++ b/src/locales/pa-IN.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "SVG ਨਜਾਇਜ਼ ਹੈ।", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "ਚੋਣਕਾਰ", diff --git a/src/locales/percentages.json b/src/locales/percentages.json index 2d92beb65..40b23ecd6 100644 --- a/src/locales/percentages.json +++ b/src/locales/percentages.json @@ -1,52 +1,52 @@ { - "ar-SA": 87, + "ar-SA": 86, "bg-BG": 55, - "bn-BD": 61, - "ca-ES": 95, - "cs-CZ": 76, + "bn-BD": 60, + "ca-ES": 94, + "cs-CZ": 75, "da-DK": 33, - "de-DE": 99, + "de-DE": 100, "el-GR": 95, "en": 100, "es-ES": 100, "eu-ES": 98, "fa-IR": 98, - "fi-FI": 94, - "fr-FR": 98, - "gl-ES": 98, + "fi-FI": 93, + "fr-FR": 100, + "gl-ES": 99, "he-IL": 91, - "hi-IN": 70, + "hi-IN": 71, "hu-HU": 90, - "id-ID": 100, - "it-IT": 100, - "ja-JP": 98, - "kab-KAB": 95, + "id-ID": 99, + "it-IT": 99, + "ja-JP": 100, + "kab-KAB": 94, "kk-KZ": 21, - "ko-KR": 96, + "ko-KR": 95, "ku-TR": 98, "lt-LT": 66, - "lv-LV": 98, - "mr-IN": 99, + "lv-LV": 99, + "mr-IN": 100, "my-MM": 42, "nb-NO": 100, "nl-NL": 91, "nn-NO": 91, "oc-FR": 98, - "pa-IN": 84, + "pa-IN": 83, "pl-PL": 85, - "pt-BR": 97, + "pt-BR": 100, "pt-PT": 98, "ro-RO": 100, "ru-RU": 100, "si-LK": 8, - "sk-SK": 100, + "sk-SK": 99, "sl-SI": 100, "sv-SE": 98, - "ta-IN": 94, - "tr-TR": 99, - "uk-UA": 98, + "ta-IN": 93, + "tr-TR": 98, + "uk-UA": 97, "vi-VN": 20, - "zh-CN": 98, + "zh-CN": 100, "zh-HK": 26, "zh-TW": 100 } diff --git a/src/locales/pl-PL.json b/src/locales/pl-PL.json index ae86d674f..fc2862e5d 100644 --- a/src/locales/pl-PL.json +++ b/src/locales/pl-PL.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Nie udało się wstawić obrazu SVG. Znacznik SVG wygląda na nieprawidłowy.", "invalidSVGString": "Nieprawidłowy SVG.", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Zaznaczenie", diff --git a/src/locales/pt-BR.json b/src/locales/pt-BR.json index 012c03137..343a59d78 100644 --- a/src/locales/pt-BR.json +++ b/src/locales/pt-BR.json @@ -1,7 +1,7 @@ { "labels": { "paste": "Colar", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "Colar como texto sem formatação", "pasteCharts": "Colar gráficos", "selectAll": "Selecionar tudo", "multiSelect": "Adicionar elemento à seleção", @@ -201,7 +201,9 @@ "svgImageInsertError": "Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.", "invalidSVGString": "SVG Inválido.", "cannotResolveCollabServer": "Não foi possível conectar-se ao servidor colaborativo. Por favor, recarregue a página e tente novamente.", - "importLibraryError": "Não foi possível carregar a biblioteca" + "importLibraryError": "Não foi possível carregar a biblioteca", + "collabSaveFailed": "Não foi possível salvar no banco de dados do servidor. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho.", + "collabSaveFailed_sizeExceeded": "Não foi possível salvar no banco de dados do servidor, a tela parece ser muito grande. Se os problemas persistirem, salve o arquivo localmente para garantir que não perca o seu trabalho." }, "toolBar": { "selection": "Seleção", @@ -215,7 +217,7 @@ "text": "Texto", "library": "Biblioteca", "lock": "Manter ativa a ferramenta selecionada após desenhar", - "penMode": "", + "penMode": "Modo caneta — impede o toque", "link": "Adicionar/Atualizar link para uma forma selecionada", "eraser": "Borracha" }, @@ -236,7 +238,7 @@ "resize": "Você pode restringir proporções segurando SHIFT enquanto redimensiona,\nsegure ALT para redimensionar do centro", "resizeImage": "Você pode redimensionar livremente segurando SHIFT,\nsegure ALT para redimensionar a partir do centro", "rotate": "Você pode restringir os ângulos segurando SHIFT enquanto gira", - "lineEditor_info": "", + "lineEditor_info": "Pressione CtrlOuCmd e duplo-clique ou pressione CtrlOuCmd + Enter para editar pontos", "lineEditor_pointSelected": "Pressione Delete para remover o(s) ponto(s),\nCtrl/Cmd+D para duplicar ou arraste para mover", "lineEditor_nothingSelected": "Selecione um ponto para editar (segure SHIFT para selecionar vários) ou segure Alt e clique para adicionar novos pontos", "placeImage": "Clique para colocar a imagem, ou clique e arraste para definir manualmente o seu tamanho", @@ -312,8 +314,8 @@ "zoomToFit": "Ampliar para encaixar todos os elementos", "zoomToSelection": "Ampliar a seleção", "toggleElementLock": "Bloquear/desbloquear seleção", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "Mover a página para cima/baixo", + "movePageLeftRight": "Mover a página para esquerda/direita" }, "clearCanvasDialog": { "title": "Limpar a tela" @@ -395,7 +397,7 @@ "fileSavedToFilename": "Salvo em {filename}", "canvas": "tela", "selection": "seleção", - "pasteAsSingleElement": "" + "pasteAsSingleElement": "Use {{shortcut}} para colar como um único elemento,\nou cole em um editor de texto já existente" }, "colors": { "ffffff": "Braco", @@ -446,9 +448,9 @@ }, "welcomeScreen": { "data": "Todos os dados são salvos localmente no seu navegador.", - "switchToPlusApp": "", - "menuHints": "", - "toolbarHints": "", - "helpHints": "" + "switchToPlusApp": "Você queria ir para o Excalidraw+ em vez disso?", + "menuHints": "Exportar, preferências, idiomas, ...", + "toolbarHints": "Escolha uma ferramenta & Comece a desenhar!", + "helpHints": "Atalhos & ajuda" } } diff --git a/src/locales/pt-PT.json b/src/locales/pt-PT.json index e99552fe1..f45d16935 100644 --- a/src/locales/pt-PT.json +++ b/src/locales/pt-PT.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Não foi possível inserir a imagem SVG. A marcação SVG parece inválida.", "invalidSVGString": "SVG inválido.", "cannotResolveCollabServer": "Não foi possível fazer a ligação ao servidor colaborativo. Por favor, volte a carregar a página e tente novamente.", - "importLibraryError": "Não foi possível carregar a biblioteca" + "importLibraryError": "Não foi possível carregar a biblioteca", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Seleção", diff --git a/src/locales/ro-RO.json b/src/locales/ro-RO.json index 037e914a3..43e817b96 100644 --- a/src/locales/ro-RO.json +++ b/src/locales/ro-RO.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Imaginea SVG nu a putut fi introdus. Marcajul SVG pare invalid.", "invalidSVGString": "SVG invalid.", "cannotResolveCollabServer": "Nu a putut fi realizată conexiunea la serverul de colaborare. Reîncarcă pagina și încearcă din nou.", - "importLibraryError": "Biblioteca nu a putut fi încărcată" + "importLibraryError": "Biblioteca nu a putut fi încărcată", + "collabSaveFailed": "Nu s-a putut salva în baza de date la nivel de server. Dacă problemele persistă, ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca.", + "collabSaveFailed_sizeExceeded": "Nu s-a putut salva în baza de date la nivel de server, întrucât se pare că pânza este prea mare. Ar trebui să salvezi fișierul la nivel local pentru a te asigura că nu îți pierzi munca." }, "toolBar": { "selection": "Selecție", diff --git a/src/locales/ru-RU.json b/src/locales/ru-RU.json index 38ee98440..cfc0b24ce 100644 --- a/src/locales/ru-RU.json +++ b/src/locales/ru-RU.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Не удалось вставить изображение SVG. Разметка SVG выглядит недействительной.", "invalidSVGString": "Некорректный SVG.", "cannotResolveCollabServer": "Не удалось подключиться к серверу совместного редактирования. Перезагрузите страницу и повторите попытку.", - "importLibraryError": "Не удалось загрузить библиотеку" + "importLibraryError": "Не удалось загрузить библиотеку", + "collabSaveFailed": "Не удалось сохранить в базу данных. Если проблема повторится, нужно будет сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу.", + "collabSaveFailed_sizeExceeded": "Не удалось сохранить в базу данных. Похоже, что холст слишком большой. Нужно сохранить файл локально, чтобы быть уверенным, что вы не потеряете вашу работу." }, "toolBar": { "selection": "Выделение области", diff --git a/src/locales/si-LK.json b/src/locales/si-LK.json index 4ce28109c..1dc54fddb 100644 --- a/src/locales/si-LK.json +++ b/src/locales/si-LK.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "", diff --git a/src/locales/sk-SK.json b/src/locales/sk-SK.json index e2a654463..30d3d8966 100644 --- a/src/locales/sk-SK.json +++ b/src/locales/sk-SK.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Nepodarilo sa vložiť SVG obrázok. SVG formát je pravdepodobne nevalidný.", "invalidSVGString": "Nevalidné SVG.", "cannotResolveCollabServer": "Nepodarilo sa pripojiť ku kolaboračnému serveru. Prosím obnovte stránku a skúste to znovu.", - "importLibraryError": "Nepodarilo sa načítať knižnicu" + "importLibraryError": "Nepodarilo sa načítať knižnicu", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Výber", diff --git a/src/locales/sl-SI.json b/src/locales/sl-SI.json index 6aa698dbb..0997d5d4b 100644 --- a/src/locales/sl-SI.json +++ b/src/locales/sl-SI.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Vstavljanje slike SVG ni uspelo. Oznake SVG so videti neveljavne.", "invalidSVGString": "Neveljaven SVG.", "cannotResolveCollabServer": "Povezave s strežnikom za sodelovanje ni bilo mogoče vzpostaviti. Ponovno naložite stran in poskusite znova.", - "importLibraryError": "Nalaganje knjižnice ni uspelo" + "importLibraryError": "Nalaganje knjižnice ni uspelo", + "collabSaveFailed": "Ni bilo mogoče shraniti v zaledno bazo podatkov. Če se težave nadaljujejo, shranite datoteko lokalno, da ne boste izgubili svojega dela.", + "collabSaveFailed_sizeExceeded": "Ni bilo mogoče shraniti v zaledno bazo podatkov, zdi se, da je platno preveliko. Datoteko shranite lokalno, da ne izgubite svojega dela." }, "toolBar": { "selection": "Izbor", diff --git a/src/locales/sv-SE.json b/src/locales/sv-SE.json index dda4e4b5e..a8c6ac63a 100644 --- a/src/locales/sv-SE.json +++ b/src/locales/sv-SE.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Kunde inte infoga SVG-bild. SVG-koden ser ogiltig ut.", "invalidSVGString": "Ogiltig SVG.", "cannotResolveCollabServer": "Det gick inte att ansluta till samarbets-servern. Ladda om sidan och försök igen.", - "importLibraryError": "Kunde inte ladda bibliotek" + "importLibraryError": "Kunde inte ladda bibliotek", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Markering", diff --git a/src/locales/ta-IN.json b/src/locales/ta-IN.json index 92ed0adb5..18d9e5f4d 100644 --- a/src/locales/ta-IN.json +++ b/src/locales/ta-IN.json @@ -201,7 +201,9 @@ "svgImageInsertError": "எஸ்விஜி படத்தைப் புகுத்தவியலா. எஸ்விஜியின் மார்க்அப் செல்லாததாக தெரிகிறது.", "invalidSVGString": "செல்லாத SVG.", "cannotResolveCollabServer": "", - "importLibraryError": "நூலகத்தை ஏற்ற முடியவில்லை" + "importLibraryError": "நூலகத்தை ஏற்ற முடியவில்லை", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "தெரிவு", diff --git a/src/locales/tr-TR.json b/src/locales/tr-TR.json index 48d1dc24d..294839f88 100644 --- a/src/locales/tr-TR.json +++ b/src/locales/tr-TR.json @@ -201,7 +201,9 @@ "svgImageInsertError": "SVG resmi eklenemedi. SVG işaretlemesi geçersiz görünüyor.", "invalidSVGString": "Geçersiz SVG.", "cannotResolveCollabServer": "İş birliği sunucusuna bağlanılamıyor. Lütfen sayfayı yenileyip tekrar deneyin.", - "importLibraryError": "Kütüphane yüklenemedi" + "importLibraryError": "Kütüphane yüklenemedi", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Seçme", diff --git a/src/locales/uk-UA.json b/src/locales/uk-UA.json index bd04b9aae..f6e559fb7 100644 --- a/src/locales/uk-UA.json +++ b/src/locales/uk-UA.json @@ -201,7 +201,9 @@ "svgImageInsertError": "Не вдалося вставити SVG-зображення. Помилка розмітки SVG.", "invalidSVGString": "Недійсний SVG.", "cannotResolveCollabServer": "Не вдалося приєднатися до сервера. Перезавантажте сторінку та повторіть спробу.", - "importLibraryError": "Не вдалося завантажити бібліотеку" + "importLibraryError": "Не вдалося завантажити бібліотеку", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "Виділення", diff --git a/src/locales/vi-VN.json b/src/locales/vi-VN.json index d8049ce77..21c52a9a6 100644 --- a/src/locales/vi-VN.json +++ b/src/locales/vi-VN.json @@ -1,7 +1,7 @@ { "labels": { "paste": "Dán", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "Dán kiểu văn bản thuần", "pasteCharts": "Dán biểu đồ", "selectAll": "Chọn tất cả", "multiSelect": "Thêm mới vào Select", @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "", diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json index 20a10765a..d58e475ad 100644 --- a/src/locales/zh-CN.json +++ b/src/locales/zh-CN.json @@ -1,7 +1,7 @@ { "labels": { "paste": "粘贴", - "pasteAsPlaintext": "", + "pasteAsPlaintext": "粘贴为纯文本", "pasteCharts": "粘贴图表", "selectAll": "全部选中", "multiSelect": "添加元素到选区", @@ -201,7 +201,9 @@ "svgImageInsertError": "无法插入 SVG 图像。该 SVG 标记似乎是无效的。", "invalidSVGString": "无效的 SVG。", "cannotResolveCollabServer": "无法连接到实时协作服务器。请重新加载页面并重试。", - "importLibraryError": "无法加载素材库" + "importLibraryError": "无法加载素材库", + "collabSaveFailed": "无法保存到后端数据库。如果问题持续存在,您应该保存文件到本地,以确保您的工作不会丢失。", + "collabSaveFailed_sizeExceeded": "无法保存到后端数据库,画布似乎过大。您应该保存文件到本地,以确保您的工作不会丢失。" }, "toolBar": { "selection": "选择", @@ -236,7 +238,7 @@ "resize": "您可以按住SHIFT来限制比例大小,\n按住ALT来调整中心大小", "resizeImage": "按住SHIFT可以自由缩放,\n按住ALT可以从中间缩放", "rotate": "旋转时可以按住 Shift 来约束角度", - "lineEditor_info": "", + "lineEditor_info": "按住 CtrlOrCmd 并双击或按 CtrlOrmd + Enter 来编辑点", "lineEditor_pointSelected": "按下 Delete 移除点,Ctrl 或 Cmd+D 以复制,拖动以移动", "lineEditor_nothingSelected": "选择要编辑的点 (按住 SHIFT 选择多个),\n或按住 Alt 并点击以添加新点", "placeImage": "点击放置图像,或者点击并拖动以手动设置图像大小", @@ -312,8 +314,8 @@ "zoomToFit": "缩放以适应所有元素", "zoomToSelection": "缩放到选区", "toggleElementLock": "锁定/解锁", - "movePageUpDown": "", - "movePageLeftRight": "" + "movePageUpDown": "上下移动页面", + "movePageLeftRight": "左右移动页面" }, "clearCanvasDialog": { "title": "清除画布" @@ -394,8 +396,8 @@ "fileSaved": "文件已保存。", "fileSavedToFilename": "保存到 {filename}", "canvas": "画布", - "selection": "选择项", - "pasteAsSingleElement": "" + "selection": "所选项", + "pasteAsSingleElement": "使用 {{shortcut}} 粘贴为单个元素,\n或粘贴到现有的文本编辑器里" }, "colors": { "ffffff": "白", diff --git a/src/locales/zh-HK.json b/src/locales/zh-HK.json index 84245a508..c2e982b03 100644 --- a/src/locales/zh-HK.json +++ b/src/locales/zh-HK.json @@ -201,7 +201,9 @@ "svgImageInsertError": "", "invalidSVGString": "", "cannotResolveCollabServer": "", - "importLibraryError": "" + "importLibraryError": "", + "collabSaveFailed": "", + "collabSaveFailed_sizeExceeded": "" }, "toolBar": { "selection": "", diff --git a/src/locales/zh-TW.json b/src/locales/zh-TW.json index 3ba59d5c7..a4c491d42 100644 --- a/src/locales/zh-TW.json +++ b/src/locales/zh-TW.json @@ -201,7 +201,9 @@ "svgImageInsertError": "無法插入 SVG 圖片。此 SVG 檔案有問題。", "invalidSVGString": "無效的 SVG。", "cannotResolveCollabServer": "無法連結至 collab 伺服器。請重新整理後再試一次。", - "importLibraryError": "無法載入資料庫" + "importLibraryError": "無法載入資料庫", + "collabSaveFailed": "無法儲存至後端資料庫。若此問題持續發生,請將檔案儲存於本機以確保資料不會遺失。", + "collabSaveFailed_sizeExceeded": "無法儲存至後端資料庫,可能的原因為畫布尺寸過大。請將檔案儲存於本機以確保資料不會遺失。" }, "toolBar": { "selection": "選取", From 14d02dcaea907a110156642943aa45668aa9f497 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:25:20 +0530 Subject: [PATCH 2/9] build(deps): bump json5 from 2.2.1 to 2.2.3 in /src/packages/excalidraw (#6062) Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/packages/excalidraw/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/excalidraw/yarn.lock b/src/packages/excalidraw/yarn.lock index ecd10278f..9a9563479 100644 --- a/src/packages/excalidraw/yarn.lock +++ b/src/packages/excalidraw/yarn.lock @@ -2672,9 +2672,9 @@ json-schema-traverse@^1.0.0: integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@^2.1.2, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kind-of@^6.0.2: version "6.0.3" From 1255ca2e84f99fc7b9aa242cb436bd0ba91290d3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:25:35 +0530 Subject: [PATCH 3/9] build(deps): bump json5 from 2.2.1 to 2.2.3 in /src/packages/utils (#6061) Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/packages/utils/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/utils/yarn.lock b/src/packages/utils/yarn.lock index fd2043a0f..483399b2f 100644 --- a/src/packages/utils/yarn.lock +++ b/src/packages/utils/yarn.lock @@ -1895,9 +1895,9 @@ json-schema-traverse@^0.4.1: integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== json5@^2.1.2, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== kind-of@^6.0.2: version "6.0.3" From bed8093e47b2c81df43b3334648954f27b044523 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:25:48 +0530 Subject: [PATCH 4/9] build(deps): bump json5 from 2.2.1 to 2.2.3 in /dev-docs (#6060) Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dev-docs/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dev-docs/yarn.lock b/dev-docs/yarn.lock index 1cf4b7358..9b9337c9c 100644 --- a/dev-docs/yarn.lock +++ b/dev-docs/yarn.lock @@ -4692,9 +4692,9 @@ json-schema-traverse@^1.0.0: integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== json5@^2.1.2, json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== jsonfile@^6.0.1: version "6.1.0" From cbe0d34f1a4982f76b849c194baec1714d0cb488 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:26:23 +0530 Subject: [PATCH 5/9] build(deps): bump decode-uri-component from 0.2.0 to 0.2.2 (#5963) Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2. - [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases) - [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2) --- updated-dependencies: - dependency-name: decode-uri-component dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2bc160d69..4829be990 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4473,9 +4473,9 @@ decimal.js@^10.2.1: integrity sha512-ic1yEvwT6GuvaYwBLLY6/aFFgjZdySKTE8en/fkU3QICTmRtgtSlFn0u0BXN06InZwtfCelR7j8LRiDI/02iGA== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og== + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== dedent@^0.7.0: version "0.7.0" From e3249f930c7b4a5e2f0fedceb4befa982ff05f8a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 06:59:44 +0000 Subject: [PATCH 6/9] build(deps): bump json5 from 1.0.1 to 1.0.2 (#6076) Bumps [json5](https://github.com/json5/json5) from 1.0.1 to 1.0.2. - [Release notes](https://github.com/json5/json5/releases) - [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md) - [Commits](https://github.com/json5/json5/compare/v1.0.1...v1.0.2) --- updated-dependencies: - dependency-name: json5 dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4829be990..ba54285b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7176,9 +7176,9 @@ json-stable-stringify-without-jsonify@^1.0.1: integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" From 72784f9d290a603cbb63f5006de4ba020c7e67b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:30:43 +0530 Subject: [PATCH 7/9] build(deps): bump loader-utils from 2.0.3 to 2.0.4 (#5905) Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index ba54285b2..d06d613d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7318,16 +7318,7 @@ loader-runner@^4.2.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== -loader-utils@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" - integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== - dependencies: - big.js "^5.2.2" - emojis-list "^3.0.0" - json5 "^2.1.2" - -loader-utils@^2.0.3: +loader-utils@^2.0.0, loader-utils@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== From 9803a85381f1b2e2262c7440f6e99cb09481caf1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 12:31:06 +0530 Subject: [PATCH 8/9] build(deps): bump loader-utils from 2.0.3 to 2.0.4 in /src/packages/excalidraw (#5892) build(deps): bump loader-utils in /src/packages/excalidraw Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/webpack/loader-utils/releases) - [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.4/CHANGELOG.md) - [Commits](https://github.com/webpack/loader-utils/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: loader-utils dependency-type: indirect ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- src/packages/excalidraw/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/packages/excalidraw/yarn.lock b/src/packages/excalidraw/yarn.lock index 9a9563479..09838174b 100644 --- a/src/packages/excalidraw/yarn.lock +++ b/src/packages/excalidraw/yarn.lock @@ -2697,9 +2697,9 @@ loader-runner@^4.2.0: integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.3.tgz#d4b15b8504c63d1fc3f2ade52d41bc8459d6ede1" - integrity sha512-THWqIsn8QRnvLl0shHYVBN9syumU8pYWEHPTmkiVGd+7K5eFNVSY6AJhRvgGF70gg1Dz+l/k8WicvFCxdEs60A== + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== dependencies: big.js "^5.2.2" emojis-list "^3.0.0" From 40d53d9231a7d814a8e9d672626f972147a50986 Mon Sep 17 00:00:00 2001 From: David Luzar Date: Fri, 6 Jan 2023 14:32:55 +0100 Subject: [PATCH 9/9] fix: stale appState of MainMenu defaultItems rendered from Actions (#6074) --- src/actions/actionBoundText.tsx | 4 +- src/actions/actionCanvas.tsx | 48 ++-- src/actions/actionClipboard.tsx | 12 +- src/actions/actionExport.tsx | 39 ++-- src/actions/actionFlip.ts | 4 +- src/actions/actionGroup.tsx | 6 +- src/actions/actionLinearEditor.ts | 2 +- src/actions/actionMenu.tsx | 18 +- src/actions/actionToggleGridMode.tsx | 2 +- src/actions/actionToggleViewMode.tsx | 2 +- src/actions/actionToggleZenMode.tsx | 2 +- src/actions/manager.tsx | 17 +- src/actions/types.ts | 6 +- src/components/ActiveFile.tsx | 23 -- src/components/App.tsx | 6 +- src/components/ClearCanvas.tsx | 41 ---- src/components/CollabButton.tsx | 40 +--- src/components/ContextMenu.tsx | 4 +- src/components/LayerUI.tsx | 3 +- src/components/footer/Footer.tsx | 7 +- .../DefaultItems.scss} | 0 src/components/mainMenu/DefaultItems.tsx | 141 +++++++++-- src/element/Hyperlink.tsx | 2 +- .../__snapshots__/contextmenu.test.tsx.snap | 154 ++++++------- .../__snapshots__/excalidraw.test.tsx.snap | 218 +++++++++--------- src/tests/packages/excalidraw.test.tsx | 93 +++++--- 26 files changed, 463 insertions(+), 431 deletions(-) delete mode 100644 src/components/ActiveFile.tsx delete mode 100644 src/components/ClearCanvas.tsx rename src/components/{ActiveFile.scss => mainMenu/DefaultItems.scss} (100%) diff --git a/src/actions/actionBoundText.tsx b/src/actions/actionBoundText.tsx index 812e10b3c..ed6efe971 100644 --- a/src/actions/actionBoundText.tsx +++ b/src/actions/actionBoundText.tsx @@ -26,7 +26,7 @@ export const actionUnbindText = register({ name: "unbindText", contextItemLabel: "labels.unbindText", trackEvent: { category: "element" }, - contextItemPredicate: (elements, appState) => { + predicate: (elements, appState) => { const selectedElements = getSelectedElements(elements, appState); return selectedElements.some((element) => hasBoundTextElement(element)); }, @@ -76,7 +76,7 @@ export const actionBindText = register({ name: "bindText", contextItemLabel: "labels.bindText", trackEvent: { category: "element" }, - contextItemPredicate: (elements, appState) => { + predicate: (elements, appState) => { const selectedElements = getSelectedElements(elements, appState); if (selectedElements.length === 2) { diff --git a/src/actions/actionCanvas.tsx b/src/actions/actionCanvas.tsx index acfee4724..259b43e0c 100644 --- a/src/actions/actionCanvas.tsx +++ b/src/actions/actionCanvas.tsx @@ -1,11 +1,5 @@ import { ColorPicker } from "../components/ColorPicker"; -import { - eraser, - MoonIcon, - SunIcon, - ZoomInIcon, - ZoomOutIcon, -} from "../components/icons"; +import { eraser, ZoomInIcon, ZoomOutIcon } from "../components/icons"; import { ToolButton } from "../components/ToolButton"; import { MIN_ZOOM, THEME, ZOOM_STEP } from "../constants"; import { getCommonBounds, getNonDeletedElements } from "../element"; @@ -21,14 +15,17 @@ import { register } from "./register"; import { Tooltip } from "../components/Tooltip"; import { newElementWith } from "../element/mutateElement"; import { getDefaultAppState, isEraserActive } from "../appState"; -import ClearCanvas from "../components/ClearCanvas"; import clsx from "clsx"; -import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem"; -import { getShortcutFromShortcutName } from "./shortcuts"; export const actionChangeViewBackgroundColor = register({ name: "changeViewBackgroundColor", trackEvent: false, + predicate: (elements, appState, props, app) => { + return ( + !!app.props.UIOptions.canvasActions.changeViewBackgroundColor && + !appState.viewModeEnabled + ); + }, perform: (_, appState, value) => { return { appState: { ...appState, ...value }, @@ -36,6 +33,7 @@ export const actionChangeViewBackgroundColor = register({ }; }, PanelComponent: ({ elements, appState, updateData }) => { + // FIXME move me to src/components/mainMenu/DefaultItems.tsx return (
{ + return ( + !!app.props.UIOptions.canvasActions.clearCanvas && + !appState.viewModeEnabled + ); + }, perform: (elements, appState, _, app) => { app.imageCache.clear(); return { @@ -84,8 +88,6 @@ export const actionClearCanvas = register({ commitToHistory: true, }; }, - - PanelComponent: ({ updateData }) => , }); export const actionZoomIn = register({ @@ -298,26 +300,10 @@ export const actionToggleTheme = register({ commitToHistory: false, }; }, - PanelComponent: ({ appState, updateData }) => ( - { - updateData(appState.theme === THEME.LIGHT ? THEME.DARK : THEME.LIGHT); - }} - icon={appState.theme === "dark" ? SunIcon : MoonIcon} - dataTestId="toggle-dark-mode" - shortcut={getShortcutFromShortcutName("toggleTheme")} - ariaLabel={ - appState.theme === "dark" - ? t("buttons.lightMode") - : t("buttons.darkMode") - } - > - {appState.theme === "dark" - ? t("buttons.lightMode") - : t("buttons.darkMode")} - - ), keyTest: (event) => event.altKey && event.shiftKey && event.code === CODES.D, + predicate: (elements, appState, props, app) => { + return !!app.props.UIOptions.canvasActions.toggleTheme; + }, }); export const actionErase = register({ diff --git a/src/actions/actionClipboard.tsx b/src/actions/actionClipboard.tsx index 5be391d35..661f65f38 100644 --- a/src/actions/actionClipboard.tsx +++ b/src/actions/actionClipboard.tsx @@ -24,7 +24,7 @@ export const actionCopy = register({ commitToHistory: false, }; }, - contextItemPredicate: (elements, appState, appProps, app) => { + predicate: (elements, appState, appProps, app) => { return app.device.isMobile && !!navigator.clipboard; }, contextItemLabel: "labels.copy", @@ -41,7 +41,7 @@ export const actionPaste = register({ commitToHistory: false, }; }, - contextItemPredicate: (elements, appState, appProps, app) => { + predicate: (elements, appState, appProps, app) => { return app.device.isMobile && !!navigator.clipboard; }, contextItemLabel: "labels.paste", @@ -56,7 +56,7 @@ export const actionCut = register({ actionCopy.perform(elements, appState, data, app); return actionDeleteSelected.perform(elements, appState); }, - contextItemPredicate: (elements, appState, appProps, app) => { + predicate: (elements, appState, appProps, app) => { return app.device.isMobile && !!navigator.clipboard; }, contextItemLabel: "labels.cut", @@ -101,7 +101,7 @@ export const actionCopyAsSvg = register({ }; } }, - contextItemPredicate: (elements) => { + predicate: (elements) => { return probablySupportsClipboardWriteText && elements.length > 0; }, contextItemLabel: "labels.copyAsSvg", @@ -158,7 +158,7 @@ export const actionCopyAsPng = register({ }; } }, - contextItemPredicate: (elements) => { + predicate: (elements) => { return probablySupportsClipboardBlob && elements.length > 0; }, contextItemLabel: "labels.copyAsPng", @@ -188,7 +188,7 @@ export const copyText = register({ commitToHistory: false, }; }, - contextItemPredicate: (elements, appState) => { + predicate: (elements, appState) => { return ( probablySupportsClipboardWriteText && getSelectedElements(elements, appState, true).some(isTextElement) diff --git a/src/actions/actionExport.tsx b/src/actions/actionExport.tsx index e0f6c95fa..f142eac87 100644 --- a/src/actions/actionExport.tsx +++ b/src/actions/actionExport.tsx @@ -1,7 +1,6 @@ -import { LoadIcon, questionCircle, saveAs } from "../components/icons"; +import { questionCircle, saveAs } from "../components/icons"; import { ProjectName } from "../components/ProjectName"; import { ToolButton } from "../components/ToolButton"; -import "../components/ToolIcon.scss"; import { Tooltip } from "../components/Tooltip"; import { DarkModeToggle } from "../components/DarkModeToggle"; import { loadFromJSON, saveAsJSON } from "../data"; @@ -15,12 +14,11 @@ import { getExportSize } from "../scene/export"; import { DEFAULT_EXPORT_PADDING, EXPORT_SCALES, THEME } from "../constants"; import { getSelectedElements, isSomeElementSelected } from "../scene"; import { getNonDeletedElements } from "../element"; -import { ActiveFile } from "../components/ActiveFile"; import { isImageFileHandle } from "../data/blob"; import { nativeFileSystemSupported } from "../data/filesystem"; import { Theme } from "../element/types"; -import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem"; -import { getShortcutFromShortcutName } from "./shortcuts"; + +import "../components/ToolIcon.scss"; export const actionChangeProjectName = register({ name: "changeProjectName", @@ -133,6 +131,13 @@ export const actionChangeExportEmbedScene = register({ export const actionSaveToActiveFile = register({ name: "saveToActiveFile", trackEvent: { category: "export" }, + predicate: (elements, appState, props, app) => { + return ( + !!app.props.UIOptions.canvasActions.saveToActiveFile && + !!appState.fileHandle && + !appState.viewModeEnabled + ); + }, perform: async (elements, appState, value, app) => { const fileHandleExists = !!appState.fileHandle; @@ -169,12 +174,6 @@ export const actionSaveToActiveFile = register({ }, keyTest: (event) => event.key === KEYS.S && event[KEYS.CTRL_OR_CMD] && !event.shiftKey, - PanelComponent: ({ updateData, appState }) => ( - updateData(null)} - fileName={appState.fileHandle?.name} - /> - ), }); export const actionSaveFileToDisk = register({ @@ -220,6 +219,11 @@ export const actionSaveFileToDisk = register({ export const actionLoadScene = register({ name: "loadScene", trackEvent: { category: "export" }, + predicate: (elements, appState, props, app) => { + return ( + !!app.props.UIOptions.canvasActions.loadScene && !appState.viewModeEnabled + ); + }, perform: async (elements, appState, _, app) => { try { const { @@ -247,19 +251,6 @@ export const actionLoadScene = register({ } }, keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.O, - PanelComponent: ({ updateData }) => { - return ( - - {t("buttons.load")} - - ); - }, }); export const actionExportWithDarkMode = register({ diff --git a/src/actions/actionFlip.ts b/src/actions/actionFlip.ts index 31aefdc05..ff6bfe4b7 100644 --- a/src/actions/actionFlip.ts +++ b/src/actions/actionFlip.ts @@ -50,7 +50,7 @@ export const actionFlipHorizontal = register({ }, keyTest: (event) => event.shiftKey && event.code === "KeyH", contextItemLabel: "labels.flipHorizontal", - contextItemPredicate: (elements, appState) => + predicate: (elements, appState) => enableActionFlipHorizontal(elements, appState), }); @@ -67,7 +67,7 @@ export const actionFlipVertical = register({ keyTest: (event) => event.shiftKey && event.code === "KeyV" && !event[KEYS.CTRL_OR_CMD], contextItemLabel: "labels.flipVertical", - contextItemPredicate: (elements, appState) => + predicate: (elements, appState) => enableActionFlipVertical(elements, appState), }); diff --git a/src/actions/actionGroup.tsx b/src/actions/actionGroup.tsx index 273888d7c..1e6bcfbbc 100644 --- a/src/actions/actionGroup.tsx +++ b/src/actions/actionGroup.tsx @@ -129,8 +129,7 @@ export const actionGroup = register({ }; }, contextItemLabel: "labels.group", - contextItemPredicate: (elements, appState) => - enableActionGroup(elements, appState), + predicate: (elements, appState) => enableActionGroup(elements, appState), keyTest: (event) => !event.shiftKey && event[KEYS.CTRL_OR_CMD] && event.key === KEYS.G, PanelComponent: ({ elements, appState, updateData }) => ( @@ -193,8 +192,7 @@ export const actionUngroup = register({ event[KEYS.CTRL_OR_CMD] && event.key === KEYS.G.toUpperCase(), contextItemLabel: "labels.ungroup", - contextItemPredicate: (elements, appState) => - getSelectedGroupIds(appState).length > 0, + predicate: (elements, appState) => getSelectedGroupIds(appState).length > 0, PanelComponent: ({ elements, appState, updateData }) => ( { + predicate: (elements, appState) => { const selectedElements = getSelectedElements(elements, appState); if (selectedElements.length === 1 && isLinearElement(selectedElements[0])) { return true; diff --git a/src/actions/actionMenu.tsx b/src/actions/actionMenu.tsx index f03371281..27bd3b37a 100644 --- a/src/actions/actionMenu.tsx +++ b/src/actions/actionMenu.tsx @@ -1,12 +1,10 @@ -import { HamburgerMenuIcon, HelpIcon, palette } from "../components/icons"; +import { HamburgerMenuIcon, palette } from "../components/icons"; import { ToolButton } from "../components/ToolButton"; import { t } from "../i18n"; import { showSelectedShapeActions, getNonDeletedElements } from "../element"; import { register } from "./register"; import { allowFullScreen, exitFullScreen, isFullScreen } from "../utils"; import { KEYS } from "../keys"; -import { HelpButton } from "../components/HelpButton"; -import DropdownMenuItem from "../components/dropdownMenu/DropdownMenuItem"; export const actionToggleCanvasMenu = register({ name: "toggleCanvasMenu", @@ -88,19 +86,5 @@ export const actionShortcuts = register({ commitToHistory: false, }; }, - PanelComponent: ({ updateData, isInHamburgerMenu }) => - isInHamburgerMenu ? ( - - {t("helpDialog.title")} - - ) : ( - - ), keyTest: (event) => event.key === KEYS.QUESTION_MARK, }); diff --git a/src/actions/actionToggleGridMode.tsx b/src/actions/actionToggleGridMode.tsx index f8336a4bf..8841cad5a 100644 --- a/src/actions/actionToggleGridMode.tsx +++ b/src/actions/actionToggleGridMode.tsx @@ -20,7 +20,7 @@ export const actionToggleGridMode = register({ }; }, checked: (appState: AppState) => appState.gridSize !== null, - contextItemPredicate: (element, appState, props) => { + predicate: (element, appState, props) => { return typeof props.gridModeEnabled === "undefined"; }, contextItemLabel: "labels.showGrid", diff --git a/src/actions/actionToggleViewMode.tsx b/src/actions/actionToggleViewMode.tsx index b2f529c1c..dc9db0c37 100644 --- a/src/actions/actionToggleViewMode.tsx +++ b/src/actions/actionToggleViewMode.tsx @@ -18,7 +18,7 @@ export const actionToggleViewMode = register({ }; }, checked: (appState) => appState.viewModeEnabled, - contextItemPredicate: (elements, appState, appProps) => { + predicate: (elements, appState, appProps) => { return typeof appProps.viewModeEnabled === "undefined"; }, contextItemLabel: "labels.viewMode", diff --git a/src/actions/actionToggleZenMode.tsx b/src/actions/actionToggleZenMode.tsx index 7578c02ed..28956640c 100644 --- a/src/actions/actionToggleZenMode.tsx +++ b/src/actions/actionToggleZenMode.tsx @@ -18,7 +18,7 @@ export const actionToggleZenMode = register({ }; }, checked: (appState) => appState.zenModeEnabled, - contextItemPredicate: (elements, appState, appProps) => { + predicate: (elements, appState, appProps) => { return typeof appProps.zenModeEnabled === "undefined"; }, contextItemLabel: "buttons.zenMode", diff --git a/src/actions/manager.tsx b/src/actions/manager.tsx index 6c87aa037..60648e410 100644 --- a/src/actions/manager.tsx +++ b/src/actions/manager.tsx @@ -131,11 +131,7 @@ export class ActionManager { /** * @param data additional data sent to the PanelComponent */ - renderAction = ( - name: ActionName, - data?: PanelComponentProps["data"], - isInHamburgerMenu = false, - ) => { + renderAction = (name: ActionName, data?: PanelComponentProps["data"]) => { const canvasActions = this.app.props.UIOptions.canvasActions; if ( @@ -170,11 +166,20 @@ export class ActionManager { updateData={updateData} appProps={this.app.props} data={data} - isInHamburgerMenu={isInHamburgerMenu} /> ); } return null; }; + + isActionEnabled = (action: Action) => { + const elements = this.getElementsIncludingDeleted(); + const appState = this.getAppState(); + + return ( + !action.predicate || + action.predicate(elements, appState, this.app.props, this.app) + ); + }; } diff --git a/src/actions/types.ts b/src/actions/types.ts index 93e29cfc1..4a7a4fe5d 100644 --- a/src/actions/types.ts +++ b/src/actions/types.ts @@ -124,9 +124,7 @@ export type PanelComponentProps = { export interface Action { name: ActionName; - PanelComponent?: React.FC< - PanelComponentProps & { isInHamburgerMenu: boolean } - >; + PanelComponent?: React.FC; perform: ActionFn; keyPriority?: number; keyTest?: ( @@ -140,7 +138,7 @@ export interface Action { elements: readonly ExcalidrawElement[], appState: Readonly, ) => string); - contextItemPredicate?: ( + predicate?: ( elements: readonly ExcalidrawElement[], appState: AppState, appProps: ExcalidrawProps, diff --git a/src/components/ActiveFile.tsx b/src/components/ActiveFile.tsx deleted file mode 100644 index ac9ee89bb..000000000 --- a/src/components/ActiveFile.tsx +++ /dev/null @@ -1,23 +0,0 @@ -// TODO barnabasmolnar/editor-redesign -// this icon is not great -import { getShortcutFromShortcutName } from "../actions/shortcuts"; -import { save } from "../components/icons"; -import { t } from "../i18n"; - -import "./ActiveFile.scss"; -import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem"; - -type ActiveFileProps = { - fileName?: string; - onSave: () => void; -}; - -export const ActiveFile = ({ fileName, onSave }: ActiveFileProps) => ( - {`${t("buttons.save")}`} -); diff --git a/src/components/App.tsx b/src/components/App.tsx index c0275dbf2..9ce9dfc46 100644 --- a/src/components/App.tsx +++ b/src/components/App.tsx @@ -312,9 +312,9 @@ const ExcalidrawSetAppStateContext = React.createContext< >(() => {}); ExcalidrawSetAppStateContext.displayName = "ExcalidrawSetAppStateContext"; -const ExcalidrawActionManagerContext = React.createContext< - ActionManager | { renderAction: ActionManager["renderAction"] } ->({ renderAction: () => null }); +const ExcalidrawActionManagerContext = React.createContext( + null!, +); ExcalidrawActionManagerContext.displayName = "ExcalidrawActionManagerContext"; export const useExcalidrawElements = () => diff --git a/src/components/ClearCanvas.tsx b/src/components/ClearCanvas.tsx deleted file mode 100644 index 354838aae..000000000 --- a/src/components/ClearCanvas.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import { useState } from "react"; -import { t } from "../i18n"; -import { TrashIcon } from "./icons"; - -import ConfirmDialog from "./ConfirmDialog"; -import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem"; - -const ClearCanvas = ({ onConfirm }: { onConfirm: () => void }) => { - const [showDialog, setShowDialog] = useState(false); - const toggleDialog = () => { - setShowDialog(!showDialog); - }; - - return ( - <> - - {t("buttons.clearReset")} - - - {showDialog && ( - { - onConfirm(); - toggleDialog(); - }} - onCancel={toggleDialog} - title={t("clearCanvasDialog.title")} - > -

{t("alerts.clearReset")}

-
- )} - - ); -}; - -export default ClearCanvas; diff --git a/src/components/CollabButton.tsx b/src/components/CollabButton.tsx index 08ad71c60..d63444a2c 100644 --- a/src/components/CollabButton.tsx +++ b/src/components/CollabButton.tsx @@ -2,48 +2,30 @@ import { t } from "../i18n"; import { UsersIcon } from "./icons"; import "./CollabButton.scss"; -import DropdownMenuItem from "./dropdownMenu/DropdownMenuItem"; import clsx from "clsx"; const CollabButton = ({ isCollaborating, collaboratorCount, onClick, - isInHamburgerMenu = true, }: { isCollaborating: boolean; collaboratorCount: number; onClick: () => void; - isInHamburgerMenu?: boolean; }) => { return ( - <> - {isInHamburgerMenu ? ( - - {t("labels.liveCollaboration")} - - ) : ( - + ); }; diff --git a/src/components/ContextMenu.tsx b/src/components/ContextMenu.tsx index 2ec72e5ea..1463f1033 100644 --- a/src/components/ContextMenu.tsx +++ b/src/components/ContextMenu.tsx @@ -39,8 +39,8 @@ export const ContextMenu = React.memo( if ( item && (item === CONTEXT_MENU_SEPARATOR || - !item.contextItemPredicate || - item.contextItemPredicate( + !item.predicate || + item.predicate( elements, appState, actionManager.app.props, diff --git a/src/components/LayerUI.tsx b/src/components/LayerUI.tsx index 57047a8d4..e8a385d02 100644 --- a/src/components/LayerUI.tsx +++ b/src/components/LayerUI.tsx @@ -183,7 +183,9 @@ const LayerUI = ({ + {/* FIXME we should to test for this inside the item itself */} {UIOptions.canvasActions.export && } + {/* FIXME we should to test for this inside the item itself */} {UIOptions.canvasActions.saveAsImage && ( )} @@ -350,7 +352,6 @@ const LayerUI = ({ {onCollabButtonClick && ( - {actionManager.renderAction("toggleShortcuts")} + actionManager.executeAction(actionShortcuts)} + />
{ + // FIXME Hack until we tie "t" to lang state + // eslint-disable-next-line const appState = useExcalidrawAppState(); const actionManager = useExcalidrawActionManager(); - if (appState.viewModeEnabled) { + + if (!actionManager.isActionEnabled(actionLoadScene)) { return null; } - return actionManager.renderAction("loadScene"); + + return ( + actionManager.executeAction(actionLoadScene)} + dataTestId="load-button" + shortcut={getShortcutFromShortcutName("loadScene")} + ariaLabel={t("buttons.load")} + > + {t("buttons.load")} + + ); }; LoadScene.displayName = "LoadScene"; export const SaveToActiveFile = () => { + // FIXME Hack until we tie "t" to lang state + // eslint-disable-next-line const appState = useExcalidrawAppState(); const actionManager = useExcalidrawActionManager(); - if (!appState.fileHandle) { + + if (!actionManager.isActionEnabled(actionSaveToActiveFile)) { return null; } - return actionManager.renderAction("saveToActiveFile"); + + return ( + actionManager.executeAction(actionSaveToActiveFile)} + icon={save} + ariaLabel={`${t("buttons.save")}`} + >{`${t("buttons.save")}`} + ); }; SaveToActiveFile.displayName = "SaveToActiveFile"; export const SaveAsImage = () => { const setAppState = useExcalidrawSetAppState(); - // Hack until we tie "t" to lang state + // FIXME Hack until we tie "t" to lang state // eslint-disable-next-line const appState = useExcalidrawAppState(); return ( @@ -51,32 +98,96 @@ export const SaveAsImage = () => { SaveAsImage.displayName = "SaveAsImage"; export const Help = () => { - // Hack until we tie "t" to lang state + // FIXME Hack until we tie "t" to lang state // eslint-disable-next-line const appState = useExcalidrawAppState(); const actionManager = useExcalidrawActionManager(); - return actionManager.renderAction("toggleShortcuts", undefined, true); + + return ( + actionManager.executeAction(actionShortcuts)} + shortcut="?" + ariaLabel={t("helpDialog.title")} + > + {t("helpDialog.title")} + + ); }; Help.displayName = "Help"; export const ClearCanvas = () => { + // FIXME Hack until we tie "t" to lang state + // eslint-disable-next-line const appState = useExcalidrawAppState(); const actionManager = useExcalidrawActionManager(); - if (appState.viewModeEnabled) { + const [showDialog, setShowDialog] = useState(false); + const toggleDialog = () => setShowDialog(!showDialog); + + if (!actionManager.isActionEnabled(actionClearCanvas)) { return null; } - return actionManager.renderAction("clearCanvas"); + + return ( + <> + + {t("buttons.clearReset")} + + + {/* FIXME this should live outside MainMenu so it stays open + if menu is closed */} + {showDialog && ( + { + actionManager.executeAction(actionClearCanvas); + toggleDialog(); + }} + onCancel={toggleDialog} + title={t("clearCanvasDialog.title")} + > +

{t("alerts.clearReset")}

+
+ )} + + ); }; ClearCanvas.displayName = "ClearCanvas"; export const ToggleTheme = () => { - // Hack until we tie "t" to lang state - // eslint-disable-next-line const appState = useExcalidrawAppState(); const actionManager = useExcalidrawActionManager(); - return actionManager.renderAction("toggleTheme"); + + if (!actionManager.isActionEnabled(actionToggleTheme)) { + return null; + } + + return ( + { + return actionManager.executeAction(actionToggleTheme); + }} + icon={appState.theme === "dark" ? SunIcon : MoonIcon} + dataTestId="toggle-dark-mode" + shortcut={getShortcutFromShortcutName("toggleTheme")} + ariaLabel={ + appState.theme === "dark" + ? t("buttons.lightMode") + : t("buttons.darkMode") + } + > + {appState.theme === "dark" + ? t("buttons.lightMode") + : t("buttons.darkMode")} + + ); }; ToggleTheme.displayName = "ToggleTheme"; @@ -101,7 +212,7 @@ export const ChangeCanvasBackground = () => { ChangeCanvasBackground.displayName = "ChangeCanvasBackground"; export const Export = () => { - // Hack until we tie "t" to lang state + // FIXME Hack until we tie "t" to lang state // eslint-disable-next-line const appState = useExcalidrawAppState(); const setAppState = useExcalidrawSetAppState(); @@ -154,7 +265,7 @@ export const LiveCollaboration = ({ onSelect: () => void; isCollaborating: boolean; }) => { - // Hack until we tie "t" to lang state + // FIXME Hack until we tie "t" to lang state // eslint-disable-next-line const appState = useExcalidrawAppState(); return ( diff --git a/src/element/Hyperlink.tsx b/src/element/Hyperlink.tsx index a25403839..43cbf0da5 100644 --- a/src/element/Hyperlink.tsx +++ b/src/element/Hyperlink.tsx @@ -267,7 +267,7 @@ export const actionLink = register({ keyTest: (event) => event[KEYS.CTRL_OR_CMD] && event.key === KEYS.K, contextItemLabel: (elements, appState) => getContextMenuLabel(elements, appState), - contextItemPredicate: (elements, appState) => { + predicate: (elements, appState) => { const selectedElements = getSelectedElements(elements, appState); return selectedElements.length === 1; }, diff --git a/src/tests/__snapshots__/contextmenu.test.tsx.snap b/src/tests/__snapshots__/contextmenu.test.tsx.snap index ed03cd999..8633e88b0 100644 --- a/src/tests/__snapshots__/contextmenu.test.tsx.snap +++ b/src/tests/__snapshots__/contextmenu.test.tsx.snap @@ -13,30 +13,30 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.cut", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "cut", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copy", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "copy", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -44,28 +44,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -93,28 +93,28 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.group", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "group", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.unbindText", - "contextItemPredicate": [Function], "name": "unbindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.bindText", - "contextItemPredicate": [Function], "name": "bindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -122,10 +122,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.ungroup", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "ungroup", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -185,20 +185,20 @@ Object { "separator", Object { "contextItemLabel": "labels.flipHorizontal", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipHorizontal", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.flipVertical", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipVertical", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -206,9 +206,9 @@ Object { "separator", Object { "contextItemLabel": [Function], - "contextItemPredicate": [Function], "name": "toggleLinearEditor", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -216,10 +216,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": [Function], - "contextItemPredicate": [Function], "keyTest": [Function], "name": "hyperlink", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "action": "click", "category": "hyperlink", @@ -4401,30 +4401,30 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.cut", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "cut", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copy", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "copy", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4432,28 +4432,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4481,28 +4481,28 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.group", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "group", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.unbindText", - "contextItemPredicate": [Function], "name": "unbindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.bindText", - "contextItemPredicate": [Function], "name": "bindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4510,10 +4510,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.ungroup", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "ungroup", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4573,20 +4573,20 @@ Object { "separator", Object { "contextItemLabel": "labels.flipHorizontal", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipHorizontal", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.flipVertical", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipVertical", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4594,9 +4594,9 @@ Object { "separator", Object { "contextItemLabel": [Function], - "contextItemPredicate": [Function], "name": "toggleLinearEditor", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4604,10 +4604,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": [Function], - "contextItemPredicate": [Function], "keyTest": [Function], "name": "hyperlink", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "action": "click", "category": "hyperlink", @@ -4942,30 +4942,30 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.cut", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "cut", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copy", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "copy", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -4973,28 +4973,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5022,28 +5022,28 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.group", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "group", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.unbindText", - "contextItemPredicate": [Function], "name": "unbindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.bindText", - "contextItemPredicate": [Function], "name": "bindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5051,10 +5051,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.ungroup", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "ungroup", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5114,20 +5114,20 @@ Object { "separator", Object { "contextItemLabel": "labels.flipHorizontal", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipHorizontal", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.flipVertical", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipVertical", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5135,9 +5135,9 @@ Object { "separator", Object { "contextItemLabel": [Function], - "contextItemPredicate": [Function], "name": "toggleLinearEditor", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5145,10 +5145,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": [Function], - "contextItemPredicate": [Function], "keyTest": [Function], "name": "hyperlink", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "action": "click", "category": "hyperlink", @@ -5568,10 +5568,10 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5579,28 +5579,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5619,10 +5619,10 @@ Object { Object { "checked": [Function], "contextItemLabel": "labels.showGrid", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "gridMode", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "canvas", "predicate": [Function], @@ -5632,10 +5632,10 @@ Object { Object { "checked": [Function], "contextItemLabel": "buttons.zenMode", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "zenMode", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "canvas", "predicate": [Function], @@ -5645,10 +5645,10 @@ Object { Object { "checked": [Function], "contextItemLabel": "labels.viewMode", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "viewMode", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "canvas", "predicate": [Function], @@ -5782,30 +5782,30 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.cut", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "cut", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copy", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "copy", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5813,28 +5813,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5862,28 +5862,28 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.group", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "group", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.unbindText", - "contextItemPredicate": [Function], "name": "unbindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.bindText", - "contextItemPredicate": [Function], "name": "bindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5891,10 +5891,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.ungroup", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "ungroup", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5954,20 +5954,20 @@ Object { "separator", Object { "contextItemLabel": "labels.flipHorizontal", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipHorizontal", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.flipVertical", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipVertical", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5975,9 +5975,9 @@ Object { "separator", Object { "contextItemLabel": [Function], - "contextItemPredicate": [Function], "name": "toggleLinearEditor", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -5985,10 +5985,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": [Function], - "contextItemPredicate": [Function], "keyTest": [Function], "name": "hyperlink", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "action": "click", "category": "hyperlink", @@ -6119,30 +6119,30 @@ Object { "items": Array [ Object { "contextItemLabel": "labels.cut", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "cut", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copy", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "copy", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.paste", - "contextItemPredicate": [Function], "keyTest": undefined, "name": "paste", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6150,28 +6150,28 @@ Object { "separator", Object { "contextItemLabel": "labels.copyAsPng", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "copyAsPng", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyAsSvg", - "contextItemPredicate": [Function], "name": "copyAsSvg", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.copyText", - "contextItemPredicate": [Function], "name": "copyText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6199,28 +6199,28 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.group", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "group", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.unbindText", - "contextItemPredicate": [Function], "name": "unbindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.bindText", - "contextItemPredicate": [Function], "name": "bindText", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6228,10 +6228,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": "labels.ungroup", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "ungroup", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6291,20 +6291,20 @@ Object { "separator", Object { "contextItemLabel": "labels.flipHorizontal", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipHorizontal", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, }, Object { "contextItemLabel": "labels.flipVertical", - "contextItemPredicate": [Function], "keyTest": [Function], "name": "flipVertical", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6312,9 +6312,9 @@ Object { "separator", Object { "contextItemLabel": [Function], - "contextItemPredicate": [Function], "name": "toggleLinearEditor", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "category": "element", }, @@ -6322,10 +6322,10 @@ Object { Object { "PanelComponent": [Function], "contextItemLabel": [Function], - "contextItemPredicate": [Function], "keyTest": [Function], "name": "hyperlink", "perform": [Function], + "predicate": [Function], "trackEvent": Object { "action": "click", "category": "hyperlink", diff --git a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap index a581fbf3c..09402981e 100644 --- a/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap +++ b/src/tests/packages/__snapshots__/excalidraw.test.tsx.snap @@ -1,5 +1,114 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[` should render main menu with host menu items if passed from host 1`] = ` + `; - -exports[` should render main menu with host menu items if passed from host 1`] = ` -