From 6ca177e4622122300c57482f1a7cd92269ed046d Mon Sep 17 00:00:00 2001 From: Saifeddine ALOUI Date: Fri, 3 Feb 2023 21:35:34 +0100 Subject: [PATCH 1/9] Added French localization --- invokeai/frontend/dist/locales/common/fr.json | 63 +++++- .../frontend/dist/locales/gallery/fr.json | 17 +- .../frontend/dist/locales/hotkeys/fr.json | 208 +++++++++++++++++- .../dist/locales/modelmanager/fr.json | 68 ++++++ .../frontend/dist/locales/options/fr.json | 63 +++++- .../frontend/dist/locales/settings/fr.json | 14 +- invokeai/frontend/dist/locales/toast/fr.json | 33 ++- .../frontend/dist/locales/tooltip/fr.json | 15 ++ .../dist/locales/unifiedcanvas/fr.json | 60 ++++- .../frontend/public/locales/common/fr.json | 63 +++++- .../frontend/public/locales/gallery/fr.json | 17 +- .../frontend/public/locales/hotkeys/fr.json | 208 +++++++++++++++++- .../public/locales/modelmanager/fr.json | 68 ++++++ .../frontend/public/locales/options/fr.json | 63 +++++- .../frontend/public/locales/settings/fr.json | 14 +- .../frontend/public/locales/toast/fr.json | 33 ++- .../frontend/public/locales/tooltip/fr.json | 15 ++ .../public/locales/unifiedcanvas/fr.json | 60 ++++- 18 files changed, 1068 insertions(+), 14 deletions(-) create mode 100644 invokeai/frontend/dist/locales/modelmanager/fr.json create mode 100644 invokeai/frontend/dist/locales/tooltip/fr.json create mode 100644 invokeai/frontend/public/locales/modelmanager/fr.json create mode 100644 invokeai/frontend/public/locales/tooltip/fr.json diff --git a/invokeai/frontend/dist/locales/common/fr.json b/invokeai/frontend/dist/locales/common/fr.json index 0967ef424b..f276a91644 100644 --- a/invokeai/frontend/dist/locales/common/fr.json +++ b/invokeai/frontend/dist/locales/common/fr.json @@ -1 +1,62 @@ -{} +{ + "hotkeysLabel": "Raccourcis clavier", + "themeLabel": "Thème", + "languagePickerLabel": "Sélecteur de langue", + "reportBugLabel": "Signaler un bug", + "githubLabel": "Github", + "discordLabel": "Discord", + "settingsLabel": "Paramètres", + "darkTheme": "Sombre", + "lightTheme": "Clair", + "greenTheme": "Vert", + "langEnglish": "Anglais", + "langRussian": "Russe", + "langItalian": "Italien", + "langBrPortuguese": "Portugais (Brésilien)", + "langGerman": "Allemand", + "langPortuguese": "Portugais", + "langFrench": "Français", + "langPolish": "Polonais", + "langSimplifiedChinese": "Chinois simplifié", + "langSpanish": "Espagnol", + "langJapanese": "Japonais", + "langDutch": "Néerlandais", + "text2img": "Texte en image", + "img2img": "Image en image", + "unifiedCanvas": "Canvas unifié", + "nodes": "Nœuds", + "nodesDesc": "Un système basé sur les nœuds pour la génération d'images est actuellement en développement. Restez à l'écoute pour des mises à jour à ce sujet.", + "postProcessing": "Post-traitement", + "postProcessDesc1": "Invoke AI offre une grande variété de fonctionnalités de post-traitement. Le redimensionnement d'images et la restauration de visages sont déjà disponibles dans la WebUI. Vous pouvez y accéder à partir du menu Options avancées des onglets Texte en image et Image en image. Vous pouvez également traiter les images directement en utilisant les boutons d'action d'image ci-dessus l'affichage d'image actuel ou dans le visualiseur.", + "postProcessDesc2": "Une interface utilisateur dédiée sera bientôt disponible pour faciliter les workflows de post-traitement plus avancés.", + "postProcessDesc3": "L'interface en ligne de commande d'Invoke AI offre diverses autres fonctionnalités, notamment Embiggen.", + "training": "Formation", + "trainingDesc1": "Un workflow dédié pour former vos propres embeddings et checkpoints en utilisant Textual Inversion et Dreambooth depuis l'interface web.", + "trainingDesc2": "InvokeAI prend déjà en charge la formation d'embeddings personnalisés en utilisant Textual Inversion en utilisant le script principal.", + "upload": "Télécharger", + "close": "Fermer", + "load": "Charger", + "back": "Retour", + "statusConnected": "Connecté", + "statusDisconnected": "Déconnecté", + "statusError": "Erreur", + "statusPreparing": "Préparation", + "statusProcessingCanceled": "Traitement Annulé", + "statusProcessingComplete": "Traitement Terminé", + "statusGenerating": "Génération", + "statusGeneratingTextToImage": "Génération Texte vers Image", + "statusGeneratingImageToImage": "Génération Image vers Image", + "statusGeneratingInpainting": "Génération de Réparation", + "statusGeneratingOutpainting": "Génération de Completion", + "statusGenerationComplete": "Génération Terminée", + "statusIterationComplete": "Itération Terminée", + "statusSavingImage": "Sauvegarde de l'Image", + "statusRestoringFaces": "Restauration des Visages", + "statusRestoringFacesGFPGAN": "Restauration des Visages (GFPGAN)", + "statusRestoringFacesCodeFormer": "Restauration des Visages (CodeFormer)", + "statusUpscaling": "Mise à Échelle", + "statusUpscalingESRGAN": "Mise à Échelle (ESRGAN)", + "statusLoadingModel": "Chargement du Modèle", + "statusModelChanged": "Modèle Changé" + +} diff --git a/invokeai/frontend/dist/locales/gallery/fr.json b/invokeai/frontend/dist/locales/gallery/fr.json index 0967ef424b..fec4f2079f 100644 --- a/invokeai/frontend/dist/locales/gallery/fr.json +++ b/invokeai/frontend/dist/locales/gallery/fr.json @@ -1 +1,16 @@ -{} +{ + "generations": "Générations", + "showGenerations": "Afficher les générations", + "uploads": "Téléchargements", + "showUploads": "Afficher les téléchargements", + "galleryImageSize": "Taille de l'image", + "galleryImageResetSize": "Réinitialiser la taille", + "gallerySettings": "Paramètres de la galerie", + "maintainAspectRatio": "Maintenir le rapport d'aspect", + "autoSwitchNewImages": "Basculer automatiquement vers de nouvelles images", + "singleColumnLayout": "Mise en page en colonne unique", + "pinGallery": "Épingler la galerie", + "allImagesLoaded": "Toutes les images chargées", + "loadMore": "Charger plus", + "noImagesInGallery": "Aucune image dans la galerie" +} diff --git a/invokeai/frontend/dist/locales/hotkeys/fr.json b/invokeai/frontend/dist/locales/hotkeys/fr.json index 0967ef424b..ceabe0dcfc 100644 --- a/invokeai/frontend/dist/locales/hotkeys/fr.json +++ b/invokeai/frontend/dist/locales/hotkeys/fr.json @@ -1 +1,207 @@ -{} +{ + "keyboardShortcuts": "Raccourcis clavier", + "appHotkeys": "Raccourcis de l'application", + "GeneralHotkeys": "Raccourcis généraux", + "galleryHotkeys": "Raccourcis de la galerie", + "unifiedCanvasHotkeys": "Raccourcis du Canvas unifié", + "invoke": { + "title": "Invoquer", + "desc": "Générer une image" + }, + "cancel": { + "title": "Annuler", + "desc": "Annuler la génération d'image" + }, + "focusPrompt": { + "title": "Prompt de Focus", + "desc": "Mettre en focus la zone de saisie de la commande" + }, + "toggleOptions": { + "title": "Basculer Options", + "desc": "Ouvrir et fermer le panneau d'options" + }, + "pinOptions": { + "title": "Epingler Options", + "desc": "Epingler le panneau d'options" + }, + "toggleViewer": { + "title": "Basculer Visionneuse", + "desc": "Ouvrir et fermer la visionneuse d'image" + }, + "toggleGallery": { + "title": "Basculer Galerie", + "desc": "Ouvrir et fermer le tiroir de galerie" + }, + "maximizeWorkSpace": { + "title": "Maximiser Espace de travail", + "desc": "Fermer les panneaux et maximiser la zone de travail" + }, + "changeTabs": { + "title": "Changer d'onglets", + "desc": "Passer à un autre espace de travail" + }, + "consoleToggle": { + "title": "Bascule de la console", + "desc": "Ouvrir et fermer la console" + }, + "setPrompt": { + "title": "Définir le prompt", + "desc": "Utiliser le prompt de l'image actuelle" + }, + "setSeed": { + "title": "Définir la graine", + "desc": "Utiliser la graine de l'image actuelle" + }, + "setParameters": { + "title": "Définir les paramètres", + "desc": "Utiliser tous les paramètres de l'image actuelle" + }, + "restoreFaces": { + "title": "Restaurer les faces", + "desc": "Restaurer l'image actuelle" + }, + "upscale": { + "title": "Agrandir", + "desc": "Agrandir l'image actuelle" + }, + "showInfo": { + "title": "Afficher les informations", + "desc": "Afficher les informations de métadonnées de l'image actuelle" + }, + "sendToImageToImage": { + "title": "Envoyer à l'image à l'image", + "desc": "Envoyer l'image actuelle à l'image à l'image" + }, + "deleteImage": { + "title": "Supprimer l'image", + "desc": "Supprimer l'image actuelle" + }, + "closePanels": { + "title": "Fermer les panneaux", + "desc": "Fermer les panneaux ouverts" + }, + "previousImage": { + "title": "Image précédente", + "desc": "Afficher l'image précédente dans la galerie" + }, + "nextImage": { + "title": "Image suivante", + "desc": "Afficher l'image suivante dans la galerie" + }, + "toggleGalleryPin": { + "title": "Activer/désactiver l'épinglage de la galerie", + "desc": "Épingle ou dépingle la galerie à l'interface utilisateur" + }, + "increaseGalleryThumbSize": { + "title": "Augmenter la taille des miniatures de la galerie", + "desc": "Augmente la taille des miniatures de la galerie" + }, + "decreaseGalleryThumbSize": { + "title": "Diminuer la taille des miniatures de la galerie", + "desc": "Diminue la taille des miniatures de la galerie" + }, + "selectBrush": { + "title": "Sélectionner un pinceau", + "desc": "Sélectionne le pinceau de la toile" + }, + "selectEraser": { + "title": "Sélectionner un gomme", + "desc": "Sélectionne la gomme de la toile" + }, + "decreaseBrushSize": { + "title": "Diminuer la taille du pinceau", + "desc": "Diminue la taille du pinceau/gomme de la toile" + }, + "increaseBrushSize": { + "title": "Augmenter la taille du pinceau", + "desc": "Augmente la taille du pinceau/gomme de la toile" + }, + "decreaseBrushOpacity": { + "title": "Diminuer l'opacité du pinceau", + "desc": "Diminue l'opacité du pinceau de la toile" + }, + "increaseBrushOpacity": { + "title": "Augmenter l'opacité du pinceau", + "desc": "Augmente l'opacité du pinceau de la toile" + }, + "moveTool": { + "title": "Outil de déplacement", + "desc": "Permet la navigation sur la toile" + }, + "fillBoundingBox": { + "title": "Remplir la boîte englobante", + "desc": "Remplit la boîte englobante avec la couleur du pinceau" + }, + "eraseBoundingBox": { + "title": "Effacer la boîte englobante", + "desc": "Efface la zone de la boîte englobante" + }, + "colorPicker": { + "title": "Sélectionnez le sélecteur de couleur", + "desc": "Sélectionne le sélecteur de couleur de la toile" + }, + "toggleSnap": { + "title": "Basculer Snap", + "desc": "Basculer Snap à la grille" + }, + "quickToggleMove": { + "title": "Basculer rapidement déplacer", + "desc": "Basculer temporairement le mode Déplacer" + }, + "toggleLayer": { + "title": "Basculer la couche", + "desc": "Basculer la sélection de la couche masque/base" + }, + "clearMask": { + "title": "Effacer le masque", + "desc": "Effacer entièrement le masque" + }, + "hideMask": { + "title": "Masquer le masque", + "desc": "Masquer et démasquer le masque" + }, + "showHideBoundingBox": { + "title": "Afficher/Masquer la boîte englobante", + "desc": "Basculer la visibilité de la boîte englobante" + }, + "mergeVisible": { + "title": "Fusionner visible", + "desc": "Fusionner toutes les couches visibles de la toile" + }, + "saveToGallery": { + "title": "Enregistrer dans la galerie", + "desc": "Enregistrer la toile actuelle dans la galerie" + }, + "copyToClipboard": { + "title": "Copier dans le presse-papiers", + "desc": "Copier la toile actuelle dans le presse-papiers" + }, + "downloadImage": { + "title": "Télécharger l'image", + "desc": "Télécharger la toile actuelle" + }, + "undoStroke": { + "title": "Annuler le trait", + "desc": "Annuler un coup de pinceau" + }, + "redoStroke": { + "title": "Rétablir le trait", + "desc": "Rétablir un coup de pinceau" + }, + "resetView": { + "title": "Réinitialiser la vue", + "desc": "Réinitialiser la vue de la toile" + }, + "previousStagingImage": { + "title": "Image de mise en scène précédente", + "desc": "Image précédente de la zone de mise en scène" + }, + "nextStagingImage": { + "title": "Image de mise en scène suivante", + "desc": "Image suivante de la zone de mise en scène" + }, + "acceptStagingImage": { + "title": "Accepter l'image de mise en scène", + "desc": "Accepter l'image actuelle de la zone de mise en scène" + } +} diff --git a/invokeai/frontend/dist/locales/modelmanager/fr.json b/invokeai/frontend/dist/locales/modelmanager/fr.json new file mode 100644 index 0000000000..5884893037 --- /dev/null +++ b/invokeai/frontend/dist/locales/modelmanager/fr.json @@ -0,0 +1,68 @@ +{ + "modelManager": "Gestionnaire de modèle", + "model": "Modèle", + "allModels": "Tous les modèles", + "checkpointModels": "Points de contrôle", + "diffusersModels": "Diffuseurs", + "safetensorModels": "SafeTensors", + "modelAdded": "Modèle ajouté", + "modelUpdated": "Modèle mis à jour", + "modelEntryDeleted": "Entrée de modèle supprimée", + "cannotUseSpaces": "Ne peut pas utiliser d'espaces", + "addNew": "Ajouter un nouveau", + "addNewModel": "Ajouter un nouveau modèle", + "addCheckpointModel": "Ajouter un modèle de point de contrôle / SafeTensor", + "addDiffuserModel": "Ajouter des diffuseurs", + "addManually": "Ajouter manuellement", + "manual": "Manuel", + "name": "Nom", + "nameValidationMsg": "Entrez un nom pour votre modèle", + "description": "Description", + "descriptionValidationMsg": "Ajoutez une description pour votre modèle", + "config": "Config", + "configValidationMsg": "Chemin vers le fichier de configuration de votre modèle.", + "modelLocation": "Emplacement du modèle", + "modelLocationValidationMsg": "Chemin vers où votre modèle est situé localement.", + "repo_id": "ID de dépôt", + "repoIDValidationMsg": "Dépôt en ligne de votre modèle", + "vaeLocation": "Emplacement VAE", + "vaeLocationValidationMsg": "Chemin vers où votre VAE est situé.", + "vaeRepoID": "ID de dépôt VAE", + "vaeRepoIDValidationMsg": "Dépôt en ligne de votre VAE", + "width": "Largeur", + "widthValidationMsg": "Largeur par défaut de votre modèle.", + "height": "Hauteur", + "heightValidationMsg": "Hauteur par défaut de votre modèle.", + "addModel": "Ajouter un modèle", + "updateModel": "Mettre à jour le modèle", + "availableModels": "Modèles disponibles", + "search": "Rechercher", + "load": "Charger", + "active": "actif", + "notLoaded": "non chargé", + "cached": "en cache", + "checkpointFolder": "Dossier de point de contrôle", + "clearCheckpointFolder": "Effacer le dossier de point de contrôle", + "findModels": "Trouver des modèles", + "scanAgain": "Scanner à nouveau", + "modelsFound": "Modèles trouvés", + "selectFolder": "Sélectionner un dossier", + "selected": "Sélectionné", + "selectAll": "Tout sélectionner", + "deselectAll": "Tout désélectionner", + "showExisting": "Afficher existant", + "addSelected": "Ajouter sélectionné", + "modelExists": "Modèle existant", + "selectAndAdd": "Sélectionner et ajouter les modèles listés ci-dessous", + "noModelsFound": "Aucun modèle trouvé", + "delete": "Supprimer", + "deleteModel": "Supprimer le modèle", + "deleteConfig": "Supprimer la configuration", + "deleteMsg1": "Êtes-vous sûr de vouloir supprimer cette entrée de modèle dans InvokeAI?", + "deleteMsg2": "Cela n'effacera pas le fichier de point de contrôle du modèle de votre disque. Vous pouvez les réajouter si vous le souhaitez.", + "formMessageDiffusersModelLocation": "Emplacement du modèle de diffuseurs", + "formMessageDiffusersModelLocationDesc": "Veuillez en entrer au moins un.", + "formMessageDiffusersVAELocation": "Emplacement VAE", + "formMessageDiffusersVAELocationDesc": "Si non fourni, InvokeAI recherchera le fichier VAE à l'emplacement du modèle donné ci-dessus." + +} diff --git a/invokeai/frontend/dist/locales/options/fr.json b/invokeai/frontend/dist/locales/options/fr.json index 0967ef424b..fda35b2ac6 100644 --- a/invokeai/frontend/dist/locales/options/fr.json +++ b/invokeai/frontend/dist/locales/options/fr.json @@ -1 +1,62 @@ -{} +{ + "images": "Images", + "steps": "Etapes", + "cfgScale": "CFG Echelle", + "width": "Largeur", + "height": "Hauteur", + "sampler": "Echantillonneur", + "seed": "Graine", + "randomizeSeed": "Graine Aléatoire", + "shuffle": "Mélanger", + "noiseThreshold": "Seuil de Bruit", + "perlinNoise": "Bruit de Perlin", + "variations": "Variations", + "variationAmount": "Montant de Variation", + "seedWeights": "Poids des Graines", + "faceRestoration": "Restauration de Visage", + "restoreFaces": "Restaurer les Visages", + "type": "Type", + "strength": "Force", + "upscaling": "Agrandissement", + "upscale": "Agrandir", + "upscaleImage": "Image en Agrandissement", + "scale": "Echelle", + "otherOptions": "Autres Options", + "seamlessTiling": "Carreau Sans Joint", + "hiresOptim": "Optimisation Haute Résolution", + "imageFit": "Ajuster Image Initiale à la Taille de Sortie", + "codeformerFidelity": "Fidélité", + "seamSize": "Taille des Joints", + "seamBlur": "Flou des Joints", + "seamStrength": "Force des Joints", + "seamSteps": "Etapes des Joints", + "scaleBeforeProcessing": "Echelle Avant Traitement", + "scaledWidth": "Larg. Échelle", + "scaledHeight": "Haut. Échelle", + "infillMethod": "Méthode de Remplissage", + "tileSize": "Taille des Tuiles", + "boundingBoxHeader": "Boîte Englobante", + "seamCorrectionHeader": "Correction des Joints", + "infillScalingHeader": "Remplissage et Mise à l'Échelle", + "img2imgStrength": "Force de l'Image à l'Image", + "toggleLoopback": "Activer/Désactiver la Boucle", + "invoke": "Invoker", + "cancel": "Annuler", + "promptPlaceholder": "Tapez le prompt ici. [tokens négatifs], (poids positif)++, (poids négatif)--, swap et blend sont disponibles (voir les docs)", + "sendTo": "Envoyer à", + "sendToImg2Img": "Envoyer à Image à Image", + "sendToUnifiedCanvas": "Envoyer au Canvas Unifié", + "copyImage": "Copier Image", + "copyImageToLink": "Copier l'Image en Lien", + "downloadImage": "Télécharger Image", + "openInViewer": "Ouvrir dans le visualiseur", + "closeViewer": "Fermer le visualiseur", + "usePrompt": "Utiliser la suggestion", + "useSeed": "Utiliser la graine", + "useAll": "Tout utiliser", + "useInitImg": "Utiliser l'image initiale", + "info": "Info", + "deleteImage": "Supprimer l'image", + "initialImage": "Image initiale", + "showOptionsPanel": "Afficher le panneau d'options" +} diff --git a/invokeai/frontend/dist/locales/settings/fr.json b/invokeai/frontend/dist/locales/settings/fr.json index 0967ef424b..62e5708a25 100644 --- a/invokeai/frontend/dist/locales/settings/fr.json +++ b/invokeai/frontend/dist/locales/settings/fr.json @@ -1 +1,13 @@ -{} +{ +"models": "Modèles", +"displayInProgress": "Afficher les images en cours", +"saveSteps": "Enregistrer les images tous les n étapes", +"confirmOnDelete": "Confirmer la suppression", +"displayHelpIcons": "Afficher les icônes d'aide", +"useCanvasBeta": "Utiliser la mise en page bêta de Canvas", +"enableImageDebugging": "Activer le débogage d'image", +"resetWebUI": "Réinitialiser l'interface Web", +"resetWebUIDesc1": "Réinitialiser l'interface Web ne réinitialise que le cache local du navigateur de vos images et de vos paramètres enregistrés. Cela n'efface pas les images du disque.", +"resetWebUIDesc2": "Si les images ne s'affichent pas dans la galerie ou si quelque chose d'autre ne fonctionne pas, veuillez essayer de réinitialiser avant de soumettre une demande sur GitHub.", +"resetComplete": "L'interface Web a été réinitialisée. Rafraîchissez la page pour recharger." +} diff --git a/invokeai/frontend/dist/locales/toast/fr.json b/invokeai/frontend/dist/locales/toast/fr.json index 0967ef424b..d519f38bb4 100644 --- a/invokeai/frontend/dist/locales/toast/fr.json +++ b/invokeai/frontend/dist/locales/toast/fr.json @@ -1 +1,32 @@ -{} +{ + "tempFoldersEmptied": "Dossiers temporaires vidés", + "uploadFailed": "Téléchargement échoué", + "uploadFailedMultipleImagesDesc": "Plusieurs images collées, peut uniquement télécharger une image à la fois", + "uploadFailedUnableToLoadDesc": "Impossible de charger le fichier", + "downloadImageStarted": "Téléchargement de l'image démarré", + "imageCopied": "Image copiée", + "imageLinkCopied": "Lien d'image copié", + "imageNotLoaded": "Aucune image chargée", + "imageNotLoadedDesc": "Aucune image trouvée pour envoyer à module d'image", + "imageSavedToGallery": "Image enregistrée dans la galerie", + "canvasMerged": "Canvas fusionné", + "sentToImageToImage": "Envoyé à Image à Image", + "sentToUnifiedCanvas": "Envoyé à Canvas unifié", + "parametersSet": "Paramètres définis", + "parametersNotSet": "Paramètres non définis", + "parametersNotSetDesc": "Aucune métadonnée trouvée pour cette image.", + "parametersFailed": "Problème de chargement des paramètres", + "parametersFailedDesc": "Impossible de charger l'image d'initiation.", + "seedSet": "Graine définie", + "seedNotSet": "Graine non définie", + "seedNotSetDesc": "Impossible de trouver la graine pour cette image.", + "promptSet": "Invite définie", + "promptNotSet": "Invite non définie", + "promptNotSetDesc": "Impossible de trouver l'invite pour cette image.", + "upscalingFailed": "Échec de la mise à l'échelle", + "faceRestoreFailed": "Échec de la restauration du visage", + "metadataLoadFailed": "Échec du chargement des métadonnées", + "initialImageSet": "Image initiale définie", + "initialImageNotSet": "Image initiale non définie", + "initialImageNotSetDesc": "Impossible de charger l'image initiale" +} diff --git a/invokeai/frontend/dist/locales/tooltip/fr.json b/invokeai/frontend/dist/locales/tooltip/fr.json new file mode 100644 index 0000000000..38b0f9d61c --- /dev/null +++ b/invokeai/frontend/dist/locales/tooltip/fr.json @@ -0,0 +1,15 @@ +{ + "feature": { + "prompt": "Ceci est le champ prompt. Le prompt inclut des objets de génération et des termes stylistiques. Vous pouvez également ajouter un poids (importance du jeton) dans le prompt, mais les commandes CLI et les paramètres ne fonctionneront pas.", + "gallery": "La galerie affiche les générations à partir du dossier de sortie à mesure qu'elles sont créées. Les paramètres sont stockés dans des fichiers et accessibles via le menu contextuel.", + "other": "Ces options activent des modes de traitement alternatifs pour Invoke. 'Tuilage seamless' créera des motifs répétitifs dans la sortie. 'Haute résolution' est la génération en deux étapes avec img2img: utilisez ce paramètre lorsque vous souhaitez une image plus grande et plus cohérente sans artefacts. Cela prendra plus de temps que d'habitude txt2img.", + "seed": "La valeur de grain affecte le bruit initial à partir duquel l'image est formée. Vous pouvez utiliser les graines déjà existantes provenant d'images précédentes. 'Seuil de bruit' est utilisé pour atténuer les artefacts à des valeurs CFG élevées (essayez la plage de 0 à 10), et Perlin pour ajouter du bruit Perlin pendant la génération: les deux servent à ajouter de la variété à vos sorties.", + "variations": "Essayez une variation avec une valeur comprise entre 0,1 et 1,0 pour changer le résultat pour une graine donnée. Des variations intéressantes de la graine sont entre 0,1 et 0,3.", + "upscale": "Utilisez ESRGAN pour agrandir l'image immédiatement après la génération.", + "faceCorrection": "Correction de visage avec GFPGAN ou Codeformer: l'algorithme détecte les visages dans l'image et corrige tout défaut. La valeur élevée changera plus l'image, ce qui donnera des visages plus attirants. Codeformer avec une fidélité plus élevée préserve l'image originale au prix d'une correction de visage plus forte.", + "imageToImage": "Image to Image charge n'importe quelle image en tant qu'initiale, qui est ensuite utilisée pour générer une nouvelle avec le prompt. Plus la valeur est élevée, plus l'image de résultat changera. Des valeurs de 0,0 à 1,0 sont possibles, la plage recommandée est de 0,25 à 0,75", + "boundingBox": "La boîte englobante est la même que les paramètres Largeur et Hauteur pour Texte à Image ou Image à Image. Seulement la zone dans la boîte sera traitée.", + "seamCorrection": "Contrôle la gestion des coutures visibles qui se produisent entre les images générées sur la toile.", + "infillAndScaling": "Gérer les méthodes de remplissage (utilisées sur les zones masquées ou effacées de la toile) et le redimensionnement (utile pour les petites tailles de boîte englobante)." + } +} diff --git a/invokeai/frontend/dist/locales/unifiedcanvas/fr.json b/invokeai/frontend/dist/locales/unifiedcanvas/fr.json index 0967ef424b..b0ee7acfc2 100644 --- a/invokeai/frontend/dist/locales/unifiedcanvas/fr.json +++ b/invokeai/frontend/dist/locales/unifiedcanvas/fr.json @@ -1 +1,59 @@ -{} +{ + "layer": "Couche", + "base": "Base", + "mask": "Masque", + "maskingOptions": "Options de masquage", + "enableMask": "Activer le masque", + "preserveMaskedArea": "Préserver la zone masquée", + "clearMask": "Effacer le masque", + "brush": "Pinceau", + "eraser": "Gomme", + "fillBoundingBox": "Remplir la boîte englobante", + "eraseBoundingBox": "Effacer la boîte englobante", + "colorPicker": "Sélecteur de couleur", + "brushOptions": "Options de pinceau", + "brushSize": "Taille", + "move": "Déplacer", + "resetView": "Réinitialiser la vue", + "mergeVisible": "Fusionner les visibles", + "saveToGallery": "Enregistrer dans la galerie", + "copyToClipboard": "Copier dans le presse-papiers", + "downloadAsImage": "Télécharger en tant qu'image", + "undo": "Annuler", + "redo": "Refaire", + "clearCanvas": "Effacer le canvas", + "canvasSettings": "Paramètres du canvas", + "showIntermediates": "Afficher les intermédiaires", + "showGrid": "Afficher la grille", + "snapToGrid": "Aligner sur la grille", + "darkenOutsideSelection": "Assombrir à l'extérieur de la sélection", + "autoSaveToGallery": "Enregistrement automatique dans la galerie", + "saveBoxRegionOnly": "Enregistrer uniquement la région de la boîte", + "limitStrokesToBox": "Limiter les traits à la boîte", + "showCanvasDebugInfo": "Afficher les informations de débogage du canvas", + "clearCanvasHistory": "Effacer l'historique du canvas", + "clearHistory": "Effacer l'historique", + "clearCanvasHistoryMessage": "Effacer l'historique du canvas laisse votre canvas actuel intact, mais efface de manière irréversible l'historique annuler et refaire.", + "clearCanvasHistoryConfirm": "Êtes-vous sûr de vouloir effacer l'historique du canvas?", + "emptyTempImageFolder": "Vider le dossier d'images temporaires", + "emptyFolder": "Vider le dossier", + "emptyTempImagesFolderMessage": "Vider le dossier d'images temporaires réinitialise également complètement le canvas unifié. Cela inclut tout l'historique annuler/refaire, les images dans la zone de mise en attente et la couche de base du canvas.", + "emptyTempImagesFolderConfirm": "Êtes-vous sûr de vouloir vider le dossier temporaire?", + "activeLayer": "Calque actif", + "canvasScale": "Échelle du canevas", + "boundingBox": "Boîte englobante", + "scaledBoundingBox": "Boîte englobante mise à l'échelle", + "boundingBoxPosition": "Position de la boîte englobante", + "canvasDimensions": "Dimensions du canevas", + "canvasPosition": "Position du canevas", + "cursorPosition": "Position du curseur", + "previous": "Précédent", + "next": "Suivant", + "accept": "Accepter", + "showHide": "Afficher/Masquer", + "discardAll": "Tout abandonner", + "betaClear": "Effacer", + "betaDarkenOutside": "Assombrir à l'extérieur", + "betaLimitToBox": "Limiter à la boîte", + "betaPreserveMasked": "Conserver masqué" +} diff --git a/invokeai/frontend/public/locales/common/fr.json b/invokeai/frontend/public/locales/common/fr.json index 0967ef424b..f276a91644 100644 --- a/invokeai/frontend/public/locales/common/fr.json +++ b/invokeai/frontend/public/locales/common/fr.json @@ -1 +1,62 @@ -{} +{ + "hotkeysLabel": "Raccourcis clavier", + "themeLabel": "Thème", + "languagePickerLabel": "Sélecteur de langue", + "reportBugLabel": "Signaler un bug", + "githubLabel": "Github", + "discordLabel": "Discord", + "settingsLabel": "Paramètres", + "darkTheme": "Sombre", + "lightTheme": "Clair", + "greenTheme": "Vert", + "langEnglish": "Anglais", + "langRussian": "Russe", + "langItalian": "Italien", + "langBrPortuguese": "Portugais (Brésilien)", + "langGerman": "Allemand", + "langPortuguese": "Portugais", + "langFrench": "Français", + "langPolish": "Polonais", + "langSimplifiedChinese": "Chinois simplifié", + "langSpanish": "Espagnol", + "langJapanese": "Japonais", + "langDutch": "Néerlandais", + "text2img": "Texte en image", + "img2img": "Image en image", + "unifiedCanvas": "Canvas unifié", + "nodes": "Nœuds", + "nodesDesc": "Un système basé sur les nœuds pour la génération d'images est actuellement en développement. Restez à l'écoute pour des mises à jour à ce sujet.", + "postProcessing": "Post-traitement", + "postProcessDesc1": "Invoke AI offre une grande variété de fonctionnalités de post-traitement. Le redimensionnement d'images et la restauration de visages sont déjà disponibles dans la WebUI. Vous pouvez y accéder à partir du menu Options avancées des onglets Texte en image et Image en image. Vous pouvez également traiter les images directement en utilisant les boutons d'action d'image ci-dessus l'affichage d'image actuel ou dans le visualiseur.", + "postProcessDesc2": "Une interface utilisateur dédiée sera bientôt disponible pour faciliter les workflows de post-traitement plus avancés.", + "postProcessDesc3": "L'interface en ligne de commande d'Invoke AI offre diverses autres fonctionnalités, notamment Embiggen.", + "training": "Formation", + "trainingDesc1": "Un workflow dédié pour former vos propres embeddings et checkpoints en utilisant Textual Inversion et Dreambooth depuis l'interface web.", + "trainingDesc2": "InvokeAI prend déjà en charge la formation d'embeddings personnalisés en utilisant Textual Inversion en utilisant le script principal.", + "upload": "Télécharger", + "close": "Fermer", + "load": "Charger", + "back": "Retour", + "statusConnected": "Connecté", + "statusDisconnected": "Déconnecté", + "statusError": "Erreur", + "statusPreparing": "Préparation", + "statusProcessingCanceled": "Traitement Annulé", + "statusProcessingComplete": "Traitement Terminé", + "statusGenerating": "Génération", + "statusGeneratingTextToImage": "Génération Texte vers Image", + "statusGeneratingImageToImage": "Génération Image vers Image", + "statusGeneratingInpainting": "Génération de Réparation", + "statusGeneratingOutpainting": "Génération de Completion", + "statusGenerationComplete": "Génération Terminée", + "statusIterationComplete": "Itération Terminée", + "statusSavingImage": "Sauvegarde de l'Image", + "statusRestoringFaces": "Restauration des Visages", + "statusRestoringFacesGFPGAN": "Restauration des Visages (GFPGAN)", + "statusRestoringFacesCodeFormer": "Restauration des Visages (CodeFormer)", + "statusUpscaling": "Mise à Échelle", + "statusUpscalingESRGAN": "Mise à Échelle (ESRGAN)", + "statusLoadingModel": "Chargement du Modèle", + "statusModelChanged": "Modèle Changé" + +} diff --git a/invokeai/frontend/public/locales/gallery/fr.json b/invokeai/frontend/public/locales/gallery/fr.json index 0967ef424b..fec4f2079f 100644 --- a/invokeai/frontend/public/locales/gallery/fr.json +++ b/invokeai/frontend/public/locales/gallery/fr.json @@ -1 +1,16 @@ -{} +{ + "generations": "Générations", + "showGenerations": "Afficher les générations", + "uploads": "Téléchargements", + "showUploads": "Afficher les téléchargements", + "galleryImageSize": "Taille de l'image", + "galleryImageResetSize": "Réinitialiser la taille", + "gallerySettings": "Paramètres de la galerie", + "maintainAspectRatio": "Maintenir le rapport d'aspect", + "autoSwitchNewImages": "Basculer automatiquement vers de nouvelles images", + "singleColumnLayout": "Mise en page en colonne unique", + "pinGallery": "Épingler la galerie", + "allImagesLoaded": "Toutes les images chargées", + "loadMore": "Charger plus", + "noImagesInGallery": "Aucune image dans la galerie" +} diff --git a/invokeai/frontend/public/locales/hotkeys/fr.json b/invokeai/frontend/public/locales/hotkeys/fr.json index 0967ef424b..ceabe0dcfc 100644 --- a/invokeai/frontend/public/locales/hotkeys/fr.json +++ b/invokeai/frontend/public/locales/hotkeys/fr.json @@ -1 +1,207 @@ -{} +{ + "keyboardShortcuts": "Raccourcis clavier", + "appHotkeys": "Raccourcis de l'application", + "GeneralHotkeys": "Raccourcis généraux", + "galleryHotkeys": "Raccourcis de la galerie", + "unifiedCanvasHotkeys": "Raccourcis du Canvas unifié", + "invoke": { + "title": "Invoquer", + "desc": "Générer une image" + }, + "cancel": { + "title": "Annuler", + "desc": "Annuler la génération d'image" + }, + "focusPrompt": { + "title": "Prompt de Focus", + "desc": "Mettre en focus la zone de saisie de la commande" + }, + "toggleOptions": { + "title": "Basculer Options", + "desc": "Ouvrir et fermer le panneau d'options" + }, + "pinOptions": { + "title": "Epingler Options", + "desc": "Epingler le panneau d'options" + }, + "toggleViewer": { + "title": "Basculer Visionneuse", + "desc": "Ouvrir et fermer la visionneuse d'image" + }, + "toggleGallery": { + "title": "Basculer Galerie", + "desc": "Ouvrir et fermer le tiroir de galerie" + }, + "maximizeWorkSpace": { + "title": "Maximiser Espace de travail", + "desc": "Fermer les panneaux et maximiser la zone de travail" + }, + "changeTabs": { + "title": "Changer d'onglets", + "desc": "Passer à un autre espace de travail" + }, + "consoleToggle": { + "title": "Bascule de la console", + "desc": "Ouvrir et fermer la console" + }, + "setPrompt": { + "title": "Définir le prompt", + "desc": "Utiliser le prompt de l'image actuelle" + }, + "setSeed": { + "title": "Définir la graine", + "desc": "Utiliser la graine de l'image actuelle" + }, + "setParameters": { + "title": "Définir les paramètres", + "desc": "Utiliser tous les paramètres de l'image actuelle" + }, + "restoreFaces": { + "title": "Restaurer les faces", + "desc": "Restaurer l'image actuelle" + }, + "upscale": { + "title": "Agrandir", + "desc": "Agrandir l'image actuelle" + }, + "showInfo": { + "title": "Afficher les informations", + "desc": "Afficher les informations de métadonnées de l'image actuelle" + }, + "sendToImageToImage": { + "title": "Envoyer à l'image à l'image", + "desc": "Envoyer l'image actuelle à l'image à l'image" + }, + "deleteImage": { + "title": "Supprimer l'image", + "desc": "Supprimer l'image actuelle" + }, + "closePanels": { + "title": "Fermer les panneaux", + "desc": "Fermer les panneaux ouverts" + }, + "previousImage": { + "title": "Image précédente", + "desc": "Afficher l'image précédente dans la galerie" + }, + "nextImage": { + "title": "Image suivante", + "desc": "Afficher l'image suivante dans la galerie" + }, + "toggleGalleryPin": { + "title": "Activer/désactiver l'épinglage de la galerie", + "desc": "Épingle ou dépingle la galerie à l'interface utilisateur" + }, + "increaseGalleryThumbSize": { + "title": "Augmenter la taille des miniatures de la galerie", + "desc": "Augmente la taille des miniatures de la galerie" + }, + "decreaseGalleryThumbSize": { + "title": "Diminuer la taille des miniatures de la galerie", + "desc": "Diminue la taille des miniatures de la galerie" + }, + "selectBrush": { + "title": "Sélectionner un pinceau", + "desc": "Sélectionne le pinceau de la toile" + }, + "selectEraser": { + "title": "Sélectionner un gomme", + "desc": "Sélectionne la gomme de la toile" + }, + "decreaseBrushSize": { + "title": "Diminuer la taille du pinceau", + "desc": "Diminue la taille du pinceau/gomme de la toile" + }, + "increaseBrushSize": { + "title": "Augmenter la taille du pinceau", + "desc": "Augmente la taille du pinceau/gomme de la toile" + }, + "decreaseBrushOpacity": { + "title": "Diminuer l'opacité du pinceau", + "desc": "Diminue l'opacité du pinceau de la toile" + }, + "increaseBrushOpacity": { + "title": "Augmenter l'opacité du pinceau", + "desc": "Augmente l'opacité du pinceau de la toile" + }, + "moveTool": { + "title": "Outil de déplacement", + "desc": "Permet la navigation sur la toile" + }, + "fillBoundingBox": { + "title": "Remplir la boîte englobante", + "desc": "Remplit la boîte englobante avec la couleur du pinceau" + }, + "eraseBoundingBox": { + "title": "Effacer la boîte englobante", + "desc": "Efface la zone de la boîte englobante" + }, + "colorPicker": { + "title": "Sélectionnez le sélecteur de couleur", + "desc": "Sélectionne le sélecteur de couleur de la toile" + }, + "toggleSnap": { + "title": "Basculer Snap", + "desc": "Basculer Snap à la grille" + }, + "quickToggleMove": { + "title": "Basculer rapidement déplacer", + "desc": "Basculer temporairement le mode Déplacer" + }, + "toggleLayer": { + "title": "Basculer la couche", + "desc": "Basculer la sélection de la couche masque/base" + }, + "clearMask": { + "title": "Effacer le masque", + "desc": "Effacer entièrement le masque" + }, + "hideMask": { + "title": "Masquer le masque", + "desc": "Masquer et démasquer le masque" + }, + "showHideBoundingBox": { + "title": "Afficher/Masquer la boîte englobante", + "desc": "Basculer la visibilité de la boîte englobante" + }, + "mergeVisible": { + "title": "Fusionner visible", + "desc": "Fusionner toutes les couches visibles de la toile" + }, + "saveToGallery": { + "title": "Enregistrer dans la galerie", + "desc": "Enregistrer la toile actuelle dans la galerie" + }, + "copyToClipboard": { + "title": "Copier dans le presse-papiers", + "desc": "Copier la toile actuelle dans le presse-papiers" + }, + "downloadImage": { + "title": "Télécharger l'image", + "desc": "Télécharger la toile actuelle" + }, + "undoStroke": { + "title": "Annuler le trait", + "desc": "Annuler un coup de pinceau" + }, + "redoStroke": { + "title": "Rétablir le trait", + "desc": "Rétablir un coup de pinceau" + }, + "resetView": { + "title": "Réinitialiser la vue", + "desc": "Réinitialiser la vue de la toile" + }, + "previousStagingImage": { + "title": "Image de mise en scène précédente", + "desc": "Image précédente de la zone de mise en scène" + }, + "nextStagingImage": { + "title": "Image de mise en scène suivante", + "desc": "Image suivante de la zone de mise en scène" + }, + "acceptStagingImage": { + "title": "Accepter l'image de mise en scène", + "desc": "Accepter l'image actuelle de la zone de mise en scène" + } +} diff --git a/invokeai/frontend/public/locales/modelmanager/fr.json b/invokeai/frontend/public/locales/modelmanager/fr.json new file mode 100644 index 0000000000..5884893037 --- /dev/null +++ b/invokeai/frontend/public/locales/modelmanager/fr.json @@ -0,0 +1,68 @@ +{ + "modelManager": "Gestionnaire de modèle", + "model": "Modèle", + "allModels": "Tous les modèles", + "checkpointModels": "Points de contrôle", + "diffusersModels": "Diffuseurs", + "safetensorModels": "SafeTensors", + "modelAdded": "Modèle ajouté", + "modelUpdated": "Modèle mis à jour", + "modelEntryDeleted": "Entrée de modèle supprimée", + "cannotUseSpaces": "Ne peut pas utiliser d'espaces", + "addNew": "Ajouter un nouveau", + "addNewModel": "Ajouter un nouveau modèle", + "addCheckpointModel": "Ajouter un modèle de point de contrôle / SafeTensor", + "addDiffuserModel": "Ajouter des diffuseurs", + "addManually": "Ajouter manuellement", + "manual": "Manuel", + "name": "Nom", + "nameValidationMsg": "Entrez un nom pour votre modèle", + "description": "Description", + "descriptionValidationMsg": "Ajoutez une description pour votre modèle", + "config": "Config", + "configValidationMsg": "Chemin vers le fichier de configuration de votre modèle.", + "modelLocation": "Emplacement du modèle", + "modelLocationValidationMsg": "Chemin vers où votre modèle est situé localement.", + "repo_id": "ID de dépôt", + "repoIDValidationMsg": "Dépôt en ligne de votre modèle", + "vaeLocation": "Emplacement VAE", + "vaeLocationValidationMsg": "Chemin vers où votre VAE est situé.", + "vaeRepoID": "ID de dépôt VAE", + "vaeRepoIDValidationMsg": "Dépôt en ligne de votre VAE", + "width": "Largeur", + "widthValidationMsg": "Largeur par défaut de votre modèle.", + "height": "Hauteur", + "heightValidationMsg": "Hauteur par défaut de votre modèle.", + "addModel": "Ajouter un modèle", + "updateModel": "Mettre à jour le modèle", + "availableModels": "Modèles disponibles", + "search": "Rechercher", + "load": "Charger", + "active": "actif", + "notLoaded": "non chargé", + "cached": "en cache", + "checkpointFolder": "Dossier de point de contrôle", + "clearCheckpointFolder": "Effacer le dossier de point de contrôle", + "findModels": "Trouver des modèles", + "scanAgain": "Scanner à nouveau", + "modelsFound": "Modèles trouvés", + "selectFolder": "Sélectionner un dossier", + "selected": "Sélectionné", + "selectAll": "Tout sélectionner", + "deselectAll": "Tout désélectionner", + "showExisting": "Afficher existant", + "addSelected": "Ajouter sélectionné", + "modelExists": "Modèle existant", + "selectAndAdd": "Sélectionner et ajouter les modèles listés ci-dessous", + "noModelsFound": "Aucun modèle trouvé", + "delete": "Supprimer", + "deleteModel": "Supprimer le modèle", + "deleteConfig": "Supprimer la configuration", + "deleteMsg1": "Êtes-vous sûr de vouloir supprimer cette entrée de modèle dans InvokeAI?", + "deleteMsg2": "Cela n'effacera pas le fichier de point de contrôle du modèle de votre disque. Vous pouvez les réajouter si vous le souhaitez.", + "formMessageDiffusersModelLocation": "Emplacement du modèle de diffuseurs", + "formMessageDiffusersModelLocationDesc": "Veuillez en entrer au moins un.", + "formMessageDiffusersVAELocation": "Emplacement VAE", + "formMessageDiffusersVAELocationDesc": "Si non fourni, InvokeAI recherchera le fichier VAE à l'emplacement du modèle donné ci-dessus." + +} diff --git a/invokeai/frontend/public/locales/options/fr.json b/invokeai/frontend/public/locales/options/fr.json index 0967ef424b..fda35b2ac6 100644 --- a/invokeai/frontend/public/locales/options/fr.json +++ b/invokeai/frontend/public/locales/options/fr.json @@ -1 +1,62 @@ -{} +{ + "images": "Images", + "steps": "Etapes", + "cfgScale": "CFG Echelle", + "width": "Largeur", + "height": "Hauteur", + "sampler": "Echantillonneur", + "seed": "Graine", + "randomizeSeed": "Graine Aléatoire", + "shuffle": "Mélanger", + "noiseThreshold": "Seuil de Bruit", + "perlinNoise": "Bruit de Perlin", + "variations": "Variations", + "variationAmount": "Montant de Variation", + "seedWeights": "Poids des Graines", + "faceRestoration": "Restauration de Visage", + "restoreFaces": "Restaurer les Visages", + "type": "Type", + "strength": "Force", + "upscaling": "Agrandissement", + "upscale": "Agrandir", + "upscaleImage": "Image en Agrandissement", + "scale": "Echelle", + "otherOptions": "Autres Options", + "seamlessTiling": "Carreau Sans Joint", + "hiresOptim": "Optimisation Haute Résolution", + "imageFit": "Ajuster Image Initiale à la Taille de Sortie", + "codeformerFidelity": "Fidélité", + "seamSize": "Taille des Joints", + "seamBlur": "Flou des Joints", + "seamStrength": "Force des Joints", + "seamSteps": "Etapes des Joints", + "scaleBeforeProcessing": "Echelle Avant Traitement", + "scaledWidth": "Larg. Échelle", + "scaledHeight": "Haut. Échelle", + "infillMethod": "Méthode de Remplissage", + "tileSize": "Taille des Tuiles", + "boundingBoxHeader": "Boîte Englobante", + "seamCorrectionHeader": "Correction des Joints", + "infillScalingHeader": "Remplissage et Mise à l'Échelle", + "img2imgStrength": "Force de l'Image à l'Image", + "toggleLoopback": "Activer/Désactiver la Boucle", + "invoke": "Invoker", + "cancel": "Annuler", + "promptPlaceholder": "Tapez le prompt ici. [tokens négatifs], (poids positif)++, (poids négatif)--, swap et blend sont disponibles (voir les docs)", + "sendTo": "Envoyer à", + "sendToImg2Img": "Envoyer à Image à Image", + "sendToUnifiedCanvas": "Envoyer au Canvas Unifié", + "copyImage": "Copier Image", + "copyImageToLink": "Copier l'Image en Lien", + "downloadImage": "Télécharger Image", + "openInViewer": "Ouvrir dans le visualiseur", + "closeViewer": "Fermer le visualiseur", + "usePrompt": "Utiliser la suggestion", + "useSeed": "Utiliser la graine", + "useAll": "Tout utiliser", + "useInitImg": "Utiliser l'image initiale", + "info": "Info", + "deleteImage": "Supprimer l'image", + "initialImage": "Image initiale", + "showOptionsPanel": "Afficher le panneau d'options" +} diff --git a/invokeai/frontend/public/locales/settings/fr.json b/invokeai/frontend/public/locales/settings/fr.json index 0967ef424b..62e5708a25 100644 --- a/invokeai/frontend/public/locales/settings/fr.json +++ b/invokeai/frontend/public/locales/settings/fr.json @@ -1 +1,13 @@ -{} +{ +"models": "Modèles", +"displayInProgress": "Afficher les images en cours", +"saveSteps": "Enregistrer les images tous les n étapes", +"confirmOnDelete": "Confirmer la suppression", +"displayHelpIcons": "Afficher les icônes d'aide", +"useCanvasBeta": "Utiliser la mise en page bêta de Canvas", +"enableImageDebugging": "Activer le débogage d'image", +"resetWebUI": "Réinitialiser l'interface Web", +"resetWebUIDesc1": "Réinitialiser l'interface Web ne réinitialise que le cache local du navigateur de vos images et de vos paramètres enregistrés. Cela n'efface pas les images du disque.", +"resetWebUIDesc2": "Si les images ne s'affichent pas dans la galerie ou si quelque chose d'autre ne fonctionne pas, veuillez essayer de réinitialiser avant de soumettre une demande sur GitHub.", +"resetComplete": "L'interface Web a été réinitialisée. Rafraîchissez la page pour recharger." +} diff --git a/invokeai/frontend/public/locales/toast/fr.json b/invokeai/frontend/public/locales/toast/fr.json index 0967ef424b..d519f38bb4 100644 --- a/invokeai/frontend/public/locales/toast/fr.json +++ b/invokeai/frontend/public/locales/toast/fr.json @@ -1 +1,32 @@ -{} +{ + "tempFoldersEmptied": "Dossiers temporaires vidés", + "uploadFailed": "Téléchargement échoué", + "uploadFailedMultipleImagesDesc": "Plusieurs images collées, peut uniquement télécharger une image à la fois", + "uploadFailedUnableToLoadDesc": "Impossible de charger le fichier", + "downloadImageStarted": "Téléchargement de l'image démarré", + "imageCopied": "Image copiée", + "imageLinkCopied": "Lien d'image copié", + "imageNotLoaded": "Aucune image chargée", + "imageNotLoadedDesc": "Aucune image trouvée pour envoyer à module d'image", + "imageSavedToGallery": "Image enregistrée dans la galerie", + "canvasMerged": "Canvas fusionné", + "sentToImageToImage": "Envoyé à Image à Image", + "sentToUnifiedCanvas": "Envoyé à Canvas unifié", + "parametersSet": "Paramètres définis", + "parametersNotSet": "Paramètres non définis", + "parametersNotSetDesc": "Aucune métadonnée trouvée pour cette image.", + "parametersFailed": "Problème de chargement des paramètres", + "parametersFailedDesc": "Impossible de charger l'image d'initiation.", + "seedSet": "Graine définie", + "seedNotSet": "Graine non définie", + "seedNotSetDesc": "Impossible de trouver la graine pour cette image.", + "promptSet": "Invite définie", + "promptNotSet": "Invite non définie", + "promptNotSetDesc": "Impossible de trouver l'invite pour cette image.", + "upscalingFailed": "Échec de la mise à l'échelle", + "faceRestoreFailed": "Échec de la restauration du visage", + "metadataLoadFailed": "Échec du chargement des métadonnées", + "initialImageSet": "Image initiale définie", + "initialImageNotSet": "Image initiale non définie", + "initialImageNotSetDesc": "Impossible de charger l'image initiale" +} diff --git a/invokeai/frontend/public/locales/tooltip/fr.json b/invokeai/frontend/public/locales/tooltip/fr.json new file mode 100644 index 0000000000..38b0f9d61c --- /dev/null +++ b/invokeai/frontend/public/locales/tooltip/fr.json @@ -0,0 +1,15 @@ +{ + "feature": { + "prompt": "Ceci est le champ prompt. Le prompt inclut des objets de génération et des termes stylistiques. Vous pouvez également ajouter un poids (importance du jeton) dans le prompt, mais les commandes CLI et les paramètres ne fonctionneront pas.", + "gallery": "La galerie affiche les générations à partir du dossier de sortie à mesure qu'elles sont créées. Les paramètres sont stockés dans des fichiers et accessibles via le menu contextuel.", + "other": "Ces options activent des modes de traitement alternatifs pour Invoke. 'Tuilage seamless' créera des motifs répétitifs dans la sortie. 'Haute résolution' est la génération en deux étapes avec img2img: utilisez ce paramètre lorsque vous souhaitez une image plus grande et plus cohérente sans artefacts. Cela prendra plus de temps que d'habitude txt2img.", + "seed": "La valeur de grain affecte le bruit initial à partir duquel l'image est formée. Vous pouvez utiliser les graines déjà existantes provenant d'images précédentes. 'Seuil de bruit' est utilisé pour atténuer les artefacts à des valeurs CFG élevées (essayez la plage de 0 à 10), et Perlin pour ajouter du bruit Perlin pendant la génération: les deux servent à ajouter de la variété à vos sorties.", + "variations": "Essayez une variation avec une valeur comprise entre 0,1 et 1,0 pour changer le résultat pour une graine donnée. Des variations intéressantes de la graine sont entre 0,1 et 0,3.", + "upscale": "Utilisez ESRGAN pour agrandir l'image immédiatement après la génération.", + "faceCorrection": "Correction de visage avec GFPGAN ou Codeformer: l'algorithme détecte les visages dans l'image et corrige tout défaut. La valeur élevée changera plus l'image, ce qui donnera des visages plus attirants. Codeformer avec une fidélité plus élevée préserve l'image originale au prix d'une correction de visage plus forte.", + "imageToImage": "Image to Image charge n'importe quelle image en tant qu'initiale, qui est ensuite utilisée pour générer une nouvelle avec le prompt. Plus la valeur est élevée, plus l'image de résultat changera. Des valeurs de 0,0 à 1,0 sont possibles, la plage recommandée est de 0,25 à 0,75", + "boundingBox": "La boîte englobante est la même que les paramètres Largeur et Hauteur pour Texte à Image ou Image à Image. Seulement la zone dans la boîte sera traitée.", + "seamCorrection": "Contrôle la gestion des coutures visibles qui se produisent entre les images générées sur la toile.", + "infillAndScaling": "Gérer les méthodes de remplissage (utilisées sur les zones masquées ou effacées de la toile) et le redimensionnement (utile pour les petites tailles de boîte englobante)." + } +} diff --git a/invokeai/frontend/public/locales/unifiedcanvas/fr.json b/invokeai/frontend/public/locales/unifiedcanvas/fr.json index 0967ef424b..b0ee7acfc2 100644 --- a/invokeai/frontend/public/locales/unifiedcanvas/fr.json +++ b/invokeai/frontend/public/locales/unifiedcanvas/fr.json @@ -1 +1,59 @@ -{} +{ + "layer": "Couche", + "base": "Base", + "mask": "Masque", + "maskingOptions": "Options de masquage", + "enableMask": "Activer le masque", + "preserveMaskedArea": "Préserver la zone masquée", + "clearMask": "Effacer le masque", + "brush": "Pinceau", + "eraser": "Gomme", + "fillBoundingBox": "Remplir la boîte englobante", + "eraseBoundingBox": "Effacer la boîte englobante", + "colorPicker": "Sélecteur de couleur", + "brushOptions": "Options de pinceau", + "brushSize": "Taille", + "move": "Déplacer", + "resetView": "Réinitialiser la vue", + "mergeVisible": "Fusionner les visibles", + "saveToGallery": "Enregistrer dans la galerie", + "copyToClipboard": "Copier dans le presse-papiers", + "downloadAsImage": "Télécharger en tant qu'image", + "undo": "Annuler", + "redo": "Refaire", + "clearCanvas": "Effacer le canvas", + "canvasSettings": "Paramètres du canvas", + "showIntermediates": "Afficher les intermédiaires", + "showGrid": "Afficher la grille", + "snapToGrid": "Aligner sur la grille", + "darkenOutsideSelection": "Assombrir à l'extérieur de la sélection", + "autoSaveToGallery": "Enregistrement automatique dans la galerie", + "saveBoxRegionOnly": "Enregistrer uniquement la région de la boîte", + "limitStrokesToBox": "Limiter les traits à la boîte", + "showCanvasDebugInfo": "Afficher les informations de débogage du canvas", + "clearCanvasHistory": "Effacer l'historique du canvas", + "clearHistory": "Effacer l'historique", + "clearCanvasHistoryMessage": "Effacer l'historique du canvas laisse votre canvas actuel intact, mais efface de manière irréversible l'historique annuler et refaire.", + "clearCanvasHistoryConfirm": "Êtes-vous sûr de vouloir effacer l'historique du canvas?", + "emptyTempImageFolder": "Vider le dossier d'images temporaires", + "emptyFolder": "Vider le dossier", + "emptyTempImagesFolderMessage": "Vider le dossier d'images temporaires réinitialise également complètement le canvas unifié. Cela inclut tout l'historique annuler/refaire, les images dans la zone de mise en attente et la couche de base du canvas.", + "emptyTempImagesFolderConfirm": "Êtes-vous sûr de vouloir vider le dossier temporaire?", + "activeLayer": "Calque actif", + "canvasScale": "Échelle du canevas", + "boundingBox": "Boîte englobante", + "scaledBoundingBox": "Boîte englobante mise à l'échelle", + "boundingBoxPosition": "Position de la boîte englobante", + "canvasDimensions": "Dimensions du canevas", + "canvasPosition": "Position du canevas", + "cursorPosition": "Position du curseur", + "previous": "Précédent", + "next": "Suivant", + "accept": "Accepter", + "showHide": "Afficher/Masquer", + "discardAll": "Tout abandonner", + "betaClear": "Effacer", + "betaDarkenOutside": "Assombrir à l'extérieur", + "betaLimitToBox": "Limiter à la boîte", + "betaPreserveMasked": "Conserver masqué" +} From dc6f6fcab7499e4137402d17dd8c55d0f31e22f4 Mon Sep 17 00:00:00 2001 From: Saifeddine Date: Tue, 7 Feb 2023 00:29:30 +0100 Subject: [PATCH 2/9] Added arabic locale files --- invokeai/frontend/dist/locales/common/ar.json | 61 ++++++ .../frontend/dist/locales/gallery/ar.json | 16 ++ .../frontend/dist/locales/hotkeys/ar.json | 207 ++++++++++++++++++ .../dist/locales/modelmanager/ar.json | 67 ++++++ .../frontend/dist/locales/options/ar.json | 62 ++++++ .../frontend/dist/locales/settings/ar.json | 13 ++ invokeai/frontend/dist/locales/toast/ar.json | 32 +++ .../frontend/dist/locales/tooltip/ar.json | 15 ++ .../dist/locales/unifiedcanvas/ar.json | 59 +++++ 9 files changed, 532 insertions(+) create mode 100644 invokeai/frontend/dist/locales/common/ar.json create mode 100644 invokeai/frontend/dist/locales/gallery/ar.json create mode 100644 invokeai/frontend/dist/locales/hotkeys/ar.json create mode 100644 invokeai/frontend/dist/locales/modelmanager/ar.json create mode 100644 invokeai/frontend/dist/locales/options/ar.json create mode 100644 invokeai/frontend/dist/locales/settings/ar.json create mode 100644 invokeai/frontend/dist/locales/toast/ar.json create mode 100644 invokeai/frontend/dist/locales/tooltip/ar.json create mode 100644 invokeai/frontend/dist/locales/unifiedcanvas/ar.json diff --git a/invokeai/frontend/dist/locales/common/ar.json b/invokeai/frontend/dist/locales/common/ar.json new file mode 100644 index 0000000000..be663b535b --- /dev/null +++ b/invokeai/frontend/dist/locales/common/ar.json @@ -0,0 +1,61 @@ +{ + "hotkeysLabel": "مفاتيح الأختصار", + "themeLabel": "الموضوع", + "languagePickerLabel": "منتقي اللغة", + "reportBugLabel": "بلغ عن خطأ", + "githubLabel": "Github", + "discordLabel": "Discord", + "settingsLabel": "إعدادات", + "darkTheme": "داكن", + "lightTheme": "فاتح", + "greenTheme": "أخضر", + "langEnglish": "الإنجليزية", + "langRussian": "روسي", + "langItalian": "إيطالي", + "langBrPortuguese": "البرتغالية (البرازيلية)", + "langGerman": "الألمانية", + "langPortuguese": "البرتغالية", + "langFrench": "الفرنسية", + "langPolish": "البولندية", + "langSimplifiedChinese": "الصينية المبسطة", + "langSpanish": "الإسبانية", + "langJapanese": "اليابانية", + "langDutch": "الهولندية", + "text2img": "نص إلى صورة", + "img2img": "صورة إلى صورة", + "unifiedCanvas": "لوحة موحدة", + "nodes": "عقد", + "nodesDesc": "نظام مبني على العقد لإنتاج الصور قيد التطوير حاليًا. تبقى على اتصال مع تحديثات حول هذه الميزة المذهلة.", + "postProcessing": "معالجة بعد الإصدار", + "postProcessDesc1": "Invoke AI توفر مجموعة واسعة من ميزات المعالجة بعد الإصدار. تحسين الصور واستعادة الوجوه متاحين بالفعل في واجهة الويب. يمكنك الوصول إليهم من الخيارات المتقدمة في قائمة الخيارات في علامة التبويب Text To Image و Image To Image. يمكن أيضًا معالجة الصور مباشرةً باستخدام أزرار الإجراء على الصورة فوق عرض الصورة الحالي أو في العارض.", + "postProcessDesc2": "سيتم إصدار واجهة رسومية مخصصة قريبًا لتسهيل عمليات المعالجة بعد الإصدار المتقدمة.", + "postProcessDesc3": "واجهة سطر الأوامر Invoke AI توفر ميزات أخرى عديدة بما في ذلك Embiggen.", + "training": "تدريب", + "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام Textual Inversion و Dreambooth من واجهة الويب.", + "trainingDesc2": "InvokeAI يدعم بالفعل تدريب تضمينات مخصصة باستخدام Textual Inversion باستخدام السكريبت الرئيسي.", + "upload": "رفع", + "close": "إغلاق", + "load": "تحميل", + "back": "الى الخلف", + "statusConnected": "متصل", + "statusDisconnected": "غير متصل", + "statusError": "خطأ", + "statusPreparing": "جاري التحضير", + "statusProcessingCanceled": "تم إلغاء المعالجة", + "statusProcessingComplete": "اكتمال المعالجة", + "statusGenerating": "جاري التوليد", + "statusGeneratingTextToImage": "جاري توليد النص إلى الصورة", + "statusGeneratingImageToImage": "جاري توليد الصورة إلى الصورة", + "statusGeneratingInpainting": "جاري توليد Inpainting", + "statusGeneratingOutpainting": "جاري توليد Outpainting", + "statusGenerationComplete": "اكتمال التوليد", + "statusIterationComplete": "اكتمال التكرار", + "statusSavingImage": "جاري حفظ الصورة", + "statusRestoringFaces": "جاري استعادة الوجوه", + "statusRestoringFacesGFPGAN": "تحسيت الوجوه (GFPGAN)", + "statusRestoringFacesCodeFormer": "تحسين الوجوه (CodeFormer)", + "statusUpscaling": "تحسين الحجم", + "statusUpscalingESRGAN": "تحسين الحجم (ESRGAN)", + "statusLoadingModel": "تحميل النموذج", + "statusModelChanged": "تغير النموذج" +} diff --git a/invokeai/frontend/dist/locales/gallery/ar.json b/invokeai/frontend/dist/locales/gallery/ar.json new file mode 100644 index 0000000000..090a034002 --- /dev/null +++ b/invokeai/frontend/dist/locales/gallery/ar.json @@ -0,0 +1,16 @@ +{ + "generations": "الأجيال", + "showGenerations": "عرض الأجيال", + "uploads": "التحميلات", + "showUploads": "عرض التحميلات", + "galleryImageSize": "حجم الصورة", + "galleryImageResetSize": "إعادة ضبط الحجم", + "gallerySettings": "إعدادات المعرض", + "maintainAspectRatio": "الحفاظ على نسبة الأبعاد", + "autoSwitchNewImages": "التبديل التلقائي إلى الصور الجديدة", + "singleColumnLayout": "تخطيط عمود واحد", + "pinGallery": "تثبيت المعرض", + "allImagesLoaded": "تم تحميل جميع الصور", + "loadMore": "تحميل المزيد", + "noImagesInGallery": "لا توجد صور في المعرض" +} diff --git a/invokeai/frontend/dist/locales/hotkeys/ar.json b/invokeai/frontend/dist/locales/hotkeys/ar.json new file mode 100644 index 0000000000..4a70ab2129 --- /dev/null +++ b/invokeai/frontend/dist/locales/hotkeys/ar.json @@ -0,0 +1,207 @@ +{ + "keyboardShortcuts": "مفاتيح الأزرار المختصرة", + "appHotkeys": "مفاتيح التطبيق", + "GeneralHotkeys": "مفاتيح عامة", + "galleryHotkeys": "مفاتيح المعرض", + "unifiedCanvasHotkeys": "مفاتيح الأوحدة Canvas", + "invoke": { + "title": "أدعو", + "desc": "إنشاء صورة" + }, + "cancel": { + "title": "إلغاء", + "desc": "إلغاء إنشاء الصورة" + }, + "focusPrompt": { + "title": "تركيز الإشعار", + "desc": "تركيز منطقة الإدخال الإشعار" + }, + "toggleOptions": { + "title": "تبديل الخيارات", + "desc": "فتح وإغلاق لوحة الخيارات" + }, + "pinOptions": { + "title": "خيارات التثبيت", + "desc": "ثبت لوحة الخيارات" + }, + "toggleViewer": { + "title": "تبديل العارض", + "desc": "فتح وإغلاق مشاهد الصور" + }, + "toggleGallery": { + "title": "تبديل المعرض", + "desc": "فتح وإغلاق درابزين المعرض" + }, + "maximizeWorkSpace": { + "title": "تكبير مساحة العمل", + "desc": "إغلاق اللوحات وتكبير مساحة العمل" + }, + "changeTabs": { + "title": "تغيير الألسنة", + "desc": "التبديل إلى مساحة عمل أخرى" + }, + "consoleToggle": { + "title": "تبديل الطرفية", + "desc": "فتح وإغلاق الطرفية" + }, + "setPrompt": { + "title": "ضبط التشعب", + "desc": "استخدم تشعب الصورة الحالية" + }, + "setSeed": { + "title": "ضبط البذور", + "desc": "استخدم بذور الصورة الحالية" + }, + "setParameters": { + "title": "ضبط المعلمات", + "desc": "استخدم جميع المعلمات الخاصة بالصورة الحالية" + }, + "restoreFaces": { + "title": "استعادة الوجوه", + "desc": "استعادة الصورة الحالية" + }, + "upscale": { + "title": "تحسين الحجم", + "desc": "تحسين حجم الصورة الحالية" + }, + "showInfo": { + "title": "عرض المعلومات", + "desc": "عرض معلومات البيانات الخاصة بالصورة الحالية" + }, + "sendToImageToImage": { + "title": "أرسل إلى صورة إلى صورة", + "desc": "أرسل الصورة الحالية إلى صورة إلى صورة" + }, + "deleteImage": { + "title": "حذف الصورة", + "desc": "حذف الصورة الحالية" + }, + "closePanels": { + "title": "أغلق اللوحات", + "desc": "يغلق اللوحات المفتوحة" + }, + "previousImage": { + "title": "الصورة السابقة", + "desc": "عرض الصورة السابقة في الصالة" + }, + "nextImage": { + "title": "الصورة التالية", + "desc": "عرض الصورة التالية في الصالة" + }, + "toggleGalleryPin": { + "title": "تبديل تثبيت الصالة", + "desc": "يثبت ويفتح تثبيت الصالة على الواجهة الرسومية" + }, + "increaseGalleryThumbSize": { + "title": "زيادة حجم صورة الصالة", + "desc": "يزيد حجم الصور المصغرة في الصالة" + }, + "decreaseGalleryThumbSize": { + "title": "انقاص حجم صورة الصالة", + "desc": "ينقص حجم الصور المصغرة في الصالة" + }, + "selectBrush": { + "title": "تحديد الفرشاة", + "desc": "يحدد الفرشاة على اللوحة" + }, + "selectEraser": { + "title": "تحديد الممحاة", + "desc": "يحدد الممحاة على اللوحة" + }, + "decreaseBrushSize": { + "title": "تصغير حجم الفرشاة", + "desc": "يصغر حجم الفرشاة/الممحاة على اللوحة" + }, + "increaseBrushSize": { + "title": "زيادة حجم الفرشاة", + "desc": "يزيد حجم فرشة اللوحة / الممحاة" + }, + "decreaseBrushOpacity": { + "title": "تخفيض شفافية الفرشاة", + "desc": "يخفض شفافية فرشة اللوحة" + }, + "increaseBrushOpacity": { + "title": "زيادة شفافية الفرشاة", + "desc": "يزيد شفافية فرشة اللوحة" + }, + "moveTool": { + "title": "أداة التحريك", + "desc": "يتيح التحرك في اللوحة" + }, + "fillBoundingBox": { + "title": "ملء الصندوق المحدد", + "desc": "يملأ الصندوق المحدد بلون الفرشاة" + }, + "eraseBoundingBox": { + "title": "محو الصندوق المحدد", + "desc": "يمحو منطقة الصندوق المحدد" + }, + "colorPicker": { + "title": "اختيار منتقي اللون", + "desc": "يختار منتقي اللون الخاص باللوحة" + }, + "toggleSnap": { + "title": "تبديل التأكيد", + "desc": "يبديل تأكيد الشبكة" + }, + "quickToggleMove": { + "title": "تبديل سريع للتحريك", + "desc": "يبديل مؤقتا وضع التحريك" + }, + "toggleLayer": { + "title": "تبديل الطبقة", + "desc": "يبديل إختيار الطبقة القناع / الأساسية" + }, + "clearMask": { + "title": "مسح القناع", + "desc": "مسح القناع بأكمله" + }, + "hideMask": { + "title": "إخفاء الكمامة", + "desc": "إخفاء وإظهار الكمامة" + }, + "showHideBoundingBox": { + "title": "إظهار / إخفاء علبة التحديد", + "desc": "تبديل ظهور علبة التحديد" + }, + "mergeVisible": { + "title": "دمج الطبقات الظاهرة", + "desc": "دمج جميع الطبقات الظاهرة في اللوحة" + }, + "saveToGallery": { + "title": "حفظ إلى صالة الأزياء", + "desc": "حفظ اللوحة الحالية إلى صالة الأزياء" + }, + "copyToClipboard": { + "title": "نسخ إلى الحافظة", + "desc": "نسخ اللوحة الحالية إلى الحافظة" + }, + "downloadImage": { + "title": "تنزيل الصورة", + "desc": "تنزيل اللوحة الحالية" + }, + "undoStroke": { + "title": "تراجع عن الخط", + "desc": "تراجع عن خط الفرشاة" + }, + "redoStroke": { + "title": "إعادة الخط", + "desc": "إعادة خط الفرشاة" + }, + "resetView": { + "title": "إعادة تعيين العرض", + "desc": "إعادة تعيين عرض اللوحة" + }, + "previousStagingImage": { + "title": "الصورة السابقة في المرحلة التجريبية", + "desc": "الصورة السابقة في منطقة المرحلة التجريبية" + }, + "nextStagingImage": { + "title": "الصورة التالية في المرحلة التجريبية", + "desc": "الصورة التالية في منطقة المرحلة التجريبية" + }, + "acceptStagingImage": { + "title": "قبول الصورة في المرحلة التجريبية", + "desc": "قبول الصورة الحالية في منطقة المرحلة التجريبية" + } +} diff --git a/invokeai/frontend/dist/locales/modelmanager/ar.json b/invokeai/frontend/dist/locales/modelmanager/ar.json new file mode 100644 index 0000000000..a5ba06f31c --- /dev/null +++ b/invokeai/frontend/dist/locales/modelmanager/ar.json @@ -0,0 +1,67 @@ +{ + "modelManager": "مدير النموذج", + "model": "نموذج", + "allModels": "جميع النماذج", + "checkpointModels": "نقاط التحقق", + "diffusersModels": "المصادر المتعددة", + "safetensorModels": "SafeTensors", + "modelAdded": "تمت إضافة النموذج", + "modelUpdated": "تم تحديث النموذج", + "modelEntryDeleted": "تم حذف مدخل النموذج", + "cannotUseSpaces": "لا يمكن استخدام المساحات", + "addNew": "إضافة جديد", + "addNewModel": "إضافة نموذج جديد", + "addCheckpointModel": "إضافة نقطة تحقق / نموذج SafeTensor", + "addDiffuserModel": "إضافة مصادر متعددة", + "addManually": "إضافة يدويًا", + "manual": "يدوي", + "name": "الاسم", + "nameValidationMsg": "أدخل اسما لنموذجك", + "description": "الوصف", + "descriptionValidationMsg": "أضف وصفا لنموذجك", + "config": "تكوين", + "configValidationMsg": "مسار الملف الإعدادي لنموذجك.", + "modelLocation": "موقع النموذج", + "modelLocationValidationMsg": "موقع النموذج على الجهاز الخاص بك.", + "repo_id": "معرف المستودع", + "repoIDValidationMsg": "المستودع الإلكتروني لنموذجك", + "vaeLocation": "موقع VAE", + "vaeLocationValidationMsg": "موقع VAE على الجهاز الخاص بك.", + "vaeRepoID": "معرف مستودع VAE", + "vaeRepoIDValidationMsg": "المستودع الإلكتروني لVAE", + "width": "عرض", + "widthValidationMsg": "عرض افتراضي لنموذجك.", + "height": "ارتفاع", + "heightValidationMsg": "ارتفاع افتراضي لنموذجك.", + "addModel": "أضف نموذج", + "updateModel": "تحديث النموذج", + "availableModels": "النماذج المتاحة", + "search": "بحث", + "load": "تحميل", + "active": "نشط", + "notLoaded": "غير محمل", + "cached": "مخبأ", + "checkpointFolder": "مجلد التدقيق", + "clearCheckpointFolder": "مسح مجلد التدقيق", + "findModels": "إيجاد النماذج", + "scanAgain": "فحص مرة أخرى", + "modelsFound": "النماذج الموجودة", + "selectFolder": "حدد المجلد", + "selected": "تم التحديد", + "selectAll": "حدد الكل", + "deselectAll": "إلغاء تحديد الكل", + "showExisting": "إظهار الموجود", + "addSelected": "أضف المحدد", + "modelExists": "النموذج موجود", + "selectAndAdd": "حدد وأضف النماذج المدرجة أدناه", + "noModelsFound": "لم يتم العثور على نماذج", + "delete": "حذف", + "deleteModel": "حذف النموذج", + "deleteConfig": "حذف التكوين", + "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من InvokeAI؟", + "deleteMsg2": "هذا لن يحذف ملف نقطة التحكم للنموذج من القرص الخاص بك. يمكنك إعادة إضافتهم إذا كنت ترغب في ذلك.", + "formMessageDiffusersModelLocation": "موقع النموذج للمصعد", + "formMessageDiffusersModelLocationDesc": "يرجى إدخال واحد على الأقل.", + "formMessageDiffusersVAELocation": "موقع VAE", + "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث InvokeAI عن ملف VAE داخل موقع النموذج المعطى أعلاه." +} diff --git a/invokeai/frontend/dist/locales/options/ar.json b/invokeai/frontend/dist/locales/options/ar.json new file mode 100644 index 0000000000..7fe56ae954 --- /dev/null +++ b/invokeai/frontend/dist/locales/options/ar.json @@ -0,0 +1,62 @@ +{ + "images": "الصور", + "steps": "الخطوات", + "cfgScale": "CFG Scale", + "width": "عرض", + "height": "ارتفاع", + "sampler": "مزج", + "seed": "بذرة", + "randomizeSeed": "تبديل بذرة", + "shuffle": "تشغيل", + "noiseThreshold": "عتبة الضوضاء", + "perlinNoise": "Perlin Noise", + "variations": "تباينات", + "variationAmount": "كمية التباين", + "seedWeights": "أوزان البذور", + "faceRestoration": "استعادة الوجه", + "restoreFaces": "استعادة الوجوه", + "type": "نوع", + "strength": "قوة", + "upscaling": "تصغير", + "upscale": "تصغير", + "upscaleImage": "تصغير الصورة", + "scale": "مقياس", + "otherOptions": "خيارات أخرى", + "seamlessTiling": "تجهيز بلاستيكي بدون تشققات", + "hiresOptim": "تحسين الدقة العالية", + "imageFit": "ملائمة الصورة الأولية لحجم الخرج", + "codeformerFidelity": "الوثوقية", + "seamSize": "حجم التشقق", + "seamBlur": "ضباب التشقق", + "seamStrength": "قوة التشقق", + "seamSteps": "خطوات التشقق", + "scaleBeforeProcessing": "تحجيم قبل المعالجة", + "scaledWidth": "العرض المحجوب", + "scaledHeight": "الارتفاع المحجوب", + "infillMethod": "طريقة التعبئة", + "tileSize": "حجم البلاطة", + "boundingBoxHeader": "صندوق التحديد", + "seamCorrectionHeader": "تصحيح التشقق", + "infillScalingHeader": "التعبئة والتحجيم", + "img2imgStrength": "قوة صورة إلى صورة", + "toggleLoopback": "تبديل الإعادة", + "invoke": "إطلاق", + "cancel": "إلغاء", + "promptPlaceholder": "اكتب المحث هنا. [العلامات السلبية], (زيادة الوزن) ++, (نقص الوزن)--, التبديل و الخلط متاحة (انظر الوثائق)", + "sendTo": "أرسل إلى", + "sendToImg2Img": "أرسل إلى صورة إلى صورة", + "sendToUnifiedCanvas": "أرسل إلى الخطوط الموحدة", + "copyImage": "نسخ الصورة", + "copyImageToLink": "نسخ الصورة إلى الرابط", + "downloadImage": "تحميل الصورة", + "openInViewer": "فتح في العارض", + "closeViewer": "إغلاق العارض", + "usePrompt": "استخدم المحث", + "useSeed": "استخدام البذور", + "useAll": "استخدام الكل", + "useInitImg": "استخدام الصورة الأولية", + "info": "معلومات", + "deleteImage": "حذف الصورة", + "initialImage": "الصورة الأولية", + "showOptionsPanel": "إظهار لوحة الخيارات" +} diff --git a/invokeai/frontend/dist/locales/settings/ar.json b/invokeai/frontend/dist/locales/settings/ar.json new file mode 100644 index 0000000000..9471df4809 --- /dev/null +++ b/invokeai/frontend/dist/locales/settings/ar.json @@ -0,0 +1,13 @@ +{ + "models": "موديلات", + "displayInProgress": "عرض الصور المؤرشفة", + "saveSteps": "حفظ الصور كل n خطوات", + "confirmOnDelete": "تأكيد عند الحذف", + "displayHelpIcons": "عرض أيقونات المساعدة", + "useCanvasBeta": "استخدام مخطط الأزرار بيتا", + "enableImageDebugging": "تمكين التصحيح عند التصوير", + "resetWebUI": "إعادة تعيين واجهة الويب", + "resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.", + "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على GitHub.", + "resetComplete": "تم إعادة تعيين واجهة الويب. تحديث الصفحة لإعادة التحميل." +} diff --git a/invokeai/frontend/dist/locales/toast/ar.json b/invokeai/frontend/dist/locales/toast/ar.json new file mode 100644 index 0000000000..3cde887a08 --- /dev/null +++ b/invokeai/frontend/dist/locales/toast/ar.json @@ -0,0 +1,32 @@ +{ + "tempFoldersEmptied": "تم تفريغ مجلد المؤقت", + "uploadFailed": "فشل التحميل", + "uploadFailedMultipleImagesDesc": "تم الصق صور متعددة، قد يتم تحميل صورة واحدة فقط في الوقت الحالي", + "uploadFailedUnableToLoadDesc": "تعذر تحميل الملف", + "downloadImageStarted": "بدأ تنزيل الصورة", + "imageCopied": "تم نسخ الصورة", + "imageLinkCopied": "تم نسخ رابط الصورة", + "imageNotLoaded": "لم يتم تحميل أي صورة", + "imageNotLoadedDesc": "لم يتم العثور على صورة لإرسالها إلى وحدة الصورة", + "imageSavedToGallery": "تم حفظ الصورة في المعرض", + "canvasMerged": "تم دمج الخط", + "sentToImageToImage": "تم إرسال إلى Image To Image", + "sentToUnifiedCanvas": "تم إرسال إلى Unified Canvas", + "parametersSet": "تم تعيين المعلمات", + "parametersNotSet": "لم يتم تعيين المعلمات", + "parametersNotSetDesc": "لم يتم العثور على معلمات بيانية لهذه الصورة.", + "parametersFailed": "حدث مشكلة في تحميل المعلمات", + "parametersFailedDesc": "تعذر تحميل صورة البدء.", + "seedSet": "تم تعيين البذرة", + "seedNotSet": "لم يتم تعيين البذرة", + "seedNotSetDesc": "تعذر العثور على البذرة لهذه الصورة.", + "promptSet": "تم تعيين الإشعار", + "promptNotSet": "Prompt Not Set", + "promptNotSetDesc": "تعذر العثور على الإشعار لهذه الصورة.", + "upscalingFailed": "فشل التحسين", + "faceRestoreFailed": "فشل استعادة الوجه", + "metadataLoadFailed": "فشل تحميل البيانات الوصفية", + "initialImageSet": "تم تعيين الصورة الأولية", + "initialImageNotSet": "لم يتم تعيين الصورة الأولية", + "initialImageNotSetDesc": "تعذر تحميل الصورة الأولية" +} diff --git a/invokeai/frontend/dist/locales/tooltip/ar.json b/invokeai/frontend/dist/locales/tooltip/ar.json new file mode 100644 index 0000000000..120f255458 --- /dev/null +++ b/invokeai/frontend/dist/locales/tooltip/ar.json @@ -0,0 +1,15 @@ +{ + "feature": { + "prompt": "هذا هو حقل التحذير. يشمل التحذير عناصر الإنتاج والمصطلحات الأسلوبية. يمكنك إضافة الأوزان (أهمية الرمز) في التحذير أيضًا، ولكن أوامر CLI والمعلمات لن تعمل.", + "gallery": "تعرض Gallery منتجات من مجلد الإخراج عندما يتم إنشاؤها. تخزن الإعدادات داخل الملفات ويتم الوصول إليها عن طريق قائمة السياق.", + "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـ Invoke. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر img2img: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من txt2img المعتاد.", + "seed": "يؤثر قيمة البذور على الضوضاء الأولي الذي يتم تكوين الصورة منه. يمكنك استخدام البذور الخاصة بالصور السابقة. 'عتبة الضوضاء' يتم استخدامها لتخفيف العناصر الخللية في قيم CFG العالية (جرب مدى 0-10), و Perlin لإضافة ضوضاء Perlin أثناء الإنتاج: كلا منهما يعملان على إضافة التنوع إلى النتائج الخاصة بك.", + "variations": "جرب التغيير مع قيمة بين 0.1 و 1.0 لتغيير النتائج لبذور معينة. التغييرات المثيرة للاهتمام للبذور تكون بين 0.1 و 0.3.", + "upscale": "استخدم ESRGAN لتكبير الصورة على الفور بعد الإنتاج.", + "face Correction": "تصحيح الوجه باستخدام GFPGAN أو Codeformer: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. Codeformer بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", + "imageToImage": "تحميل صورة إلى صورة أي صورة كأولية، والتي يتم استخدامها لإنشاء صورة جديدة مع التشعيب. كلما كانت القيمة أعلى، كلما تغيرت نتيجة الصورة. من الممكن أن تكون القيم بين 0.0 و 1.0، وتوصي النطاق الموصى به هو .25-.75", + "boundingBox": "مربع الحدود هو نفس الإعدادات العرض والارتفاع لنص إلى صورة أو صورة إلى صورة. فقط المنطقة في المربع سيتم معالجتها.", + "seam Correction": "يتحكم بالتعامل مع الخطوط المرئية التي تحدث بين الصور المولدة في سطح اللوحة.", + "infillAndScaling": "إدارة أساليب التعبئة (المستخدمة على المناطق المخفية أو الممحوة في سطح اللوحة) والزيادة في الحجم (مفيدة لحجوزات الإطارات الصغيرة)." + } +} diff --git a/invokeai/frontend/dist/locales/unifiedcanvas/ar.json b/invokeai/frontend/dist/locales/unifiedcanvas/ar.json new file mode 100644 index 0000000000..06da5eef26 --- /dev/null +++ b/invokeai/frontend/dist/locales/unifiedcanvas/ar.json @@ -0,0 +1,59 @@ +{ + "layer": "طبقة", + "base": "قاعدة", + "mask": "قناع", + "maskingOptions": "خيارات القناع", + "enableMask": "مكن القناع", + "preserveMaskedArea": "الحفاظ على المنطقة المقنعة", + "clearMask": "مسح القناع", + "brush": "فرشاة", + "eraser": "ممحاة", + "fillBoundingBox": "ملئ إطار الحدود", + "eraseBoundingBox": "مسح إطار الحدود", + "colorPicker": "اختيار اللون", + "brushOptions": "خيارات الفرشاة", + "brushSize": "الحجم", + "move": "تحريك", + "resetView": "إعادة تعيين العرض", + "mergeVisible": "دمج الظاهر", + "saveToGallery": "حفظ إلى المعرض", + "copyToClipboard": "نسخ إلى الحافظة", + "downloadAsImage": "تنزيل على شكل صورة", + "undo": "تراجع", + "redo": "إعادة", + "clearCanvas": "مسح سبيكة الكاملة", + "canvasSettings": "إعدادات سبيكة الكاملة", + "showIntermediates": "إظهار الوسطاء", + "showGrid": "إظهار الشبكة", + "snapToGrid": "الالتفاف إلى الشبكة", + "darkenOutsideSelection": "تعمية خارج التحديد", + "autoSaveToGallery": "حفظ تلقائي إلى المعرض", + "saveBoxRegionOnly": "حفظ منطقة الصندوق فقط", + "limitStrokesToBox": "تحديد عدد الخطوط إلى الصندوق", + "showCanvasDebugInfo": "إظهار معلومات تصحيح سبيكة الكاملة", + "clearCanvasHistory": "مسح تاريخ سبيكة الكاملة", + "clearHistory": "مسح التاريخ", + "clearCanvasHistoryMessage": "مسح تاريخ اللوحة تترك اللوحة الحالية عائمة، ولكن تمسح بشكل غير قابل للتراجع تاريخ التراجع والإعادة.", + "clearCanvasHistoryConfirm": "هل أنت متأكد من رغبتك في مسح تاريخ اللوحة؟", + "emptyTempImageFolder": "إفراغ مجلد الصور المؤقتة", + "emptyFolder": "إفراغ المجلد", + "emptyTempImagesFolderMessage": "إفراغ مجلد الصور المؤقتة يؤدي أيضًا إلى إعادة تعيين اللوحة الموحدة بشكل كامل. وهذا يشمل كل تاريخ التراجع / الإعادة والصور في منطقة التخزين وطبقة الأساس لللوحة.", + "emptyTempImagesFolderConfirm": "هل أنت متأكد من رغبتك في إفراغ مجلد الصور المؤقتة؟", + "activeLayer": "الطبقة النشطة", + "canvasScale": "مقياس اللوحة", + "boundingBox": "صندوق الحدود", + "scaledBoundingBox": "صندوق الحدود المكبر", + "boundingBoxPosition": "موضع صندوق الحدود", + "canvasDimensions": "أبعاد اللوحة", + "canvasPosition": "موضع اللوحة", + "cursorPosition": "موضع المؤشر", + "previous": "السابق", + "next": "التالي", + "accept": "قبول", + "showHide": "إظهار/إخفاء", + "discardAll": "تجاهل الكل", + "betaClear": "مسح", + "betaDarkenOutside": "ظل الخارج", + "betaLimitToBox": "تحديد إلى الصندوق", + "betaPreserveMasked": "المحافظة على المخفية" +} From 01eb93d66486efc66bf1b92c4040606c20461c3e Mon Sep 17 00:00:00 2001 From: Saifeddine Date: Tue, 7 Feb 2023 00:42:09 +0100 Subject: [PATCH 3/9] Added Arabic Localisation --- .../frontend/public/locales/common/ar.json | 61 ++++++ .../frontend/public/locales/gallery/ar.json | 16 ++ .../frontend/public/locales/hotkeys/ar.json | 207 ++++++++++++++++++ .../public/locales/modelmanager/ar.json | 67 ++++++ .../frontend/public/locales/options/ar.json | 62 ++++++ .../frontend/public/locales/settings/ar.json | 13 ++ .../frontend/public/locales/toast/ar.json | 32 +++ .../frontend/public/locales/tooltip/ar.json | 15 ++ .../public/locales/unifiedcanvas/ar.json | 59 +++++ 9 files changed, 532 insertions(+) create mode 100644 invokeai/frontend/public/locales/common/ar.json create mode 100644 invokeai/frontend/public/locales/gallery/ar.json create mode 100644 invokeai/frontend/public/locales/hotkeys/ar.json create mode 100644 invokeai/frontend/public/locales/modelmanager/ar.json create mode 100644 invokeai/frontend/public/locales/options/ar.json create mode 100644 invokeai/frontend/public/locales/settings/ar.json create mode 100644 invokeai/frontend/public/locales/toast/ar.json create mode 100644 invokeai/frontend/public/locales/tooltip/ar.json create mode 100644 invokeai/frontend/public/locales/unifiedcanvas/ar.json diff --git a/invokeai/frontend/public/locales/common/ar.json b/invokeai/frontend/public/locales/common/ar.json new file mode 100644 index 0000000000..be663b535b --- /dev/null +++ b/invokeai/frontend/public/locales/common/ar.json @@ -0,0 +1,61 @@ +{ + "hotkeysLabel": "مفاتيح الأختصار", + "themeLabel": "الموضوع", + "languagePickerLabel": "منتقي اللغة", + "reportBugLabel": "بلغ عن خطأ", + "githubLabel": "Github", + "discordLabel": "Discord", + "settingsLabel": "إعدادات", + "darkTheme": "داكن", + "lightTheme": "فاتح", + "greenTheme": "أخضر", + "langEnglish": "الإنجليزية", + "langRussian": "روسي", + "langItalian": "إيطالي", + "langBrPortuguese": "البرتغالية (البرازيلية)", + "langGerman": "الألمانية", + "langPortuguese": "البرتغالية", + "langFrench": "الفرنسية", + "langPolish": "البولندية", + "langSimplifiedChinese": "الصينية المبسطة", + "langSpanish": "الإسبانية", + "langJapanese": "اليابانية", + "langDutch": "الهولندية", + "text2img": "نص إلى صورة", + "img2img": "صورة إلى صورة", + "unifiedCanvas": "لوحة موحدة", + "nodes": "عقد", + "nodesDesc": "نظام مبني على العقد لإنتاج الصور قيد التطوير حاليًا. تبقى على اتصال مع تحديثات حول هذه الميزة المذهلة.", + "postProcessing": "معالجة بعد الإصدار", + "postProcessDesc1": "Invoke AI توفر مجموعة واسعة من ميزات المعالجة بعد الإصدار. تحسين الصور واستعادة الوجوه متاحين بالفعل في واجهة الويب. يمكنك الوصول إليهم من الخيارات المتقدمة في قائمة الخيارات في علامة التبويب Text To Image و Image To Image. يمكن أيضًا معالجة الصور مباشرةً باستخدام أزرار الإجراء على الصورة فوق عرض الصورة الحالي أو في العارض.", + "postProcessDesc2": "سيتم إصدار واجهة رسومية مخصصة قريبًا لتسهيل عمليات المعالجة بعد الإصدار المتقدمة.", + "postProcessDesc3": "واجهة سطر الأوامر Invoke AI توفر ميزات أخرى عديدة بما في ذلك Embiggen.", + "training": "تدريب", + "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام Textual Inversion و Dreambooth من واجهة الويب.", + "trainingDesc2": "InvokeAI يدعم بالفعل تدريب تضمينات مخصصة باستخدام Textual Inversion باستخدام السكريبت الرئيسي.", + "upload": "رفع", + "close": "إغلاق", + "load": "تحميل", + "back": "الى الخلف", + "statusConnected": "متصل", + "statusDisconnected": "غير متصل", + "statusError": "خطأ", + "statusPreparing": "جاري التحضير", + "statusProcessingCanceled": "تم إلغاء المعالجة", + "statusProcessingComplete": "اكتمال المعالجة", + "statusGenerating": "جاري التوليد", + "statusGeneratingTextToImage": "جاري توليد النص إلى الصورة", + "statusGeneratingImageToImage": "جاري توليد الصورة إلى الصورة", + "statusGeneratingInpainting": "جاري توليد Inpainting", + "statusGeneratingOutpainting": "جاري توليد Outpainting", + "statusGenerationComplete": "اكتمال التوليد", + "statusIterationComplete": "اكتمال التكرار", + "statusSavingImage": "جاري حفظ الصورة", + "statusRestoringFaces": "جاري استعادة الوجوه", + "statusRestoringFacesGFPGAN": "تحسيت الوجوه (GFPGAN)", + "statusRestoringFacesCodeFormer": "تحسين الوجوه (CodeFormer)", + "statusUpscaling": "تحسين الحجم", + "statusUpscalingESRGAN": "تحسين الحجم (ESRGAN)", + "statusLoadingModel": "تحميل النموذج", + "statusModelChanged": "تغير النموذج" +} diff --git a/invokeai/frontend/public/locales/gallery/ar.json b/invokeai/frontend/public/locales/gallery/ar.json new file mode 100644 index 0000000000..090a034002 --- /dev/null +++ b/invokeai/frontend/public/locales/gallery/ar.json @@ -0,0 +1,16 @@ +{ + "generations": "الأجيال", + "showGenerations": "عرض الأجيال", + "uploads": "التحميلات", + "showUploads": "عرض التحميلات", + "galleryImageSize": "حجم الصورة", + "galleryImageResetSize": "إعادة ضبط الحجم", + "gallerySettings": "إعدادات المعرض", + "maintainAspectRatio": "الحفاظ على نسبة الأبعاد", + "autoSwitchNewImages": "التبديل التلقائي إلى الصور الجديدة", + "singleColumnLayout": "تخطيط عمود واحد", + "pinGallery": "تثبيت المعرض", + "allImagesLoaded": "تم تحميل جميع الصور", + "loadMore": "تحميل المزيد", + "noImagesInGallery": "لا توجد صور في المعرض" +} diff --git a/invokeai/frontend/public/locales/hotkeys/ar.json b/invokeai/frontend/public/locales/hotkeys/ar.json new file mode 100644 index 0000000000..4a70ab2129 --- /dev/null +++ b/invokeai/frontend/public/locales/hotkeys/ar.json @@ -0,0 +1,207 @@ +{ + "keyboardShortcuts": "مفاتيح الأزرار المختصرة", + "appHotkeys": "مفاتيح التطبيق", + "GeneralHotkeys": "مفاتيح عامة", + "galleryHotkeys": "مفاتيح المعرض", + "unifiedCanvasHotkeys": "مفاتيح الأوحدة Canvas", + "invoke": { + "title": "أدعو", + "desc": "إنشاء صورة" + }, + "cancel": { + "title": "إلغاء", + "desc": "إلغاء إنشاء الصورة" + }, + "focusPrompt": { + "title": "تركيز الإشعار", + "desc": "تركيز منطقة الإدخال الإشعار" + }, + "toggleOptions": { + "title": "تبديل الخيارات", + "desc": "فتح وإغلاق لوحة الخيارات" + }, + "pinOptions": { + "title": "خيارات التثبيت", + "desc": "ثبت لوحة الخيارات" + }, + "toggleViewer": { + "title": "تبديل العارض", + "desc": "فتح وإغلاق مشاهد الصور" + }, + "toggleGallery": { + "title": "تبديل المعرض", + "desc": "فتح وإغلاق درابزين المعرض" + }, + "maximizeWorkSpace": { + "title": "تكبير مساحة العمل", + "desc": "إغلاق اللوحات وتكبير مساحة العمل" + }, + "changeTabs": { + "title": "تغيير الألسنة", + "desc": "التبديل إلى مساحة عمل أخرى" + }, + "consoleToggle": { + "title": "تبديل الطرفية", + "desc": "فتح وإغلاق الطرفية" + }, + "setPrompt": { + "title": "ضبط التشعب", + "desc": "استخدم تشعب الصورة الحالية" + }, + "setSeed": { + "title": "ضبط البذور", + "desc": "استخدم بذور الصورة الحالية" + }, + "setParameters": { + "title": "ضبط المعلمات", + "desc": "استخدم جميع المعلمات الخاصة بالصورة الحالية" + }, + "restoreFaces": { + "title": "استعادة الوجوه", + "desc": "استعادة الصورة الحالية" + }, + "upscale": { + "title": "تحسين الحجم", + "desc": "تحسين حجم الصورة الحالية" + }, + "showInfo": { + "title": "عرض المعلومات", + "desc": "عرض معلومات البيانات الخاصة بالصورة الحالية" + }, + "sendToImageToImage": { + "title": "أرسل إلى صورة إلى صورة", + "desc": "أرسل الصورة الحالية إلى صورة إلى صورة" + }, + "deleteImage": { + "title": "حذف الصورة", + "desc": "حذف الصورة الحالية" + }, + "closePanels": { + "title": "أغلق اللوحات", + "desc": "يغلق اللوحات المفتوحة" + }, + "previousImage": { + "title": "الصورة السابقة", + "desc": "عرض الصورة السابقة في الصالة" + }, + "nextImage": { + "title": "الصورة التالية", + "desc": "عرض الصورة التالية في الصالة" + }, + "toggleGalleryPin": { + "title": "تبديل تثبيت الصالة", + "desc": "يثبت ويفتح تثبيت الصالة على الواجهة الرسومية" + }, + "increaseGalleryThumbSize": { + "title": "زيادة حجم صورة الصالة", + "desc": "يزيد حجم الصور المصغرة في الصالة" + }, + "decreaseGalleryThumbSize": { + "title": "انقاص حجم صورة الصالة", + "desc": "ينقص حجم الصور المصغرة في الصالة" + }, + "selectBrush": { + "title": "تحديد الفرشاة", + "desc": "يحدد الفرشاة على اللوحة" + }, + "selectEraser": { + "title": "تحديد الممحاة", + "desc": "يحدد الممحاة على اللوحة" + }, + "decreaseBrushSize": { + "title": "تصغير حجم الفرشاة", + "desc": "يصغر حجم الفرشاة/الممحاة على اللوحة" + }, + "increaseBrushSize": { + "title": "زيادة حجم الفرشاة", + "desc": "يزيد حجم فرشة اللوحة / الممحاة" + }, + "decreaseBrushOpacity": { + "title": "تخفيض شفافية الفرشاة", + "desc": "يخفض شفافية فرشة اللوحة" + }, + "increaseBrushOpacity": { + "title": "زيادة شفافية الفرشاة", + "desc": "يزيد شفافية فرشة اللوحة" + }, + "moveTool": { + "title": "أداة التحريك", + "desc": "يتيح التحرك في اللوحة" + }, + "fillBoundingBox": { + "title": "ملء الصندوق المحدد", + "desc": "يملأ الصندوق المحدد بلون الفرشاة" + }, + "eraseBoundingBox": { + "title": "محو الصندوق المحدد", + "desc": "يمحو منطقة الصندوق المحدد" + }, + "colorPicker": { + "title": "اختيار منتقي اللون", + "desc": "يختار منتقي اللون الخاص باللوحة" + }, + "toggleSnap": { + "title": "تبديل التأكيد", + "desc": "يبديل تأكيد الشبكة" + }, + "quickToggleMove": { + "title": "تبديل سريع للتحريك", + "desc": "يبديل مؤقتا وضع التحريك" + }, + "toggleLayer": { + "title": "تبديل الطبقة", + "desc": "يبديل إختيار الطبقة القناع / الأساسية" + }, + "clearMask": { + "title": "مسح القناع", + "desc": "مسح القناع بأكمله" + }, + "hideMask": { + "title": "إخفاء الكمامة", + "desc": "إخفاء وإظهار الكمامة" + }, + "showHideBoundingBox": { + "title": "إظهار / إخفاء علبة التحديد", + "desc": "تبديل ظهور علبة التحديد" + }, + "mergeVisible": { + "title": "دمج الطبقات الظاهرة", + "desc": "دمج جميع الطبقات الظاهرة في اللوحة" + }, + "saveToGallery": { + "title": "حفظ إلى صالة الأزياء", + "desc": "حفظ اللوحة الحالية إلى صالة الأزياء" + }, + "copyToClipboard": { + "title": "نسخ إلى الحافظة", + "desc": "نسخ اللوحة الحالية إلى الحافظة" + }, + "downloadImage": { + "title": "تنزيل الصورة", + "desc": "تنزيل اللوحة الحالية" + }, + "undoStroke": { + "title": "تراجع عن الخط", + "desc": "تراجع عن خط الفرشاة" + }, + "redoStroke": { + "title": "إعادة الخط", + "desc": "إعادة خط الفرشاة" + }, + "resetView": { + "title": "إعادة تعيين العرض", + "desc": "إعادة تعيين عرض اللوحة" + }, + "previousStagingImage": { + "title": "الصورة السابقة في المرحلة التجريبية", + "desc": "الصورة السابقة في منطقة المرحلة التجريبية" + }, + "nextStagingImage": { + "title": "الصورة التالية في المرحلة التجريبية", + "desc": "الصورة التالية في منطقة المرحلة التجريبية" + }, + "acceptStagingImage": { + "title": "قبول الصورة في المرحلة التجريبية", + "desc": "قبول الصورة الحالية في منطقة المرحلة التجريبية" + } +} diff --git a/invokeai/frontend/public/locales/modelmanager/ar.json b/invokeai/frontend/public/locales/modelmanager/ar.json new file mode 100644 index 0000000000..a5ba06f31c --- /dev/null +++ b/invokeai/frontend/public/locales/modelmanager/ar.json @@ -0,0 +1,67 @@ +{ + "modelManager": "مدير النموذج", + "model": "نموذج", + "allModels": "جميع النماذج", + "checkpointModels": "نقاط التحقق", + "diffusersModels": "المصادر المتعددة", + "safetensorModels": "SafeTensors", + "modelAdded": "تمت إضافة النموذج", + "modelUpdated": "تم تحديث النموذج", + "modelEntryDeleted": "تم حذف مدخل النموذج", + "cannotUseSpaces": "لا يمكن استخدام المساحات", + "addNew": "إضافة جديد", + "addNewModel": "إضافة نموذج جديد", + "addCheckpointModel": "إضافة نقطة تحقق / نموذج SafeTensor", + "addDiffuserModel": "إضافة مصادر متعددة", + "addManually": "إضافة يدويًا", + "manual": "يدوي", + "name": "الاسم", + "nameValidationMsg": "أدخل اسما لنموذجك", + "description": "الوصف", + "descriptionValidationMsg": "أضف وصفا لنموذجك", + "config": "تكوين", + "configValidationMsg": "مسار الملف الإعدادي لنموذجك.", + "modelLocation": "موقع النموذج", + "modelLocationValidationMsg": "موقع النموذج على الجهاز الخاص بك.", + "repo_id": "معرف المستودع", + "repoIDValidationMsg": "المستودع الإلكتروني لنموذجك", + "vaeLocation": "موقع VAE", + "vaeLocationValidationMsg": "موقع VAE على الجهاز الخاص بك.", + "vaeRepoID": "معرف مستودع VAE", + "vaeRepoIDValidationMsg": "المستودع الإلكتروني لVAE", + "width": "عرض", + "widthValidationMsg": "عرض افتراضي لنموذجك.", + "height": "ارتفاع", + "heightValidationMsg": "ارتفاع افتراضي لنموذجك.", + "addModel": "أضف نموذج", + "updateModel": "تحديث النموذج", + "availableModels": "النماذج المتاحة", + "search": "بحث", + "load": "تحميل", + "active": "نشط", + "notLoaded": "غير محمل", + "cached": "مخبأ", + "checkpointFolder": "مجلد التدقيق", + "clearCheckpointFolder": "مسح مجلد التدقيق", + "findModels": "إيجاد النماذج", + "scanAgain": "فحص مرة أخرى", + "modelsFound": "النماذج الموجودة", + "selectFolder": "حدد المجلد", + "selected": "تم التحديد", + "selectAll": "حدد الكل", + "deselectAll": "إلغاء تحديد الكل", + "showExisting": "إظهار الموجود", + "addSelected": "أضف المحدد", + "modelExists": "النموذج موجود", + "selectAndAdd": "حدد وأضف النماذج المدرجة أدناه", + "noModelsFound": "لم يتم العثور على نماذج", + "delete": "حذف", + "deleteModel": "حذف النموذج", + "deleteConfig": "حذف التكوين", + "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من InvokeAI؟", + "deleteMsg2": "هذا لن يحذف ملف نقطة التحكم للنموذج من القرص الخاص بك. يمكنك إعادة إضافتهم إذا كنت ترغب في ذلك.", + "formMessageDiffusersModelLocation": "موقع النموذج للمصعد", + "formMessageDiffusersModelLocationDesc": "يرجى إدخال واحد على الأقل.", + "formMessageDiffusersVAELocation": "موقع VAE", + "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث InvokeAI عن ملف VAE داخل موقع النموذج المعطى أعلاه." +} diff --git a/invokeai/frontend/public/locales/options/ar.json b/invokeai/frontend/public/locales/options/ar.json new file mode 100644 index 0000000000..7fe56ae954 --- /dev/null +++ b/invokeai/frontend/public/locales/options/ar.json @@ -0,0 +1,62 @@ +{ + "images": "الصور", + "steps": "الخطوات", + "cfgScale": "CFG Scale", + "width": "عرض", + "height": "ارتفاع", + "sampler": "مزج", + "seed": "بذرة", + "randomizeSeed": "تبديل بذرة", + "shuffle": "تشغيل", + "noiseThreshold": "عتبة الضوضاء", + "perlinNoise": "Perlin Noise", + "variations": "تباينات", + "variationAmount": "كمية التباين", + "seedWeights": "أوزان البذور", + "faceRestoration": "استعادة الوجه", + "restoreFaces": "استعادة الوجوه", + "type": "نوع", + "strength": "قوة", + "upscaling": "تصغير", + "upscale": "تصغير", + "upscaleImage": "تصغير الصورة", + "scale": "مقياس", + "otherOptions": "خيارات أخرى", + "seamlessTiling": "تجهيز بلاستيكي بدون تشققات", + "hiresOptim": "تحسين الدقة العالية", + "imageFit": "ملائمة الصورة الأولية لحجم الخرج", + "codeformerFidelity": "الوثوقية", + "seamSize": "حجم التشقق", + "seamBlur": "ضباب التشقق", + "seamStrength": "قوة التشقق", + "seamSteps": "خطوات التشقق", + "scaleBeforeProcessing": "تحجيم قبل المعالجة", + "scaledWidth": "العرض المحجوب", + "scaledHeight": "الارتفاع المحجوب", + "infillMethod": "طريقة التعبئة", + "tileSize": "حجم البلاطة", + "boundingBoxHeader": "صندوق التحديد", + "seamCorrectionHeader": "تصحيح التشقق", + "infillScalingHeader": "التعبئة والتحجيم", + "img2imgStrength": "قوة صورة إلى صورة", + "toggleLoopback": "تبديل الإعادة", + "invoke": "إطلاق", + "cancel": "إلغاء", + "promptPlaceholder": "اكتب المحث هنا. [العلامات السلبية], (زيادة الوزن) ++, (نقص الوزن)--, التبديل و الخلط متاحة (انظر الوثائق)", + "sendTo": "أرسل إلى", + "sendToImg2Img": "أرسل إلى صورة إلى صورة", + "sendToUnifiedCanvas": "أرسل إلى الخطوط الموحدة", + "copyImage": "نسخ الصورة", + "copyImageToLink": "نسخ الصورة إلى الرابط", + "downloadImage": "تحميل الصورة", + "openInViewer": "فتح في العارض", + "closeViewer": "إغلاق العارض", + "usePrompt": "استخدم المحث", + "useSeed": "استخدام البذور", + "useAll": "استخدام الكل", + "useInitImg": "استخدام الصورة الأولية", + "info": "معلومات", + "deleteImage": "حذف الصورة", + "initialImage": "الصورة الأولية", + "showOptionsPanel": "إظهار لوحة الخيارات" +} diff --git a/invokeai/frontend/public/locales/settings/ar.json b/invokeai/frontend/public/locales/settings/ar.json new file mode 100644 index 0000000000..9471df4809 --- /dev/null +++ b/invokeai/frontend/public/locales/settings/ar.json @@ -0,0 +1,13 @@ +{ + "models": "موديلات", + "displayInProgress": "عرض الصور المؤرشفة", + "saveSteps": "حفظ الصور كل n خطوات", + "confirmOnDelete": "تأكيد عند الحذف", + "displayHelpIcons": "عرض أيقونات المساعدة", + "useCanvasBeta": "استخدام مخطط الأزرار بيتا", + "enableImageDebugging": "تمكين التصحيح عند التصوير", + "resetWebUI": "إعادة تعيين واجهة الويب", + "resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.", + "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على GitHub.", + "resetComplete": "تم إعادة تعيين واجهة الويب. تحديث الصفحة لإعادة التحميل." +} diff --git a/invokeai/frontend/public/locales/toast/ar.json b/invokeai/frontend/public/locales/toast/ar.json new file mode 100644 index 0000000000..3cde887a08 --- /dev/null +++ b/invokeai/frontend/public/locales/toast/ar.json @@ -0,0 +1,32 @@ +{ + "tempFoldersEmptied": "تم تفريغ مجلد المؤقت", + "uploadFailed": "فشل التحميل", + "uploadFailedMultipleImagesDesc": "تم الصق صور متعددة، قد يتم تحميل صورة واحدة فقط في الوقت الحالي", + "uploadFailedUnableToLoadDesc": "تعذر تحميل الملف", + "downloadImageStarted": "بدأ تنزيل الصورة", + "imageCopied": "تم نسخ الصورة", + "imageLinkCopied": "تم نسخ رابط الصورة", + "imageNotLoaded": "لم يتم تحميل أي صورة", + "imageNotLoadedDesc": "لم يتم العثور على صورة لإرسالها إلى وحدة الصورة", + "imageSavedToGallery": "تم حفظ الصورة في المعرض", + "canvasMerged": "تم دمج الخط", + "sentToImageToImage": "تم إرسال إلى Image To Image", + "sentToUnifiedCanvas": "تم إرسال إلى Unified Canvas", + "parametersSet": "تم تعيين المعلمات", + "parametersNotSet": "لم يتم تعيين المعلمات", + "parametersNotSetDesc": "لم يتم العثور على معلمات بيانية لهذه الصورة.", + "parametersFailed": "حدث مشكلة في تحميل المعلمات", + "parametersFailedDesc": "تعذر تحميل صورة البدء.", + "seedSet": "تم تعيين البذرة", + "seedNotSet": "لم يتم تعيين البذرة", + "seedNotSetDesc": "تعذر العثور على البذرة لهذه الصورة.", + "promptSet": "تم تعيين الإشعار", + "promptNotSet": "Prompt Not Set", + "promptNotSetDesc": "تعذر العثور على الإشعار لهذه الصورة.", + "upscalingFailed": "فشل التحسين", + "faceRestoreFailed": "فشل استعادة الوجه", + "metadataLoadFailed": "فشل تحميل البيانات الوصفية", + "initialImageSet": "تم تعيين الصورة الأولية", + "initialImageNotSet": "لم يتم تعيين الصورة الأولية", + "initialImageNotSetDesc": "تعذر تحميل الصورة الأولية" +} diff --git a/invokeai/frontend/public/locales/tooltip/ar.json b/invokeai/frontend/public/locales/tooltip/ar.json new file mode 100644 index 0000000000..120f255458 --- /dev/null +++ b/invokeai/frontend/public/locales/tooltip/ar.json @@ -0,0 +1,15 @@ +{ + "feature": { + "prompt": "هذا هو حقل التحذير. يشمل التحذير عناصر الإنتاج والمصطلحات الأسلوبية. يمكنك إضافة الأوزان (أهمية الرمز) في التحذير أيضًا، ولكن أوامر CLI والمعلمات لن تعمل.", + "gallery": "تعرض Gallery منتجات من مجلد الإخراج عندما يتم إنشاؤها. تخزن الإعدادات داخل الملفات ويتم الوصول إليها عن طريق قائمة السياق.", + "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـ Invoke. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر img2img: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من txt2img المعتاد.", + "seed": "يؤثر قيمة البذور على الضوضاء الأولي الذي يتم تكوين الصورة منه. يمكنك استخدام البذور الخاصة بالصور السابقة. 'عتبة الضوضاء' يتم استخدامها لتخفيف العناصر الخللية في قيم CFG العالية (جرب مدى 0-10), و Perlin لإضافة ضوضاء Perlin أثناء الإنتاج: كلا منهما يعملان على إضافة التنوع إلى النتائج الخاصة بك.", + "variations": "جرب التغيير مع قيمة بين 0.1 و 1.0 لتغيير النتائج لبذور معينة. التغييرات المثيرة للاهتمام للبذور تكون بين 0.1 و 0.3.", + "upscale": "استخدم ESRGAN لتكبير الصورة على الفور بعد الإنتاج.", + "face Correction": "تصحيح الوجه باستخدام GFPGAN أو Codeformer: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. Codeformer بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", + "imageToImage": "تحميل صورة إلى صورة أي صورة كأولية، والتي يتم استخدامها لإنشاء صورة جديدة مع التشعيب. كلما كانت القيمة أعلى، كلما تغيرت نتيجة الصورة. من الممكن أن تكون القيم بين 0.0 و 1.0، وتوصي النطاق الموصى به هو .25-.75", + "boundingBox": "مربع الحدود هو نفس الإعدادات العرض والارتفاع لنص إلى صورة أو صورة إلى صورة. فقط المنطقة في المربع سيتم معالجتها.", + "seam Correction": "يتحكم بالتعامل مع الخطوط المرئية التي تحدث بين الصور المولدة في سطح اللوحة.", + "infillAndScaling": "إدارة أساليب التعبئة (المستخدمة على المناطق المخفية أو الممحوة في سطح اللوحة) والزيادة في الحجم (مفيدة لحجوزات الإطارات الصغيرة)." + } +} diff --git a/invokeai/frontend/public/locales/unifiedcanvas/ar.json b/invokeai/frontend/public/locales/unifiedcanvas/ar.json new file mode 100644 index 0000000000..06da5eef26 --- /dev/null +++ b/invokeai/frontend/public/locales/unifiedcanvas/ar.json @@ -0,0 +1,59 @@ +{ + "layer": "طبقة", + "base": "قاعدة", + "mask": "قناع", + "maskingOptions": "خيارات القناع", + "enableMask": "مكن القناع", + "preserveMaskedArea": "الحفاظ على المنطقة المقنعة", + "clearMask": "مسح القناع", + "brush": "فرشاة", + "eraser": "ممحاة", + "fillBoundingBox": "ملئ إطار الحدود", + "eraseBoundingBox": "مسح إطار الحدود", + "colorPicker": "اختيار اللون", + "brushOptions": "خيارات الفرشاة", + "brushSize": "الحجم", + "move": "تحريك", + "resetView": "إعادة تعيين العرض", + "mergeVisible": "دمج الظاهر", + "saveToGallery": "حفظ إلى المعرض", + "copyToClipboard": "نسخ إلى الحافظة", + "downloadAsImage": "تنزيل على شكل صورة", + "undo": "تراجع", + "redo": "إعادة", + "clearCanvas": "مسح سبيكة الكاملة", + "canvasSettings": "إعدادات سبيكة الكاملة", + "showIntermediates": "إظهار الوسطاء", + "showGrid": "إظهار الشبكة", + "snapToGrid": "الالتفاف إلى الشبكة", + "darkenOutsideSelection": "تعمية خارج التحديد", + "autoSaveToGallery": "حفظ تلقائي إلى المعرض", + "saveBoxRegionOnly": "حفظ منطقة الصندوق فقط", + "limitStrokesToBox": "تحديد عدد الخطوط إلى الصندوق", + "showCanvasDebugInfo": "إظهار معلومات تصحيح سبيكة الكاملة", + "clearCanvasHistory": "مسح تاريخ سبيكة الكاملة", + "clearHistory": "مسح التاريخ", + "clearCanvasHistoryMessage": "مسح تاريخ اللوحة تترك اللوحة الحالية عائمة، ولكن تمسح بشكل غير قابل للتراجع تاريخ التراجع والإعادة.", + "clearCanvasHistoryConfirm": "هل أنت متأكد من رغبتك في مسح تاريخ اللوحة؟", + "emptyTempImageFolder": "إفراغ مجلد الصور المؤقتة", + "emptyFolder": "إفراغ المجلد", + "emptyTempImagesFolderMessage": "إفراغ مجلد الصور المؤقتة يؤدي أيضًا إلى إعادة تعيين اللوحة الموحدة بشكل كامل. وهذا يشمل كل تاريخ التراجع / الإعادة والصور في منطقة التخزين وطبقة الأساس لللوحة.", + "emptyTempImagesFolderConfirm": "هل أنت متأكد من رغبتك في إفراغ مجلد الصور المؤقتة؟", + "activeLayer": "الطبقة النشطة", + "canvasScale": "مقياس اللوحة", + "boundingBox": "صندوق الحدود", + "scaledBoundingBox": "صندوق الحدود المكبر", + "boundingBoxPosition": "موضع صندوق الحدود", + "canvasDimensions": "أبعاد اللوحة", + "canvasPosition": "موضع اللوحة", + "cursorPosition": "موضع المؤشر", + "previous": "السابق", + "next": "التالي", + "accept": "قبول", + "showHide": "إظهار/إخفاء", + "discardAll": "تجاهل الكل", + "betaClear": "مسح", + "betaDarkenOutside": "ظل الخارج", + "betaLimitToBox": "تحديد إلى الصندوق", + "betaPreserveMasked": "المحافظة على المخفية" +} From fbcc52ec3dd1ea58d761cf7f2499ab9dd71ca0cd Mon Sep 17 00:00:00 2001 From: Saifeddine Date: Wed, 8 Feb 2023 21:59:53 +0100 Subject: [PATCH 4/9] =?UTF-8?q?upgr=C3=A9aded=20arabic=20localization?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../frontend/public/locales/common/ar.json | 10 +++++----- .../frontend/public/locales/hotkeys/ar.json | 2 +- .../public/locales/modelmanager/ar.json | 18 +++++++++--------- .../frontend/public/locales/options/ar.json | 4 ++-- .../frontend/public/locales/settings/ar.json | 2 +- invokeai/frontend/public/locales/toast/ar.json | 4 ++-- .../frontend/public/locales/tooltip/ar.json | 6 +++--- 7 files changed, 23 insertions(+), 23 deletions(-) diff --git a/invokeai/frontend/public/locales/common/ar.json b/invokeai/frontend/public/locales/common/ar.json index be663b535b..883dd9f892 100644 --- a/invokeai/frontend/public/locales/common/ar.json +++ b/invokeai/frontend/public/locales/common/ar.json @@ -31,8 +31,8 @@ "postProcessDesc2": "سيتم إصدار واجهة رسومية مخصصة قريبًا لتسهيل عمليات المعالجة بعد الإصدار المتقدمة.", "postProcessDesc3": "واجهة سطر الأوامر Invoke AI توفر ميزات أخرى عديدة بما في ذلك Embiggen.", "training": "تدريب", - "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام Textual Inversion و Dreambooth من واجهة الويب.", - "trainingDesc2": "InvokeAI يدعم بالفعل تدريب تضمينات مخصصة باستخدام Textual Inversion باستخدام السكريبت الرئيسي.", + "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام العكس النصي و دريم بوث من واجهة الويب.", + "trainingDesc2": " استحضر الذكاء الصناعي يدعم بالفعل تدريب تضمينات مخصصة باستخدام العكس النصي باستخدام السكريبت الرئيسي.", "upload": "رفع", "close": "إغلاق", "load": "تحميل", @@ -52,10 +52,10 @@ "statusIterationComplete": "اكتمال التكرار", "statusSavingImage": "جاري حفظ الصورة", "statusRestoringFaces": "جاري استعادة الوجوه", - "statusRestoringFacesGFPGAN": "تحسيت الوجوه (GFPGAN)", - "statusRestoringFacesCodeFormer": "تحسين الوجوه (CodeFormer)", + "statusRestoringFacesGFPGAN": "تحسيت الوجوه (جي إف بي جان)", + "statusRestoringFacesCodeFormer": "تحسين الوجوه (كود فورمر)", "statusUpscaling": "تحسين الحجم", - "statusUpscalingESRGAN": "تحسين الحجم (ESRGAN)", + "statusUpscalingESRGAN": "تحسين الحجم (إي إس آر جان)", "statusLoadingModel": "تحميل النموذج", "statusModelChanged": "تغير النموذج" } diff --git a/invokeai/frontend/public/locales/hotkeys/ar.json b/invokeai/frontend/public/locales/hotkeys/ar.json index 4a70ab2129..e169b3cdbc 100644 --- a/invokeai/frontend/public/locales/hotkeys/ar.json +++ b/invokeai/frontend/public/locales/hotkeys/ar.json @@ -3,7 +3,7 @@ "appHotkeys": "مفاتيح التطبيق", "GeneralHotkeys": "مفاتيح عامة", "galleryHotkeys": "مفاتيح المعرض", - "unifiedCanvasHotkeys": "مفاتيح الأوحدة Canvas", + "unifiedCanvasHotkeys": "مفاتيح اللوحةالموحدة ", "invoke": { "title": "أدعو", "desc": "إنشاء صورة" diff --git a/invokeai/frontend/public/locales/modelmanager/ar.json b/invokeai/frontend/public/locales/modelmanager/ar.json index a5ba06f31c..5c93a87f45 100644 --- a/invokeai/frontend/public/locales/modelmanager/ar.json +++ b/invokeai/frontend/public/locales/modelmanager/ar.json @@ -4,14 +4,14 @@ "allModels": "جميع النماذج", "checkpointModels": "نقاط التحقق", "diffusersModels": "المصادر المتعددة", - "safetensorModels": "SafeTensors", + "safetensorModels": "التنسورات الآمنة", "modelAdded": "تمت إضافة النموذج", "modelUpdated": "تم تحديث النموذج", "modelEntryDeleted": "تم حذف مدخل النموذج", "cannotUseSpaces": "لا يمكن استخدام المساحات", "addNew": "إضافة جديد", "addNewModel": "إضافة نموذج جديد", - "addCheckpointModel": "إضافة نقطة تحقق / نموذج SafeTensor", + "addCheckpointModel": "إضافة نقطة تحقق / نموذج التنسور الآمن", "addDiffuserModel": "إضافة مصادر متعددة", "addManually": "إضافة يدويًا", "manual": "يدوي", @@ -25,10 +25,10 @@ "modelLocationValidationMsg": "موقع النموذج على الجهاز الخاص بك.", "repo_id": "معرف المستودع", "repoIDValidationMsg": "المستودع الإلكتروني لنموذجك", - "vaeLocation": "موقع VAE", - "vaeLocationValidationMsg": "موقع VAE على الجهاز الخاص بك.", - "vaeRepoID": "معرف مستودع VAE", - "vaeRepoIDValidationMsg": "المستودع الإلكتروني لVAE", + "vaeLocation": "موقع فاي إي", + "vaeLocationValidationMsg": "موقع فاي إي على الجهاز الخاص بك.", + "vaeRepoID": "معرف مستودع فاي إي", + "vaeRepoIDValidationMsg": "المستودع الإلكتروني فاي إي", "width": "عرض", "widthValidationMsg": "عرض افتراضي لنموذجك.", "height": "ارتفاع", @@ -58,10 +58,10 @@ "delete": "حذف", "deleteModel": "حذف النموذج", "deleteConfig": "حذف التكوين", - "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من InvokeAI؟", + "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من استحضر الذكاء الصناعي", "deleteMsg2": "هذا لن يحذف ملف نقطة التحكم للنموذج من القرص الخاص بك. يمكنك إعادة إضافتهم إذا كنت ترغب في ذلك.", "formMessageDiffusersModelLocation": "موقع النموذج للمصعد", "formMessageDiffusersModelLocationDesc": "يرجى إدخال واحد على الأقل.", - "formMessageDiffusersVAELocation": "موقع VAE", - "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث InvokeAI عن ملف VAE داخل موقع النموذج المعطى أعلاه." + "formMessageDiffusersVAELocation": "موقع فاي إي", + "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث استحضر الذكاء الصناعي عن ملف فاي إي داخل موقع النموذج المعطى أعلاه." } diff --git a/invokeai/frontend/public/locales/options/ar.json b/invokeai/frontend/public/locales/options/ar.json index 7fe56ae954..f46139db2e 100644 --- a/invokeai/frontend/public/locales/options/ar.json +++ b/invokeai/frontend/public/locales/options/ar.json @@ -1,7 +1,7 @@ { "images": "الصور", "steps": "الخطوات", - "cfgScale": "CFG Scale", + "cfgScale": "مقياس الإعداد الذاتي للجملة", "width": "عرض", "height": "ارتفاع", "sampler": "مزج", @@ -9,7 +9,7 @@ "randomizeSeed": "تبديل بذرة", "shuffle": "تشغيل", "noiseThreshold": "عتبة الضوضاء", - "perlinNoise": "Perlin Noise", + "perlinNoise": "ضجيج برلين", "variations": "تباينات", "variationAmount": "كمية التباين", "seedWeights": "أوزان البذور", diff --git a/invokeai/frontend/public/locales/settings/ar.json b/invokeai/frontend/public/locales/settings/ar.json index 9471df4809..02f11dd0ba 100644 --- a/invokeai/frontend/public/locales/settings/ar.json +++ b/invokeai/frontend/public/locales/settings/ar.json @@ -8,6 +8,6 @@ "enableImageDebugging": "تمكين التصحيح عند التصوير", "resetWebUI": "إعادة تعيين واجهة الويب", "resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.", - "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على GitHub.", + "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على جيت هب.", "resetComplete": "تم إعادة تعيين واجهة الويب. تحديث الصفحة لإعادة التحميل." } diff --git a/invokeai/frontend/public/locales/toast/ar.json b/invokeai/frontend/public/locales/toast/ar.json index 3cde887a08..f93141337d 100644 --- a/invokeai/frontend/public/locales/toast/ar.json +++ b/invokeai/frontend/public/locales/toast/ar.json @@ -10,8 +10,8 @@ "imageNotLoadedDesc": "لم يتم العثور على صورة لإرسالها إلى وحدة الصورة", "imageSavedToGallery": "تم حفظ الصورة في المعرض", "canvasMerged": "تم دمج الخط", - "sentToImageToImage": "تم إرسال إلى Image To Image", - "sentToUnifiedCanvas": "تم إرسال إلى Unified Canvas", + "sentToImageToImage": "تم إرسال إلى صورة إلى صورة", + "sentToUnifiedCanvas": "تم إرسال إلى لوحة موحدة", "parametersSet": "تم تعيين المعلمات", "parametersNotSet": "لم يتم تعيين المعلمات", "parametersNotSetDesc": "لم يتم العثور على معلمات بيانية لهذه الصورة.", diff --git a/invokeai/frontend/public/locales/tooltip/ar.json b/invokeai/frontend/public/locales/tooltip/ar.json index 120f255458..0beca4b86e 100644 --- a/invokeai/frontend/public/locales/tooltip/ar.json +++ b/invokeai/frontend/public/locales/tooltip/ar.json @@ -2,11 +2,11 @@ "feature": { "prompt": "هذا هو حقل التحذير. يشمل التحذير عناصر الإنتاج والمصطلحات الأسلوبية. يمكنك إضافة الأوزان (أهمية الرمز) في التحذير أيضًا، ولكن أوامر CLI والمعلمات لن تعمل.", "gallery": "تعرض Gallery منتجات من مجلد الإخراج عندما يتم إنشاؤها. تخزن الإعدادات داخل الملفات ويتم الوصول إليها عن طريق قائمة السياق.", - "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـ Invoke. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر img2img: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من txt2img المعتاد.", + "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـاستحضر الذكاء الصناعي. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر صورة إلى صورة: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من نص إلى صورة المعتاد.", "seed": "يؤثر قيمة البذور على الضوضاء الأولي الذي يتم تكوين الصورة منه. يمكنك استخدام البذور الخاصة بالصور السابقة. 'عتبة الضوضاء' يتم استخدامها لتخفيف العناصر الخللية في قيم CFG العالية (جرب مدى 0-10), و Perlin لإضافة ضوضاء Perlin أثناء الإنتاج: كلا منهما يعملان على إضافة التنوع إلى النتائج الخاصة بك.", "variations": "جرب التغيير مع قيمة بين 0.1 و 1.0 لتغيير النتائج لبذور معينة. التغييرات المثيرة للاهتمام للبذور تكون بين 0.1 و 0.3.", - "upscale": "استخدم ESRGAN لتكبير الصورة على الفور بعد الإنتاج.", - "face Correction": "تصحيح الوجه باستخدام GFPGAN أو Codeformer: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. Codeformer بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", + "upscale": "استخدم إي إس آر جان لتكبير الصورة على الفور بعد الإنتاج.", + "face Correction": "تصحيح الوجه باستخدام جي إف بي جان أو كود فورمر: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. كود فورمر بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", "imageToImage": "تحميل صورة إلى صورة أي صورة كأولية، والتي يتم استخدامها لإنشاء صورة جديدة مع التشعيب. كلما كانت القيمة أعلى، كلما تغيرت نتيجة الصورة. من الممكن أن تكون القيم بين 0.0 و 1.0، وتوصي النطاق الموصى به هو .25-.75", "boundingBox": "مربع الحدود هو نفس الإعدادات العرض والارتفاع لنص إلى صورة أو صورة إلى صورة. فقط المنطقة في المربع سيتم معالجتها.", "seam Correction": "يتحكم بالتعامل مع الخطوط المرئية التي تحدث بين الصور المولدة في سطح اللوحة.", From d1ad46d6f17d6cea248036fc49e2ab9cb598f159 Mon Sep 17 00:00:00 2001 From: Lincoln Stein Date: Sun, 12 Feb 2023 17:38:46 -0500 Subject: [PATCH 5/9] ask user to make window larger if not enough space for textual inversion/merge gui - The invokeai-ti and invokeai-merge scripts will crash if there is not enough space in the console to fit the user interface (even after responsive formatting). - This PR intercepts the errors and prints a useful error message advising user to make window larger. --- ldm/invoke/merge_diffusers.py | 2 +- ldm/invoke/training/textual_inversion.py | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/ldm/invoke/merge_diffusers.py b/ldm/invoke/merge_diffusers.py index 5cd29e4304..f5da927b9a 100644 --- a/ldm/invoke/merge_diffusers.py +++ b/ldm/invoke/merge_diffusers.py @@ -463,7 +463,7 @@ def main(): "** You need to have at least two diffusers models defined in models.yaml in order to merge" ) else: - print(f"** A layout error has occurred: {str(e)}") + print(f"** Not enough room for the user interface. Try making this window larger.") sys.exit(-1) except Exception as e: print(">> An error occurred:") diff --git a/ldm/invoke/training/textual_inversion.py b/ldm/invoke/training/textual_inversion.py index d1a39f32ae..7ea7970ecf 100755 --- a/ldm/invoke/training/textual_inversion.py +++ b/ldm/invoke/training/textual_inversion.py @@ -439,19 +439,23 @@ def main(): do_front_end(args) else: do_textual_inversion_training(**vars(args)) - except widget.NotEnoughSpaceForWidget as e: - if str(e).startswith("Height of 1 allocated"): - print( - "** You need to have at least one diffusers models defined in models.yaml in order to train" - ) - else: - print(f"** A layout error has occurred: {str(e)}") - sys.exit(-1) except AssertionError as e: print(str(e)) sys.exit(-1) except KeyboardInterrupt: pass + except (widget.NotEnoughSpaceForWidget, Exception) as e: + if str(e).startswith("Height of 1 allocated"): + print( + "** You need to have at least one diffusers models defined in models.yaml in order to train" + ) + elif str(e).startswith('addwstr'): + print( + '** Not enough window space for the interface. Please make your window larger and try again.' + ) + else: + print(f"** A layout error has occurred: {str(e)}") + sys.exit(-1) if __name__ == "__main__": From d9a7536fa81bcb01dd78a1fec1b053503d63d043 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:21:46 +1100 Subject: [PATCH 6/9] moves languages to fallback lang (en) --- .../frontend/public/locales/common/ar.json | 12 ---------- .../frontend/public/locales/common/de.json | 7 ------ .../frontend/public/locales/common/en-US.json | 13 ---------- .../frontend/public/locales/common/en.json | 24 +++++++++---------- .../frontend/public/locales/common/es.json | 10 -------- .../frontend/public/locales/common/fr.json | 12 ---------- .../frontend/public/locales/common/it.json | 12 ---------- .../frontend/public/locales/common/ja.json | 10 -------- .../frontend/public/locales/common/nl.json | 11 --------- .../frontend/public/locales/common/pl.json | 7 ------ .../frontend/public/locales/common/pt_br.json | 7 ------ .../frontend/public/locales/common/ru.json | 6 ----- .../frontend/public/locales/common/ua.json | 5 ---- .../frontend/public/locales/common/zh_cn.json | 6 ----- 14 files changed, 12 insertions(+), 130 deletions(-) diff --git a/invokeai/frontend/public/locales/common/ar.json b/invokeai/frontend/public/locales/common/ar.json index 883dd9f892..f76dfe7f6f 100644 --- a/invokeai/frontend/public/locales/common/ar.json +++ b/invokeai/frontend/public/locales/common/ar.json @@ -9,18 +9,6 @@ "darkTheme": "داكن", "lightTheme": "فاتح", "greenTheme": "أخضر", - "langEnglish": "الإنجليزية", - "langRussian": "روسي", - "langItalian": "إيطالي", - "langBrPortuguese": "البرتغالية (البرازيلية)", - "langGerman": "الألمانية", - "langPortuguese": "البرتغالية", - "langFrench": "الفرنسية", - "langPolish": "البولندية", - "langSimplifiedChinese": "الصينية المبسطة", - "langSpanish": "الإسبانية", - "langJapanese": "اليابانية", - "langDutch": "الهولندية", "text2img": "نص إلى صورة", "img2img": "صورة إلى صورة", "unifiedCanvas": "لوحة موحدة", diff --git a/invokeai/frontend/public/locales/common/de.json b/invokeai/frontend/public/locales/common/de.json index a1b1a12739..c827cae5b5 100644 --- a/invokeai/frontend/public/locales/common/de.json +++ b/invokeai/frontend/public/locales/common/de.json @@ -9,13 +9,6 @@ "darkTheme": "Dunkel", "lightTheme": "Hell", "greenTheme": "Grün", - "langEnglish": "Englisch", - "langRussian": "Russisch", - "langItalian": "Italienisch", - "langPortuguese": "Portugiesisch", - "langFrench": "Französich", - "langGerman": "Deutsch", - "langSpanish": "Spanisch", "text2img": "Text zu Bild", "img2img": "Bild zu Bild", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/public/locales/common/en-US.json b/invokeai/frontend/public/locales/common/en-US.json index 7d38074520..00b60df420 100644 --- a/invokeai/frontend/public/locales/common/en-US.json +++ b/invokeai/frontend/public/locales/common/en-US.json @@ -9,19 +9,6 @@ "darkTheme": "Dark", "lightTheme": "Light", "greenTheme": "Green", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", - "langJapanese": "Japanese", - "langDutch": "Dutch", - "langUkranian": "Ukranian", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/public/locales/common/en.json b/invokeai/frontend/public/locales/common/en.json index 7d38074520..e97fa2d074 100644 --- a/invokeai/frontend/public/locales/common/en.json +++ b/invokeai/frontend/public/locales/common/en.json @@ -9,19 +9,19 @@ "darkTheme": "Dark", "lightTheme": "Light", "greenTheme": "Green", + "langArabic": "العربية", "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", - "langJapanese": "Japanese", - "langDutch": "Dutch", - "langUkranian": "Ukranian", + "langDutch": "Nederlands", + "langFrench": "Français", + "langGerman": "Deutsch", + "langItalian": "Italiano", + "langJapanese": "日本語", + "langPolish": "Polski", + "langBrPortuguese": "Português do Brasil", + "langRussian": "Русский", + "langSimplifiedChinese": "简体中文", + "langUkranian": "Украї́нська", + "langSpanish": "Español", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/public/locales/common/es.json b/invokeai/frontend/public/locales/common/es.json index f4259cdaf2..5f51d5e6cd 100644 --- a/invokeai/frontend/public/locales/common/es.json +++ b/invokeai/frontend/public/locales/common/es.json @@ -9,15 +9,6 @@ "darkTheme": "Oscuro", "lightTheme": "Claro", "greenTheme": "Verde", - "langEnglish": "Inglés", - "langRussian": "Ruso", - "langItalian": "Italiano", - "langBrPortuguese": "Portugués (Brasil)", - "langGerman": "Alemán", - "langPortuguese": "Portugués", - "langFrench": "French", - "langPolish": "Polish", - "langSpanish": "Español", "text2img": "Texto a Imagen", "img2img": "Imagen a Imagen", "unifiedCanvas": "Lienzo Unificado", @@ -29,7 +20,6 @@ "postProcessDesc3": "La Interfaz de Línea de Comandos de Invoke AI ofrece muchas otras características, incluyendo -Embiggen-.", "training": "Entrenamiento", "trainingDesc1": "Un flujo de trabajo dedicado para el entrenamiento de sus propios -embeddings- y puntos de control utilizando Inversión Textual y Dreambooth desde la interfaz web.", - "trainingDesc2": "InvokeAI already supports training custom embeddings using Textual Inversion using the main script.", "trainingDesc2": "InvokeAI ya soporta el entrenamiento de -embeddings- personalizados utilizando la Inversión Textual mediante el script principal.", "upload": "Subir imagen", "close": "Cerrar", diff --git a/invokeai/frontend/public/locales/common/fr.json b/invokeai/frontend/public/locales/common/fr.json index f276a91644..46d32b1dee 100644 --- a/invokeai/frontend/public/locales/common/fr.json +++ b/invokeai/frontend/public/locales/common/fr.json @@ -9,18 +9,6 @@ "darkTheme": "Sombre", "lightTheme": "Clair", "greenTheme": "Vert", - "langEnglish": "Anglais", - "langRussian": "Russe", - "langItalian": "Italien", - "langBrPortuguese": "Portugais (Brésilien)", - "langGerman": "Allemand", - "langPortuguese": "Portugais", - "langFrench": "Français", - "langPolish": "Polonais", - "langSimplifiedChinese": "Chinois simplifié", - "langSpanish": "Espagnol", - "langJapanese": "Japonais", - "langDutch": "Néerlandais", "text2img": "Texte en image", "img2img": "Image en image", "unifiedCanvas": "Canvas unifié", diff --git a/invokeai/frontend/public/locales/common/it.json b/invokeai/frontend/public/locales/common/it.json index d96f5cc32c..8b9702ab4d 100644 --- a/invokeai/frontend/public/locales/common/it.json +++ b/invokeai/frontend/public/locales/common/it.json @@ -9,18 +9,6 @@ "darkTheme": "Scuro", "lightTheme": "Chiaro", "greenTheme": "Verde", - "langEnglish": "Inglese", - "langRussian": "Russo", - "langItalian": "Italiano", - "langBrPortuguese": "Portoghese (Brasiliano)", - "langGerman": "Tedesco", - "langPortuguese": "Portoghese", - "langFrench": "Francese", - "langPolish": "Polacco", - "langSimplifiedChinese": "Cinese semplificato", - "langSpanish": "Spagnolo", - "langJapanese": "Giapponese", - "langDutch": "Olandese", "text2img": "Testo a Immagine", "img2img": "Immagine a Immagine", "unifiedCanvas": "Tela unificata", diff --git a/invokeai/frontend/public/locales/common/ja.json b/invokeai/frontend/public/locales/common/ja.json index be225e9d34..5280255cde 100644 --- a/invokeai/frontend/public/locales/common/ja.json +++ b/invokeai/frontend/public/locales/common/ja.json @@ -9,16 +9,6 @@ "darkTheme": "ダーク", "lightTheme": "ライト", "greenTheme": "緑", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/public/locales/common/nl.json b/invokeai/frontend/public/locales/common/nl.json index c61d97b9a7..326e75274a 100644 --- a/invokeai/frontend/public/locales/common/nl.json +++ b/invokeai/frontend/public/locales/common/nl.json @@ -9,17 +9,6 @@ "darkTheme": "Donker", "lightTheme": "Licht", "greenTheme": "Groen", - "langEnglish": "Engels", - "langRussian": "Russisch", - "langItalian": "Italiaans", - "langBrPortuguese": "Portugees (Braziliaans)", - "langGerman": "Duits", - "langPortuguese": "Portugees", - "langFrench": "Frans", - "langPolish": "Pools", - "langSimplifiedChinese": "Vereenvoudigd Chinees", - "langSpanish": "Spaans", - "langDutch": "Nederlands", "text2img": "Tekst naar afbeelding", "img2img": "Afbeelding naar afbeelding", "unifiedCanvas": "Centraal canvas", diff --git a/invokeai/frontend/public/locales/common/pl.json b/invokeai/frontend/public/locales/common/pl.json index 2b9f3b5903..384fa18628 100644 --- a/invokeai/frontend/public/locales/common/pl.json +++ b/invokeai/frontend/public/locales/common/pl.json @@ -9,13 +9,6 @@ "darkTheme": "Ciemny", "lightTheme": "Jasny", "greenTheme": "Zielony", - "langEnglish": "Angielski", - "langRussian": "Rosyjski", - "langItalian": "Włoski", - "langPortuguese": "Portugalski", - "langFrench": "Francuski", - "langPolish": "Polski", - "langSpanish": "Hiszpański", "text2img": "Tekst na obraz", "img2img": "Obraz na obraz", "unifiedCanvas": "Tryb uniwersalny", diff --git a/invokeai/frontend/public/locales/common/pt_br.json b/invokeai/frontend/public/locales/common/pt_br.json index 295bcf8184..52f3007797 100644 --- a/invokeai/frontend/public/locales/common/pt_br.json +++ b/invokeai/frontend/public/locales/common/pt_br.json @@ -9,13 +9,6 @@ "darkTheme": "Noite", "lightTheme": "Dia", "greenTheme": "Verde", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Português do Brasil", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langSpanish": "Spanish", "text2img": "Texto Para Imagem", "img2img": "Imagem Para Imagem", "unifiedCanvas": "Tela Unificada", diff --git a/invokeai/frontend/public/locales/common/ru.json b/invokeai/frontend/public/locales/common/ru.json index efa54fcd47..992cb5caf8 100644 --- a/invokeai/frontend/public/locales/common/ru.json +++ b/invokeai/frontend/public/locales/common/ru.json @@ -9,12 +9,6 @@ "darkTheme": "Темная", "lightTheme": "Светлая", "greenTheme": "Зеленая", - "langEnglish": "English", - "langRussian": "Русский", - "langItalian": "Italian", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langSpanish": "Spanish", "text2img": "Изображение из текста (text2img)", "img2img": "Изображение в изображение (img2img)", "unifiedCanvas": "Универсальный холст", diff --git a/invokeai/frontend/public/locales/common/ua.json b/invokeai/frontend/public/locales/common/ua.json index 69c1e7bc09..8b0d5b7ae8 100644 --- a/invokeai/frontend/public/locales/common/ua.json +++ b/invokeai/frontend/public/locales/common/ua.json @@ -9,11 +9,6 @@ "darkTheme": "Темна", "lightTheme": "Світла", "greenTheme": "Зелена", - "langEnglish": "Англійська", - "langRussian": "Російська", - "langItalian": "Iталійська", - "langPortuguese": "Португальська", - "langFrench": "Французька", "text2img": "Зображення із тексту (text2img)", "img2img": "Зображення із зображення (img2img)", "unifiedCanvas": "Універсальне полотно", diff --git a/invokeai/frontend/public/locales/common/zh_cn.json b/invokeai/frontend/public/locales/common/zh_cn.json index a787f13b76..d4219d8815 100644 --- a/invokeai/frontend/public/locales/common/zh_cn.json +++ b/invokeai/frontend/public/locales/common/zh_cn.json @@ -9,12 +9,6 @@ "darkTheme": "暗色", "lightTheme": "亮色", "greenTheme": "绿色", - "langEnglish": "英语", - "langRussian": "俄语", - "langItalian": "意大利语", - "langPortuguese": "葡萄牙语", - "langFrench": "法语", - "langChineseSimplified": "简体中文", "text2img": "文字到图像", "img2img": "图像到图像", "unifiedCanvas": "统一画布", From 71c6ae8789879d0e03b470f3075536f890924ca5 Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:22:18 +1100 Subject: [PATCH 7/9] fixes mislocated language file --- invokeai/frontend/public/locales/{options => parameters}/ar.json | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename invokeai/frontend/public/locales/{options => parameters}/ar.json (100%) diff --git a/invokeai/frontend/public/locales/options/ar.json b/invokeai/frontend/public/locales/parameters/ar.json similarity index 100% rename from invokeai/frontend/public/locales/options/ar.json rename to invokeai/frontend/public/locales/parameters/ar.json From 3ff40114fa0e2987f2afe416570c33ad951d859e Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:22:39 +1100 Subject: [PATCH 8/9] adds arabic to language picker --- .../src/features/system/components/LanguagePicker.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/invokeai/frontend/src/features/system/components/LanguagePicker.tsx b/invokeai/frontend/src/features/system/components/LanguagePicker.tsx index 74eeb17951..9233250a79 100644 --- a/invokeai/frontend/src/features/system/components/LanguagePicker.tsx +++ b/invokeai/frontend/src/features/system/components/LanguagePicker.tsx @@ -9,10 +9,10 @@ import { FaLanguage } from 'react-icons/fa'; export default function LanguagePicker() { const { t, i18n } = useTranslation(); - const LANGUAGES = { - en: t('common:langEnglish'), + ar: t('common:langArabic'), nl: t('common:langDutch'), + en: t('common:langEnglish'), fr: t('common:langFrench'), de: t('common:langGerman'), it: t('common:langItalian'), @@ -35,7 +35,6 @@ export default function LanguagePicker() { onClick={() => i18n.changeLanguage(lang)} className="modal-close-btn lang-select-btn" aria-label={LANGUAGES[lang as keyof typeof LANGUAGES]} - tooltip={LANGUAGES[lang as keyof typeof LANGUAGES]} size="sm" minWidth="200px" > From b60b5750af7565c3ac33c1e7e622bfa4eef2ba7b Mon Sep 17 00:00:00 2001 From: psychedelicious <4822129+psychedelicious@users.noreply.github.com> Date: Mon, 13 Feb 2023 21:23:26 +1100 Subject: [PATCH 9/9] builds frontend --- .../{index-ad762ffd.js => index-a93d4500.js} | 2 +- invokeai/frontend/dist/index.html | 2 +- invokeai/frontend/dist/locales/common/ar.json | 22 ++++------------- invokeai/frontend/dist/locales/common/de.json | 7 ------ .../frontend/dist/locales/common/en-US.json | 13 ---------- invokeai/frontend/dist/locales/common/en.json | 24 +++++++++---------- invokeai/frontend/dist/locales/common/es.json | 10 -------- invokeai/frontend/dist/locales/common/fr.json | 12 ---------- invokeai/frontend/dist/locales/common/it.json | 12 ---------- invokeai/frontend/dist/locales/common/ja.json | 10 -------- invokeai/frontend/dist/locales/common/nl.json | 11 --------- invokeai/frontend/dist/locales/common/pl.json | 7 ------ .../frontend/dist/locales/common/pt_br.json | 7 ------ invokeai/frontend/dist/locales/common/ru.json | 6 ----- invokeai/frontend/dist/locales/common/ua.json | 5 ---- .../frontend/dist/locales/common/zh_cn.json | 6 ----- .../frontend/dist/locales/hotkeys/ar.json | 2 +- .../dist/locales/modelmanager/ar.json | 18 +++++++------- .../locales/{options => parameters}/ar.json | 4 ++-- .../frontend/dist/locales/settings/ar.json | 2 +- invokeai/frontend/dist/locales/toast/ar.json | 4 ++-- .../frontend/dist/locales/tooltip/ar.json | 6 ++--- invokeai/frontend/stats.html | 2 +- 23 files changed, 38 insertions(+), 156 deletions(-) rename invokeai/frontend/dist/assets/{index-ad762ffd.js => index-a93d4500.js} (99%) rename invokeai/frontend/dist/locales/{options => parameters}/ar.json (96%) diff --git a/invokeai/frontend/dist/assets/index-ad762ffd.js b/invokeai/frontend/dist/assets/index-a93d4500.js similarity index 99% rename from invokeai/frontend/dist/assets/index-ad762ffd.js rename to invokeai/frontend/dist/assets/index-a93d4500.js index dee1d5d7e4..ee8c8c1674 100644 --- a/invokeai/frontend/dist/assets/index-ad762ffd.js +++ b/invokeai/frontend/dist/assets/index-a93d4500.js @@ -635,4 +635,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ZY(e,t){if(e){if(typeof e=="string")return e_(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n==="Object"&&e.constructor&&(n=e.constructor.name),n==="Map"||n==="Set")return Array.from(e);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return e_(e,t)}}function e_(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);nn)return[!1,gN(n)];if(e.sizen)return[!1,gN(n)]}return[!0,null]}function Sh(e){return e!=null}function QRe(e){var t=e.files,n=e.accept,r=e.minSize,i=e.maxSize,o=e.multiple,a=e.maxFiles,s=e.validator;return!o&&t.length>1||o&&a>=1&&t.length>a?!1:t.every(function(l){var u=QY(l,n),d=ay(u,1),h=d[0],m=JY(l,r,i),v=ay(m,1),b=v[0],S=s?s(l):null;return h&&b&&!S})}function fS(e){return typeof e.isPropagationStopped=="function"?e.isPropagationStopped():typeof e.cancelBubble<"u"?e.cancelBubble:!1}function Xb(e){return e.dataTransfer?Array.prototype.some.call(e.dataTransfer.types,function(t){return t==="Files"||t==="application/x-moz-file"}):!!e.target&&!!e.target.files}function vN(e){e.preventDefault()}function JRe(e){return e.indexOf("MSIE")!==-1||e.indexOf("Trident/")!==-1}function eDe(e){return e.indexOf("Edge/")!==-1}function tDe(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:window.navigator.userAgent;return JRe(e)||eDe(e)}function Il(){for(var e=arguments.length,t=new Array(e),n=0;n1?i-1:0),a=1;ae.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function yDe(e,t){if(e==null)return{};var n={},r=Object.keys(e),i,o;for(o=0;o=0)&&(n[i]=e[i]);return n}var lT=w.forwardRef(function(e,t){var n=e.children,r=hS(e,sDe),i=iK(r),o=i.open,a=hS(i,lDe);return w.useImperativeHandle(t,function(){return{open:o}},[o]),N.createElement(w.Fragment,null,n(Cr(Cr({},a),{},{open:o})))});lT.displayName="Dropzone";var rK={disabled:!1,getFilesFromEvent:ARe,maxSize:1/0,minSize:0,multiple:!0,maxFiles:0,preventDropOnDocument:!0,noClick:!1,noKeyboard:!1,noDrag:!1,noDragEventsBubbling:!1,validator:null,useFsAccessApi:!0,autoFocus:!1};lT.defaultProps=rK;lT.propTypes={children:jn.func,accept:jn.objectOf(jn.arrayOf(jn.string)),multiple:jn.bool,preventDropOnDocument:jn.bool,noClick:jn.bool,noKeyboard:jn.bool,noDrag:jn.bool,noDragEventsBubbling:jn.bool,minSize:jn.number,maxSize:jn.number,maxFiles:jn.number,disabled:jn.bool,getFilesFromEvent:jn.func,onFileDialogCancel:jn.func,onFileDialogOpen:jn.func,useFsAccessApi:jn.bool,autoFocus:jn.bool,onDragEnter:jn.func,onDragLeave:jn.func,onDragOver:jn.func,onDrop:jn.func,onDropAccepted:jn.func,onDropRejected:jn.func,onError:jn.func,validator:jn.func};var r_={isFocused:!1,isFileDialogActive:!1,isDragActive:!1,isDragAccept:!1,isDragReject:!1,acceptedFiles:[],fileRejections:[]};function iK(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},t=Cr(Cr({},rK),e),n=t.accept,r=t.disabled,i=t.getFilesFromEvent,o=t.maxSize,a=t.minSize,s=t.multiple,l=t.maxFiles,u=t.onDragEnter,d=t.onDragLeave,h=t.onDragOver,m=t.onDrop,v=t.onDropAccepted,b=t.onDropRejected,S=t.onFileDialogCancel,k=t.onFileDialogOpen,E=t.useFsAccessApi,_=t.autoFocus,T=t.preventDropOnDocument,A=t.noClick,I=t.noKeyboard,R=t.noDrag,D=t.noDragEventsBubbling,j=t.onError,z=t.validator,V=w.useMemo(function(){return iDe(n)},[n]),K=w.useMemo(function(){return rDe(n)},[n]),te=w.useMemo(function(){return typeof k=="function"?k:bN},[k]),q=w.useMemo(function(){return typeof S=="function"?S:bN},[S]),$=w.useRef(null),U=w.useRef(null),X=w.useReducer(bDe,r_),Z=VC(X,2),W=Z[0],Q=Z[1],ie=W.isFocused,fe=W.isFileDialogActive,Se=w.useRef(typeof window<"u"&&window.isSecureContext&&E&&nDe()),Pe=function(){!Se.current&&fe&&setTimeout(function(){if(U.current){var Ne=U.current.files;Ne.length||(Q({type:"closeDialog"}),q())}},300)};w.useEffect(function(){return window.addEventListener("focus",Pe,!1),function(){window.removeEventListener("focus",Pe,!1)}},[U,fe,q,Se]);var ye=w.useRef([]),We=function(Ne){$.current&&$.current.contains(Ne.target)||(Ne.preventDefault(),ye.current=[])};w.useEffect(function(){return T&&(document.addEventListener("dragover",vN,!1),document.addEventListener("drop",We,!1)),function(){T&&(document.removeEventListener("dragover",vN),document.removeEventListener("drop",We))}},[$,T]),w.useEffect(function(){return!r&&_&&$.current&&$.current.focus(),function(){}},[$,_,r]);var De=w.useCallback(function(xe){j?j(xe):console.error(xe)},[j]),ot=w.useCallback(function(xe){xe.preventDefault(),xe.persist(),ae(xe),ye.current=[].concat(dDe(ye.current),[xe.target]),Xb(xe)&&Promise.resolve(i(xe)).then(function(Ne){if(!(fS(xe)&&!D)){var Ct=Ne.length,Dt=Ct>0&&QRe({files:Ne,accept:V,minSize:a,maxSize:o,multiple:s,maxFiles:l,validator:z}),Te=Ct>0&&!Dt;Q({isDragAccept:Dt,isDragReject:Te,isDragActive:!0,type:"setDraggedFiles"}),u&&u(xe)}}).catch(function(Ne){return De(Ne)})},[i,u,De,D,V,a,o,s,l,z]),He=w.useCallback(function(xe){xe.preventDefault(),xe.persist(),ae(xe);var Ne=Xb(xe);if(Ne&&xe.dataTransfer)try{xe.dataTransfer.dropEffect="copy"}catch{}return Ne&&h&&h(xe),!1},[h,D]),Be=w.useCallback(function(xe){xe.preventDefault(),xe.persist(),ae(xe);var Ne=ye.current.filter(function(Dt){return $.current&&$.current.contains(Dt)}),Ct=Ne.indexOf(xe.target);Ct!==-1&&Ne.splice(Ct,1),ye.current=Ne,!(Ne.length>0)&&(Q({type:"setDraggedFiles",isDragActive:!1,isDragAccept:!1,isDragReject:!1}),Xb(xe)&&d&&d(xe))},[$,d,D]),wt=w.useCallback(function(xe,Ne){var Ct=[],Dt=[];xe.forEach(function(Te){var At=QY(Te,V),$e=VC(At,2),vt=$e[0],tn=$e[1],Rn=JY(Te,a,o),Xe=VC(Rn,2),xt=Xe[0],ft=Xe[1],Ht=z?z(Te):null;if(vt&&xt&&!Ht)Ct.push(Te);else{var nn=[tn,ft];Ht&&(nn=nn.concat(Ht)),Dt.push({file:Te,errors:nn.filter(function(pr){return pr})})}}),(!s&&Ct.length>1||s&&l>=1&&Ct.length>l)&&(Ct.forEach(function(Te){Dt.push({file:Te,errors:[ZRe]})}),Ct.splice(0)),Q({acceptedFiles:Ct,fileRejections:Dt,type:"setFiles"}),m&&m(Ct,Dt,Ne),Dt.length>0&&b&&b(Dt,Ne),Ct.length>0&&v&&v(Ct,Ne)},[Q,s,V,a,o,l,m,v,b,z]),st=w.useCallback(function(xe){xe.preventDefault(),xe.persist(),ae(xe),ye.current=[],Xb(xe)&&Promise.resolve(i(xe)).then(function(Ne){fS(xe)&&!D||wt(Ne,xe)}).catch(function(Ne){return De(Ne)}),Q({type:"reset"})},[i,wt,De,D]),mt=w.useCallback(function(){if(Se.current){Q({type:"openDialog"}),te();var xe={multiple:s,types:K};window.showOpenFilePicker(xe).then(function(Ne){return i(Ne)}).then(function(Ne){wt(Ne,null),Q({type:"closeDialog"})}).catch(function(Ne){oDe(Ne)?(q(Ne),Q({type:"closeDialog"})):aDe(Ne)?(Se.current=!1,U.current?(U.current.value=null,U.current.click()):De(new Error("Cannot open the file picker because the https://developer.mozilla.org/en-US/docs/Web/API/File_System_Access_API is not supported and no was provided."))):De(Ne)});return}U.current&&(Q({type:"openDialog"}),te(),U.current.value=null,U.current.click())},[Q,te,q,E,wt,De,K,s]),St=w.useCallback(function(xe){!$.current||!$.current.isEqualNode(xe.target)||(xe.key===" "||xe.key==="Enter"||xe.keyCode===32||xe.keyCode===13)&&(xe.preventDefault(),mt())},[$,mt]),Le=w.useCallback(function(){Q({type:"focus"})},[]),lt=w.useCallback(function(){Q({type:"blur"})},[]),Mt=w.useCallback(function(){A||(tDe()?setTimeout(mt,0):mt())},[A,mt]),ut=function(Ne){return r?null:Ne},_t=function(Ne){return I?null:ut(Ne)},ln=function(Ne){return R?null:ut(Ne)},ae=function(Ne){D&&Ne.stopPropagation()},Re=w.useMemo(function(){return function(){var xe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ne=xe.refKey,Ct=Ne===void 0?"ref":Ne,Dt=xe.role,Te=xe.onKeyDown,At=xe.onFocus,$e=xe.onBlur,vt=xe.onClick,tn=xe.onDragEnter,Rn=xe.onDragOver,Xe=xe.onDragLeave,xt=xe.onDrop,ft=hS(xe,uDe);return Cr(Cr(n_({onKeyDown:_t(Il(Te,St)),onFocus:_t(Il(At,Le)),onBlur:_t(Il($e,lt)),onClick:ut(Il(vt,Mt)),onDragEnter:ln(Il(tn,ot)),onDragOver:ln(Il(Rn,He)),onDragLeave:ln(Il(Xe,Be)),onDrop:ln(Il(xt,st)),role:typeof Dt=="string"&&Dt!==""?Dt:"presentation"},Ct,$),!r&&!I?{tabIndex:0}:{}),ft)}},[$,St,Le,lt,Mt,ot,He,Be,st,I,R,r]),Ye=w.useCallback(function(xe){xe.stopPropagation()},[]),Ke=w.useMemo(function(){return function(){var xe=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},Ne=xe.refKey,Ct=Ne===void 0?"ref":Ne,Dt=xe.onChange,Te=xe.onClick,At=hS(xe,cDe),$e=n_({accept:V,multiple:s,type:"file",style:{display:"none"},onChange:ut(Il(Dt,st)),onClick:ut(Il(Te,Ye)),tabIndex:-1},Ct,U);return Cr(Cr({},$e),At)}},[U,n,s,st,r]);return Cr(Cr({},W),{},{isFocused:ie&&!r,getRootProps:Re,getInputProps:Ke,rootRef:$,inputRef:U,open:ut(mt)})}function bDe(e,t){switch(t.type){case"focus":return Cr(Cr({},e),{},{isFocused:!0});case"blur":return Cr(Cr({},e),{},{isFocused:!1});case"openDialog":return Cr(Cr({},r_),{},{isFileDialogActive:!0});case"closeDialog":return Cr(Cr({},e),{},{isFileDialogActive:!1});case"setDraggedFiles":return Cr(Cr({},e),{},{isDragActive:t.isDragActive,isDragAccept:t.isDragAccept,isDragReject:t.isDragReject});case"setFiles":return Cr(Cr({},e),{},{acceptedFiles:t.acceptedFiles,fileRejections:t.fileRejections});case"reset":return Cr({},r_);default:return e}}function bN(){}const SDe=e=>{const{isDragAccept:t,isDragReject:n,overlaySecondaryText:r,setIsHandlingUpload:i}=e;return Je("esc",()=>{i(!1)}),y.jsxs("div",{className:"dropzone-container",children:[t&&y.jsx("div",{className:"dropzone-overlay is-drag-accept",children:y.jsxs(Dh,{size:"lg",children:["Upload Image",r]})}),n&&y.jsxs("div",{className:"dropzone-overlay is-drag-reject",children:[y.jsx(Dh,{size:"lg",children:"Invalid Upload"}),y.jsx(Dh,{size:"md",children:"Must be single JPEG or PNG image"})]})]})},xDe=e=>{const{children:t}=e,n=Me(),r=he(Or),i=Ry({}),{t:o}=Ve(),[a,s]=w.useState(!1),{setOpenUploader:l}=xP(),u=w.useCallback(T=>{s(!0);const A=T.errors.reduce((I,R)=>`${I} -${R.message}`,"");i({title:o("toast:uploadFailed"),description:A,status:"error",isClosable:!0})},[o,i]),d=w.useCallback(async T=>{n(fD({imageFile:T}))},[n]),h=w.useCallback((T,A)=>{A.forEach(I=>{u(I)}),T.forEach(I=>{d(I)})},[d,u]),{getRootProps:m,getInputProps:v,isDragAccept:b,isDragReject:S,isDragActive:k,open:E}=iK({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:h,onDragOver:()=>s(!0),maxFiles:1});l(E),w.useEffect(()=>{const T=A=>{var j;const I=(j=A.clipboardData)==null?void 0:j.items;if(!I)return;const R=[];for(const z of I)z.kind==="file"&&["image/png","image/jpg"].includes(z.type)&&R.push(z);if(!R.length)return;if(A.stopImmediatePropagation(),R.length>1){i({description:o("toast:uploadFailedMultipleImagesDesc"),status:"error",isClosable:!0});return}const D=R[0].getAsFile();if(!D){i({description:o("toast:uploadFailedUnableToLoadDesc"),status:"error",isClosable:!0});return}n(fD({imageFile:D}))};return document.addEventListener("paste",T),()=>{document.removeEventListener("paste",T)}},[o,n,i,r]);const _=["img2img","unifiedCanvas"].includes(r)?` to ${es[r].tooltip}`:"";return y.jsx(SP.Provider,{value:E,children:y.jsxs("div",{...m({style:{}}),onKeyDown:T=>{T.key},children:[y.jsx("input",{...v()}),t,k&&a&&y.jsx(SDe,{isDragAccept:b,isDragReject:S,overlaySecondaryText:_,setIsHandlingUpload:s})]})})},wDe=at(ir,e=>e.log,{memoizeOptions:{resultEqualityCheck:(e,t)=>e.length===t.length}}),CDe=at(ir,e=>({shouldShowLogViewer:e.shouldShowLogViewer,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),_De=()=>{const e=Me(),t=he(wDe),{shouldShowLogViewer:n,hasError:r,wasErrorSeen:i}=he(CDe),[o,a]=w.useState(!0),s=w.useRef(null);w.useLayoutEffect(()=>{s.current!==null&&o&&(s.current.scrollTop=s.current.scrollHeight)},[o,t,n]);const l=()=>{e($U()),e(CC(!n))};Je("`",()=>{e(CC(!n))},[n]),Je("esc",()=>{e(CC(!1))});const u=()=>{s.current&&o&&s.current.scrollTop{const{timestamp:m,message:v,level:b}=d;return y.jsxs("div",{className:`console-entry console-${b}-color`,children:[y.jsxs("p",{className:"console-timestamp",children:[m,":"]}),y.jsx("p",{className:"console-message",children:v})]},h)})})}),n&&y.jsx(uo,{hasArrow:!0,label:o?"Autoscroll On":"Autoscroll Off",children:y.jsx(ss,{className:"console-autoscroll-icon-button","data-autoscroll-enabled":o,size:"sm","aria-label":"Toggle autoscroll",variant:"solid",icon:y.jsx(Qke,{}),onClick:()=>a(!o)})}),y.jsx(uo,{hasArrow:!0,label:n?"Hide Console":"Show Console",children:y.jsx(ss,{className:"console-toggle-icon-button","data-error-seen":r||!i,size:"sm",position:"fixed",variant:"solid","aria-label":"Toggle Log Viewer",icon:n?y.jsx(hEe,{}):y.jsx(pq,{}),onClick:l})})]})},kDe=at(ir,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),EDe=()=>{const{isProcessing:e,currentStep:t,totalSteps:n,currentStatusHasSteps:r}=he(kDe),i=t?Math.round(t*100/n):0;return y.jsx(BV,{value:i,isIndeterminate:e&&!r,className:"progress-bar"})};function PDe(e){const{title:t,hotkey:n,description:r}=e;return y.jsxs("div",{className:"hotkey-modal-item",children:[y.jsxs("div",{className:"hotkey-info",children:[y.jsx("p",{className:"hotkey-title",children:t}),r&&y.jsx("p",{className:"hotkey-description",children:r})]}),y.jsx("div",{className:"hotkey-key",children:n})]})}function TDe({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Wh(),{t:i}=Ve(),o=[{title:i("hotkeys:invoke.title"),desc:i("hotkeys:invoke.desc"),hotkey:"Ctrl+Enter"},{title:i("hotkeys:cancel.title"),desc:i("hotkeys:cancel.desc"),hotkey:"Shift+X"},{title:i("hotkeys:focusPrompt.title"),desc:i("hotkeys:focusPrompt.desc"),hotkey:"Alt+A"},{title:i("hotkeys:toggleOptions.title"),desc:i("hotkeys:toggleOptions.desc"),hotkey:"O"},{title:i("hotkeys:pinOptions.title"),desc:i("hotkeys:pinOptions.desc"),hotkey:"Shift+O"},{title:i("hotkeys:toggleViewer.title"),desc:i("hotkeys:toggleViewer.desc"),hotkey:"Z"},{title:i("hotkeys:toggleGallery.title"),desc:i("hotkeys:toggleGallery.desc"),hotkey:"G"},{title:i("hotkeys:maximizeWorkSpace.title"),desc:i("hotkeys:maximizeWorkSpace.desc"),hotkey:"F"},{title:i("hotkeys:changeTabs.title"),desc:i("hotkeys:changeTabs.desc"),hotkey:"1-5"},{title:i("hotkeys:consoleToggle.title"),desc:i("hotkeys:consoleToggle.desc"),hotkey:"`"}],a=[{title:i("hotkeys:setPrompt.title"),desc:i("hotkeys:setPrompt.desc"),hotkey:"P"},{title:i("hotkeys:setSeed.title"),desc:i("hotkeys:setSeed.desc"),hotkey:"S"},{title:i("hotkeys:setParameters.title"),desc:i("hotkeys:setParameters.desc"),hotkey:"A"},{title:i("hotkeys:restoreFaces.title"),desc:i("hotkeys:restoreFaces.desc"),hotkey:"Shift+R"},{title:i("hotkeys:upscale.title"),desc:i("hotkeys:upscale.desc"),hotkey:"Shift+U"},{title:i("hotkeys:showInfo.title"),desc:i("hotkeys:showInfo.desc"),hotkey:"I"},{title:i("hotkeys:sendToImageToImage.title"),desc:i("hotkeys:sendToImageToImage.desc"),hotkey:"Shift+I"},{title:i("hotkeys:deleteImage.title"),desc:i("hotkeys:deleteImage.desc"),hotkey:"Del"},{title:i("hotkeys:closePanels.title"),desc:i("hotkeys:closePanels.desc"),hotkey:"Esc"}],s=[{title:i("hotkeys:previousImage.title"),desc:i("hotkeys:previousImage.desc"),hotkey:"Arrow Left"},{title:i("hotkeys:nextImage.title"),desc:i("hotkeys:nextImage.desc"),hotkey:"Arrow Right"},{title:i("hotkeys:toggleGalleryPin.title"),desc:i("hotkeys:toggleGalleryPin.desc"),hotkey:"Shift+G"},{title:i("hotkeys:increaseGalleryThumbSize.title"),desc:i("hotkeys:increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:i("hotkeys:decreaseGalleryThumbSize.title"),desc:i("hotkeys:decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],l=[{title:i("hotkeys:selectBrush.title"),desc:i("hotkeys:selectBrush.desc"),hotkey:"B"},{title:i("hotkeys:selectEraser.title"),desc:i("hotkeys:selectEraser.desc"),hotkey:"E"},{title:i("hotkeys:decreaseBrushSize.title"),desc:i("hotkeys:decreaseBrushSize.desc"),hotkey:"["},{title:i("hotkeys:increaseBrushSize.title"),desc:i("hotkeys:increaseBrushSize.desc"),hotkey:"]"},{title:i("hotkeys:decreaseBrushOpacity.title"),desc:i("hotkeys:decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:i("hotkeys:increaseBrushOpacity.title"),desc:i("hotkeys:increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:i("hotkeys:moveTool.title"),desc:i("hotkeys:moveTool.desc"),hotkey:"V"},{title:i("hotkeys:fillBoundingBox.title"),desc:i("hotkeys:fillBoundingBox.desc"),hotkey:"Shift + F"},{title:i("hotkeys:eraseBoundingBox.title"),desc:i("hotkeys:eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:i("hotkeys:colorPicker.title"),desc:i("hotkeys:colorPicker.desc"),hotkey:"C"},{title:i("hotkeys:toggleSnap.title"),desc:i("hotkeys:toggleSnap.desc"),hotkey:"N"},{title:i("hotkeys:quickToggleMove.title"),desc:i("hotkeys:quickToggleMove.desc"),hotkey:"Hold Space"},{title:i("hotkeys:toggleLayer.title"),desc:i("hotkeys:toggleLayer.desc"),hotkey:"Q"},{title:i("hotkeys:clearMask.title"),desc:i("hotkeys:clearMask.desc"),hotkey:"Shift+C"},{title:i("hotkeys:hideMask.title"),desc:i("hotkeys:hideMask.desc"),hotkey:"H"},{title:i("hotkeys:showHideBoundingBox.title"),desc:i("hotkeys:showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:i("hotkeys:mergeVisible.title"),desc:i("hotkeys:mergeVisible.desc"),hotkey:"Shift+M"},{title:i("hotkeys:saveToGallery.title"),desc:i("hotkeys:saveToGallery.desc"),hotkey:"Shift+S"},{title:i("hotkeys:copyToClipboard.title"),desc:i("hotkeys:copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:i("hotkeys:downloadImage.title"),desc:i("hotkeys:downloadImage.desc"),hotkey:"Shift+D"},{title:i("hotkeys:undoStroke.title"),desc:i("hotkeys:undoStroke.desc"),hotkey:"Ctrl+Z"},{title:i("hotkeys:redoStroke.title"),desc:i("hotkeys:redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:i("hotkeys:resetView.title"),desc:i("hotkeys:resetView.desc"),hotkey:"R"},{title:i("hotkeys:previousStagingImage.title"),desc:i("hotkeys:previousStagingImage.desc"),hotkey:"Arrow Left"},{title:i("hotkeys:nextStagingImage.title"),desc:i("hotkeys:nextStagingImage.desc"),hotkey:"Arrow Right"},{title:i("hotkeys:acceptStagingImage.title"),desc:i("hotkeys:acceptStagingImage.desc"),hotkey:"Enter"}],u=d=>{const h=[];return d.forEach((m,v)=>{h.push(y.jsx(PDe,{title:m.title,description:m.desc,hotkey:m.hotkey},v))}),y.jsx("div",{className:"hotkey-modal-category",children:h})};return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:n}),y.jsxs(Yd,{isOpen:t,onClose:r,children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:" modal hotkeys-modal",children:[y.jsx(Ly,{className:"modal-close-btn"}),y.jsx("h1",{children:"Keyboard Shorcuts"}),y.jsx("div",{className:"hotkeys-modal-items",children:y.jsxs(ok,{allowMultiple:!0,children:[y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:appHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(o)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:generalHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(a)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:galleryHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(s)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:unifiedCanvasHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(l)})]})]})})]})]})]})}var SN=Array.isArray,xN=Object.keys,LDe=Object.prototype.hasOwnProperty,ADe=typeof Element<"u";function i_(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){var n=SN(e),r=SN(t),i,o,a;if(n&&r){if(o=e.length,o!=t.length)return!1;for(i=o;i--!==0;)if(!i_(e[i],t[i]))return!1;return!0}if(n!=r)return!1;var s=e instanceof Date,l=t instanceof Date;if(s!=l)return!1;if(s&&l)return e.getTime()==t.getTime();var u=e instanceof RegExp,d=t instanceof RegExp;if(u!=d)return!1;if(u&&d)return e.toString()==t.toString();var h=xN(e);if(o=h.length,o!==xN(t).length)return!1;for(i=o;i--!==0;)if(!LDe.call(t,h[i]))return!1;if(ADe&&e instanceof Element&&t instanceof Element)return e===t;for(i=o;i--!==0;)if(a=h[i],!(a==="_owner"&&e.$$typeof)&&!i_(e[a],t[a]))return!1;return!0}return e!==e&&t!==t}var md=function(t,n){try{return i_(t,n)}catch(r){if(r.message&&r.message.match(/stack|recursion/i)||r.number===-2146828260)return console.warn("Warning: react-fast-compare does not handle circular references.",r.name,r.message),!1;throw r}},ODe=function(t){return MDe(t)&&!IDe(t)};function MDe(e){return!!e&&typeof e=="object"}function IDe(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||NDe(e)}var RDe=typeof Symbol=="function"&&Symbol.for,DDe=RDe?Symbol.for("react.element"):60103;function NDe(e){return e.$$typeof===DDe}function jDe(e){return Array.isArray(e)?[]:{}}function pS(e,t){return t.clone!==!1&&t.isMergeableObject(e)?sy(jDe(e),e,t):e}function BDe(e,t,n){return e.concat(t).map(function(r){return pS(r,n)})}function $De(e,t,n){var r={};return n.isMergeableObject(e)&&Object.keys(e).forEach(function(i){r[i]=pS(e[i],n)}),Object.keys(t).forEach(function(i){!n.isMergeableObject(t[i])||!e[i]?r[i]=pS(t[i],n):r[i]=sy(e[i],t[i],n)}),r}function sy(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||BDe,n.isMergeableObject=n.isMergeableObject||ODe;var r=Array.isArray(t),i=Array.isArray(e),o=r===i;return o?r?n.arrayMerge(e,t,n):$De(e,t,n):pS(t,n)}sy.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,i){return sy(r,i,n)},{})};var o_=sy,FDe=typeof global=="object"&&global&&global.Object===Object&&global;const oK=FDe;var zDe=typeof self=="object"&&self&&self.Object===Object&&self,HDe=oK||zDe||Function("return this")();const mu=HDe;var VDe=mu.Symbol;const ef=VDe;var aK=Object.prototype,WDe=aK.hasOwnProperty,UDe=aK.toString,gv=ef?ef.toStringTag:void 0;function GDe(e){var t=WDe.call(e,gv),n=e[gv];try{e[gv]=void 0;var r=!0}catch{}var i=UDe.call(e);return r&&(t?e[gv]=n:delete e[gv]),i}var qDe=Object.prototype,YDe=qDe.toString;function KDe(e){return YDe.call(e)}var XDe="[object Null]",ZDe="[object Undefined]",wN=ef?ef.toStringTag:void 0;function xp(e){return e==null?e===void 0?ZDe:XDe:wN&&wN in Object(e)?GDe(e):KDe(e)}function sK(e,t){return function(n){return e(t(n))}}var QDe=sK(Object.getPrototypeOf,Object);const uT=QDe;function wp(e){return e!=null&&typeof e=="object"}var JDe="[object Object]",eNe=Function.prototype,tNe=Object.prototype,lK=eNe.toString,nNe=tNe.hasOwnProperty,rNe=lK.call(Object);function CN(e){if(!wp(e)||xp(e)!=JDe)return!1;var t=uT(e);if(t===null)return!0;var n=nNe.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&lK.call(n)==rNe}function iNe(){this.__data__=[],this.size=0}function uK(e,t){return e===t||e!==e&&t!==t}function cw(e,t){for(var n=e.length;n--;)if(uK(e[n][0],t))return n;return-1}var oNe=Array.prototype,aNe=oNe.splice;function sNe(e){var t=this.__data__,n=cw(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():aNe.call(t,n,1),--this.size,!0}function lNe(e){var t=this.__data__,n=cw(t,e);return n<0?void 0:t[n][1]}function uNe(e){return cw(this.__data__,e)>-1}function cNe(e,t){var n=this.__data__,r=cw(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function vc(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=vje}var yje="[object Arguments]",bje="[object Array]",Sje="[object Boolean]",xje="[object Date]",wje="[object Error]",Cje="[object Function]",_je="[object Map]",kje="[object Number]",Eje="[object Object]",Pje="[object RegExp]",Tje="[object Set]",Lje="[object String]",Aje="[object WeakMap]",Oje="[object ArrayBuffer]",Mje="[object DataView]",Ije="[object Float32Array]",Rje="[object Float64Array]",Dje="[object Int8Array]",Nje="[object Int16Array]",jje="[object Int32Array]",Bje="[object Uint8Array]",$je="[object Uint8ClampedArray]",Fje="[object Uint16Array]",zje="[object Uint32Array]",sr={};sr[Ije]=sr[Rje]=sr[Dje]=sr[Nje]=sr[jje]=sr[Bje]=sr[$je]=sr[Fje]=sr[zje]=!0;sr[yje]=sr[bje]=sr[Oje]=sr[Sje]=sr[Mje]=sr[xje]=sr[wje]=sr[Cje]=sr[_je]=sr[kje]=sr[Eje]=sr[Pje]=sr[Tje]=sr[Lje]=sr[Aje]=!1;function Hje(e){return wp(e)&&mK(e.length)&&!!sr[xp(e)]}function cT(e){return function(t){return e(t)}}var vK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,f2=vK&&typeof module=="object"&&module&&!module.nodeType&&module,Vje=f2&&f2.exports===vK,UC=Vje&&oK.process,Wje=function(){try{var e=f2&&f2.require&&f2.require("util").types;return e||UC&&UC.binding&&UC.binding("util")}catch{}}();const u0=Wje;var LN=u0&&u0.isTypedArray,Uje=LN?cT(LN):Hje;const Gje=Uje;var qje=Object.prototype,Yje=qje.hasOwnProperty;function yK(e,t){var n=qy(e),r=!n&&lje(e),i=!n&&!r&&gK(e),o=!n&&!r&&!i&&Gje(e),a=n||r||i||o,s=a?rje(e.length,String):[],l=s.length;for(var u in e)(t||Yje.call(e,u))&&!(a&&(u=="length"||i&&(u=="offset"||u=="parent")||o&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||mje(u,l)))&&s.push(u);return s}var Kje=Object.prototype;function dT(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Kje;return e===n}var Xje=sK(Object.keys,Object);const Zje=Xje;var Qje=Object.prototype,Jje=Qje.hasOwnProperty;function eBe(e){if(!dT(e))return Zje(e);var t=[];for(var n in Object(e))Jje.call(e,n)&&n!="constructor"&&t.push(n);return t}function bK(e){return e!=null&&mK(e.length)&&!cK(e)}function fT(e){return bK(e)?yK(e):eBe(e)}function tBe(e,t){return e&&fw(t,fT(t),e)}function nBe(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var rBe=Object.prototype,iBe=rBe.hasOwnProperty;function oBe(e){if(!Gy(e))return nBe(e);var t=dT(e),n=[];for(var r in e)r=="constructor"&&(t||!iBe.call(e,r))||n.push(r);return n}function hT(e){return bK(e)?yK(e,!0):oBe(e)}function aBe(e,t){return e&&fw(t,hT(t),e)}var SK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,AN=SK&&typeof module=="object"&&module&&!module.nodeType&&module,sBe=AN&&AN.exports===SK,ON=sBe?mu.Buffer:void 0,MN=ON?ON.allocUnsafe:void 0;function lBe(e,t){if(t)return e.slice();var n=e.length,r=MN?MN(n):new e.constructor(n);return e.copy(r),r}function xK(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n=0)&&(n[i]=e[i]);return n}function YN(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var KN=function(t){return Array.isArray(t)&&t.length===0},Go=function(t){return typeof t=="function"},hw=function(t){return t!==null&&typeof t=="object"},aFe=function(t){return String(Math.floor(Number(t)))===t},GC=function(t){return Object.prototype.toString.call(t)==="[object String]"},MK=function(t){return w.Children.count(t)===0},qC=function(t){return hw(t)&&Go(t.then)};function Vi(e,t,n,r){r===void 0&&(r=0);for(var i=OK(t);e&&r=0?[]:{}}}return(o===0?e:i)[a[o]]===n?e:(n===void 0?delete i[a[o]]:i[a[o]]=n,o===0&&n===void 0&&delete r[a[o]],r)}function IK(e,t,n,r){n===void 0&&(n=new WeakMap),r===void 0&&(r={});for(var i=0,o=Object.keys(e);i0?Re.map(function(Ke){return j(Ke,Vi(ae,Ke))}):[Promise.resolve("DO_NOT_DELETE_YOU_WILL_BE_FIRED")];return Promise.all(Ye).then(function(Ke){return Ke.reduce(function(xe,Ne,Ct){return Ne==="DO_NOT_DELETE_YOU_WILL_BE_FIRED"||Ne&&(xe=iu(xe,Re[Ct],Ne)),xe},{})})},[j]),V=w.useCallback(function(ae){return Promise.all([z(ae),m.validationSchema?D(ae):{},m.validate?R(ae):{}]).then(function(Re){var Ye=Re[0],Ke=Re[1],xe=Re[2],Ne=o_.all([Ye,Ke,xe],{arrayMerge:fFe});return Ne})},[m.validate,m.validationSchema,z,R,D]),K=Ka(function(ae){return ae===void 0&&(ae=A.values),I({type:"SET_ISVALIDATING",payload:!0}),V(ae).then(function(Re){return E.current&&(I({type:"SET_ISVALIDATING",payload:!1}),I({type:"SET_ERRORS",payload:Re})),Re})});w.useEffect(function(){a&&E.current===!0&&md(v.current,m.initialValues)&&K(v.current)},[a,K]);var te=w.useCallback(function(ae){var Re=ae&&ae.values?ae.values:v.current,Ye=ae&&ae.errors?ae.errors:b.current?b.current:m.initialErrors||{},Ke=ae&&ae.touched?ae.touched:S.current?S.current:m.initialTouched||{},xe=ae&&ae.status?ae.status:k.current?k.current:m.initialStatus;v.current=Re,b.current=Ye,S.current=Ke,k.current=xe;var Ne=function(){I({type:"RESET_FORM",payload:{isSubmitting:!!ae&&!!ae.isSubmitting,errors:Ye,touched:Ke,status:xe,values:Re,isValidating:!!ae&&!!ae.isValidating,submitCount:ae&&ae.submitCount&&typeof ae.submitCount=="number"?ae.submitCount:0}})};if(m.onReset){var Ct=m.onReset(A.values,st);qC(Ct)?Ct.then(Ne):Ne()}else Ne()},[m.initialErrors,m.initialStatus,m.initialTouched]);w.useEffect(function(){E.current===!0&&!md(v.current,m.initialValues)&&(u&&(v.current=m.initialValues,te()),a&&K(v.current))},[u,m.initialValues,te,a,K]),w.useEffect(function(){u&&E.current===!0&&!md(b.current,m.initialErrors)&&(b.current=m.initialErrors||uh,I({type:"SET_ERRORS",payload:m.initialErrors||uh}))},[u,m.initialErrors]),w.useEffect(function(){u&&E.current===!0&&!md(S.current,m.initialTouched)&&(S.current=m.initialTouched||Zb,I({type:"SET_TOUCHED",payload:m.initialTouched||Zb}))},[u,m.initialTouched]),w.useEffect(function(){u&&E.current===!0&&!md(k.current,m.initialStatus)&&(k.current=m.initialStatus,I({type:"SET_STATUS",payload:m.initialStatus}))},[u,m.initialStatus,m.initialTouched]);var q=Ka(function(ae){if(_.current[ae]&&Go(_.current[ae].validate)){var Re=Vi(A.values,ae),Ye=_.current[ae].validate(Re);return qC(Ye)?(I({type:"SET_ISVALIDATING",payload:!0}),Ye.then(function(Ke){return Ke}).then(function(Ke){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ke}}),I({type:"SET_ISVALIDATING",payload:!1})})):(I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ye}}),Promise.resolve(Ye))}else if(m.validationSchema)return I({type:"SET_ISVALIDATING",payload:!0}),D(A.values,ae).then(function(Ke){return Ke}).then(function(Ke){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ke[ae]}}),I({type:"SET_ISVALIDATING",payload:!1})});return Promise.resolve()}),$=w.useCallback(function(ae,Re){var Ye=Re.validate;_.current[ae]={validate:Ye}},[]),U=w.useCallback(function(ae){delete _.current[ae]},[]),X=Ka(function(ae,Re){I({type:"SET_TOUCHED",payload:ae});var Ye=Re===void 0?i:Re;return Ye?K(A.values):Promise.resolve()}),Z=w.useCallback(function(ae){I({type:"SET_ERRORS",payload:ae})},[]),W=Ka(function(ae,Re){var Ye=Go(ae)?ae(A.values):ae;I({type:"SET_VALUES",payload:Ye});var Ke=Re===void 0?n:Re;return Ke?K(Ye):Promise.resolve()}),Q=w.useCallback(function(ae,Re){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Re}})},[]),ie=Ka(function(ae,Re,Ye){I({type:"SET_FIELD_VALUE",payload:{field:ae,value:Re}});var Ke=Ye===void 0?n:Ye;return Ke?K(iu(A.values,ae,Re)):Promise.resolve()}),fe=w.useCallback(function(ae,Re){var Ye=Re,Ke=ae,xe;if(!GC(ae)){ae.persist&&ae.persist();var Ne=ae.target?ae.target:ae.currentTarget,Ct=Ne.type,Dt=Ne.name,Te=Ne.id,At=Ne.value,$e=Ne.checked,vt=Ne.outerHTML,tn=Ne.options,Rn=Ne.multiple;Ye=Re||Dt||Te,Ke=/number|range/.test(Ct)?(xe=parseFloat(At),isNaN(xe)?"":xe):/checkbox/.test(Ct)?pFe(Vi(A.values,Ye),$e,At):tn&&Rn?hFe(tn):At}Ye&&ie(Ye,Ke)},[ie,A.values]),Se=Ka(function(ae){if(GC(ae))return function(Re){return fe(Re,ae)};fe(ae)}),Pe=Ka(function(ae,Re,Ye){Re===void 0&&(Re=!0),I({type:"SET_FIELD_TOUCHED",payload:{field:ae,value:Re}});var Ke=Ye===void 0?i:Ye;return Ke?K(A.values):Promise.resolve()}),ye=w.useCallback(function(ae,Re){ae.persist&&ae.persist();var Ye=ae.target,Ke=Ye.name,xe=Ye.id,Ne=Ye.outerHTML,Ct=Re||Ke||xe;Pe(Ct,!0)},[Pe]),We=Ka(function(ae){if(GC(ae))return function(Re){return ye(Re,ae)};ye(ae)}),De=w.useCallback(function(ae){Go(ae)?I({type:"SET_FORMIK_STATE",payload:ae}):I({type:"SET_FORMIK_STATE",payload:function(){return ae}})},[]),ot=w.useCallback(function(ae){I({type:"SET_STATUS",payload:ae})},[]),He=w.useCallback(function(ae){I({type:"SET_ISSUBMITTING",payload:ae})},[]),Be=Ka(function(){return I({type:"SUBMIT_ATTEMPT"}),K().then(function(ae){var Re=ae instanceof Error,Ye=!Re&&Object.keys(ae).length===0;if(Ye){var Ke;try{if(Ke=mt(),Ke===void 0)return}catch(xe){throw xe}return Promise.resolve(Ke).then(function(xe){return E.current&&I({type:"SUBMIT_SUCCESS"}),xe}).catch(function(xe){if(E.current)throw I({type:"SUBMIT_FAILURE"}),xe})}else if(E.current&&(I({type:"SUBMIT_FAILURE"}),Re))throw ae})}),wt=Ka(function(ae){ae&&ae.preventDefault&&Go(ae.preventDefault)&&ae.preventDefault(),ae&&ae.stopPropagation&&Go(ae.stopPropagation)&&ae.stopPropagation(),Be().catch(function(Re){console.warn("Warning: An unhandled error was caught from submitForm()",Re)})}),st={resetForm:te,validateForm:K,validateField:q,setErrors:Z,setFieldError:Q,setFieldTouched:Pe,setFieldValue:ie,setStatus:ot,setSubmitting:He,setTouched:X,setValues:W,setFormikState:De,submitForm:Be},mt=Ka(function(){return d(A.values,st)}),St=Ka(function(ae){ae&&ae.preventDefault&&Go(ae.preventDefault)&&ae.preventDefault(),ae&&ae.stopPropagation&&Go(ae.stopPropagation)&&ae.stopPropagation(),te()}),Le=w.useCallback(function(ae){return{value:Vi(A.values,ae),error:Vi(A.errors,ae),touched:!!Vi(A.touched,ae),initialValue:Vi(v.current,ae),initialTouched:!!Vi(S.current,ae),initialError:Vi(b.current,ae)}},[A.errors,A.touched,A.values]),lt=w.useCallback(function(ae){return{setValue:function(Ye,Ke){return ie(ae,Ye,Ke)},setTouched:function(Ye,Ke){return Pe(ae,Ye,Ke)},setError:function(Ye){return Q(ae,Ye)}}},[ie,Pe,Q]),Mt=w.useCallback(function(ae){var Re=hw(ae),Ye=Re?ae.name:ae,Ke=Vi(A.values,Ye),xe={name:Ye,value:Ke,onChange:Se,onBlur:We};if(Re){var Ne=ae.type,Ct=ae.value,Dt=ae.as,Te=ae.multiple;Ne==="checkbox"?Ct===void 0?xe.checked=!!Ke:(xe.checked=!!(Array.isArray(Ke)&&~Ke.indexOf(Ct)),xe.value=Ct):Ne==="radio"?(xe.checked=Ke===Ct,xe.value=Ct):Dt==="select"&&Te&&(xe.value=xe.value||[],xe.multiple=!0)}return xe},[We,Se,A.values]),ut=w.useMemo(function(){return!md(v.current,A.values)},[v.current,A.values]),_t=w.useMemo(function(){return typeof s<"u"?ut?A.errors&&Object.keys(A.errors).length===0:s!==!1&&Go(s)?s(m):s:A.errors&&Object.keys(A.errors).length===0},[s,ut,A.errors,m]),ln=Gn({},A,{initialValues:v.current,initialErrors:b.current,initialTouched:S.current,initialStatus:k.current,handleBlur:We,handleChange:Se,handleReset:St,handleSubmit:wt,resetForm:te,setErrors:Z,setFormikState:De,setFieldTouched:Pe,setFieldValue:ie,setFieldError:Q,setStatus:ot,setSubmitting:He,setTouched:X,setValues:W,submitForm:Be,validateForm:K,validateField:q,isValid:_t,dirty:ut,unregisterField:U,registerField:$,getFieldProps:Mt,getFieldMeta:Le,getFieldHelpers:lt,validateOnBlur:i,validateOnChange:n,validateOnMount:a});return ln}function Yy(e){var t=uFe(e),n=e.component,r=e.children,i=e.render,o=e.innerRef;return w.useImperativeHandle(o,function(){return t}),w.createElement(sFe,{value:t},n?w.createElement(n,t):i?i(t):r?Go(r)?r(t):MK(r)?null:w.Children.only(r):null)}function cFe(e){var t={};if(e.inner){if(e.inner.length===0)return iu(t,e.path,e.message);for(var i=e.inner,n=Array.isArray(i),r=0,i=n?i:i[Symbol.iterator]();;){var o;if(n){if(r>=i.length)break;o=i[r++]}else{if(r=i.next(),r.done)break;o=r.value}var a=o;Vi(t,a.path)||(t=iu(t,a.path,a.message))}}return t}function dFe(e,t,n,r){n===void 0&&(n=!1),r===void 0&&(r={});var i=c_(e);return t[n?"validateSync":"validate"](i,{abortEarly:!1,context:r})}function c_(e){var t=Array.isArray(e)?[]:{};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=String(n);Array.isArray(e[r])===!0?t[r]=e[r].map(function(i){return Array.isArray(i)===!0||CN(i)?c_(i):i!==""?i:void 0}):CN(e[r])?t[r]=c_(e[r]):t[r]=e[r]!==""?e[r]:void 0}return t}function fFe(e,t,n){var r=e.slice();return t.forEach(function(o,a){if(typeof r[a]>"u"){var s=n.clone!==!1,l=s&&n.isMergeableObject(o);r[a]=l?o_(Array.isArray(o)?[]:{},o,n):o}else n.isMergeableObject(o)?r[a]=o_(e[a],o,n):e.indexOf(o)===-1&&r.push(o)}),r}function hFe(e){return Array.from(e).filter(function(t){return t.selected}).map(function(t){return t.value})}function pFe(e,t,n){if(typeof e=="boolean")return Boolean(t);var r=[],i=!1,o=-1;if(Array.isArray(e))r=e,o=e.indexOf(n),i=o>=0;else if(!n||n=="true"||n=="false")return Boolean(t);return t&&n&&!i?r.concat(n):i?r.slice(0,o).concat(r.slice(o+1)):r}var gFe=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"?w.useLayoutEffect:w.useEffect;function Ka(e){var t=w.useRef(e);return gFe(function(){t.current=e}),w.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;ir?i:r},0);return Array.from(Gn({},t,{length:n+1}))}else return[]},SFe=function(e){oFe(t,e);function t(r){var i;return i=e.call(this,r)||this,i.updateArrayField=function(o,a,s){var l=i.props,u=l.name,d=l.formik.setFormikState;d(function(h){var m=typeof s=="function"?s:o,v=typeof a=="function"?a:o,b=iu(h.values,u,o(Vi(h.values,u))),S=s?m(Vi(h.errors,u)):void 0,k=a?v(Vi(h.touched,u)):void 0;return KN(S)&&(S=void 0),KN(k)&&(k=void 0),Gn({},h,{values:b,errors:s?iu(h.errors,u,S):h.errors,touched:a?iu(h.touched,u,k):h.touched})})},i.push=function(o){return i.updateArrayField(function(a){return[].concat(c0(a),[iFe(o)])},!1,!1)},i.handlePush=function(o){return function(){return i.push(o)}},i.swap=function(o,a){return i.updateArrayField(function(s){return yFe(s,o,a)},!0,!0)},i.handleSwap=function(o,a){return function(){return i.swap(o,a)}},i.move=function(o,a){return i.updateArrayField(function(s){return vFe(s,o,a)},!0,!0)},i.handleMove=function(o,a){return function(){return i.move(o,a)}},i.insert=function(o,a){return i.updateArrayField(function(s){return YC(s,o,a)},function(s){return YC(s,o,null)},function(s){return YC(s,o,null)})},i.handleInsert=function(o,a){return function(){return i.insert(o,a)}},i.replace=function(o,a){return i.updateArrayField(function(s){return bFe(s,o,a)},!1,!1)},i.handleReplace=function(o,a){return function(){return i.replace(o,a)}},i.unshift=function(o){var a=-1;return i.updateArrayField(function(s){var l=s?[o].concat(s):[o];return a<0&&(a=l.length),l},function(s){var l=s?[null].concat(s):[null];return a<0&&(a=l.length),l},function(s){var l=s?[null].concat(s):[null];return a<0&&(a=l.length),l}),a},i.handleUnshift=function(o){return function(){return i.unshift(o)}},i.handleRemove=function(o){return function(){return i.remove(o)}},i.handlePop=function(){return function(){return i.pop()}},i.remove=i.remove.bind(YN(i)),i.pop=i.pop.bind(YN(i)),i}var n=t.prototype;return n.componentDidUpdate=function(i){this.props.validateOnChange&&this.props.formik.validateOnChange&&!md(Vi(i.formik.values,i.name),Vi(this.props.formik.values,this.props.name))&&this.props.formik.validateForm(this.props.formik.values)},n.remove=function(i){var o;return this.updateArrayField(function(a){var s=a?c0(a):[];return o||(o=s[i]),Go(s.splice)&&s.splice(i,1),s},!0,!0),o},n.pop=function(){var i;return this.updateArrayField(function(o){var a=o;return i||(i=a&&a.pop&&a.pop()),a},!0,!0),i},n.render=function(){var i={push:this.push,pop:this.pop,swap:this.swap,move:this.move,insert:this.insert,replace:this.replace,unshift:this.unshift,remove:this.remove,handlePush:this.handlePush,handlePop:this.handlePop,handleSwap:this.handleSwap,handleMove:this.handleMove,handleInsert:this.handleInsert,handleReplace:this.handleReplace,handleUnshift:this.handleUnshift,handleRemove:this.handleRemove},o=this.props,a=o.component,s=o.render,l=o.children,u=o.name,d=o.formik,h=Lh(d,["validate","validationSchema"]),m=Gn({},i,{form:h,name:u});return a?w.createElement(a,m):s?s(m):l?typeof l=="function"?l(m):MK(l)?null:w.Children.only(l):null},t}(w.Component);SFe.defaultProps={validateOnChange:!0};const xFe=at([ir],e=>{const{openModel:t,model_list:n}=e;return{model_list:n,openModel:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),XN=64,ZN=2048;function wFe(){const{openModel:e,model_list:t}=he(xFe),n=he(l=>l.system.isProcessing),r=Me(),{t:i}=Ve(),[o,a]=w.useState({name:"",description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:"",vae:"",width:512,height:512,default:!1,format:"ckpt"});w.useEffect(()=>{var l,u,d,h,m,v,b;if(e){const S=ke.pickBy(t,(k,E)=>ke.isEqual(E,e));a({name:e,description:(l=S[e])==null?void 0:l.description,config:(u=S[e])==null?void 0:u.config,weights:(d=S[e])==null?void 0:d.weights,vae:(h=S[e])==null?void 0:h.vae,width:(m=S[e])==null?void 0:m.width,height:(v=S[e])==null?void 0:v.height,default:(b=S[e])==null?void 0:b.default,format:"ckpt"})}},[t,e]);const s=l=>{r($y({...l,width:Number(l.width),height:Number(l.height)}))};return e?y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",width:"100%",children:[y.jsx(Ge,{alignItems:"center",children:y.jsx(fn,{fontSize:"lg",fontWeight:"bold",children:e})}),y.jsx(Ge,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",paddingRight:"2rem",children:y.jsx(Yy,{enableReinitialize:!0,initialValues:o,onSubmit:s,children:({handleSubmit:l,errors:u,touched:d})=>y.jsx("form",{onSubmit:l,children:y.jsxs(yn,{rowGap:"0.5rem",alignItems:"start",children:[y.jsxs(dn,{isInvalid:!!u.description&&d.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:i("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"lg"}),u.description&&d.description?y.jsx(ur,{children:u.description}):y.jsx(lr,{margin:0,children:i("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.config&&d.config,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:i("modelmanager:config")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"config",name:"config",type:"text",width:"lg"}),u.config&&d.config?y.jsx(ur,{children:u.config}):y.jsx(lr,{margin:0,children:i("modelmanager:configValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.weights&&d.weights,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:i("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"weights",name:"weights",type:"text",width:"lg"}),u.weights&&d.weights?y.jsx(ur,{children:u.weights}):y.jsx(lr,{margin:0,children:i("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.vae&&d.vae,children:[y.jsx(kn,{htmlFor:"vae",fontSize:"sm",children:i("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae",name:"vae",type:"text",width:"lg"}),u.vae&&d.vae?y.jsx(ur,{children:u.vae}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(wy,{width:"100%",children:[y.jsxs(dn,{isInvalid:!!u.width&&d.width,children:[y.jsx(kn,{htmlFor:"width",fontSize:"sm",children:i("modelmanager:width")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"width",name:"width",children:({field:h,form:m})=>y.jsx(ra,{id:"width",name:"width",min:XN,max:ZN,step:64,value:m.values.width,onChange:v=>m.setFieldValue(h.name,Number(v))})}),u.width&&d.width?y.jsx(ur,{children:u.width}):y.jsx(lr,{margin:0,children:i("modelmanager:widthValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.height&&d.height,children:[y.jsx(kn,{htmlFor:"height",fontSize:"sm",children:i("modelmanager:height")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"height",name:"height",children:({field:h,form:m})=>y.jsx(ra,{id:"height",name:"height",min:XN,max:ZN,step:64,value:m.values.height,onChange:v=>m.setFieldValue(h.name,Number(v))})}),u.height&&d.height?y.jsx(ur,{children:u.height}):y.jsx(lr,{margin:0,children:i("modelmanager:heightValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:i("modelmanager:updateModel")})]})})})})]}):y.jsx(Ge,{width:"100%",justifyContent:"center",alignItems:"center",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",children:y.jsx(fn,{fontWeight:"bold",color:"var(--subtext-color-bright)",children:"Pick A Model To Edit"})})}const CFe=at([ir],e=>{const{openModel:t,model_list:n}=e;return{model_list:n,openModel:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}});function _Fe(){const{openModel:e,model_list:t}=he(CFe),n=he(l=>l.system.isProcessing),r=Me(),{t:i}=Ve(),[o,a]=w.useState({name:"",description:"",repo_id:"",path:"",vae:{repo_id:"",path:""},default:!1,format:"diffusers"});w.useEffect(()=>{var l,u,d,h,m,v,b,S,k,E,_,T,A,I,R,D;if(e){const j=ke.pickBy(t,(z,V)=>ke.isEqual(V,e));a({name:e,description:(l=j[e])==null?void 0:l.description,path:(u=j[e])!=null&&u.path&&((d=j[e])==null?void 0:d.path)!=="None"?(h=j[e])==null?void 0:h.path:"",repo_id:(m=j[e])!=null&&m.repo_id&&((v=j[e])==null?void 0:v.repo_id)!=="None"?(b=j[e])==null?void 0:b.repo_id:"",vae:{repo_id:(k=(S=j[e])==null?void 0:S.vae)!=null&&k.repo_id?(_=(E=j[e])==null?void 0:E.vae)==null?void 0:_.repo_id:"",path:(A=(T=j[e])==null?void 0:T.vae)!=null&&A.path?(R=(I=j[e])==null?void 0:I.vae)==null?void 0:R.path:""},default:(D=j[e])==null?void 0:D.default,format:"diffusers"})}},[t,e]);const s=l=>{const u=l;l.path===""&&delete u.path,l.repo_id===""&&delete u.repo_id,l.vae.path===""&&delete u.vae.path,l.vae.repo_id===""&&delete u.vae.repo_id,r($y(l))};return e?y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",width:"100%",children:[y.jsx(Ge,{alignItems:"center",children:y.jsx(fn,{fontSize:"lg",fontWeight:"bold",children:e})}),y.jsx(Ge,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",paddingRight:"2rem",children:y.jsx(Yy,{enableReinitialize:!0,initialValues:o,onSubmit:s,children:({handleSubmit:l,errors:u,touched:d})=>{var h,m,v,b,S,k,E,_,T,A;return y.jsx("form",{onSubmit:l,children:y.jsxs(yn,{rowGap:"0.5rem",alignItems:"start",children:[y.jsxs(dn,{isInvalid:!!u.description&&d.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:i("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"lg"}),u.description&&d.description?y.jsx(ur,{children:u.description}):y.jsx(lr,{margin:0,children:i("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.path&&d.path,isRequired:!0,children:[y.jsx(kn,{htmlFor:"path",fontSize:"sm",children:i("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"path",name:"path",type:"text",width:"lg"}),u.path&&d.path?y.jsx(ur,{children:u.path}):y.jsx(lr,{margin:0,children:i("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.repo_id&&d.repo_id,children:[y.jsx(kn,{htmlFor:"repo_id",fontSize:"sm",children:i("modelmanager:repo_id")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"repo_id",name:"repo_id",type:"text",width:"lg"}),u.repo_id&&d.repo_id?y.jsx(ur,{children:u.repo_id}):y.jsx(lr,{margin:0,children:i("modelmanager:repoIDValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((h=u.vae)!=null&&h.path)&&((m=d.vae)==null?void 0:m.path),children:[y.jsx(kn,{htmlFor:"vae.path",fontSize:"sm",children:i("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.path",name:"vae.path",type:"text",width:"lg"}),(v=u.vae)!=null&&v.path&&((b=d.vae)!=null&&b.path)?y.jsx(ur,{children:(S=u.vae)==null?void 0:S.path}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((k=u.vae)!=null&&k.repo_id)&&((E=d.vae)==null?void 0:E.repo_id),children:[y.jsx(kn,{htmlFor:"vae.repo_id",fontSize:"sm",children:i("modelmanager:vaeRepoID")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.repo_id",name:"vae.repo_id",type:"text",width:"lg"}),(_=u.vae)!=null&&_.repo_id&&((T=d.vae)!=null&&T.repo_id)?y.jsx(ur,{children:(A=u.vae)==null?void 0:A.repo_id}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeRepoIDValidationMsg")})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:i("modelmanager:updateModel")})]})})}})})]}):y.jsx(Ge,{width:"100%",justifyContent:"center",alignItems:"center",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",children:y.jsx(fn,{fontWeight:"bold",color:"var(--subtext-color-bright)",children:"Pick A Model To Edit"})})}const DK=at([ir],e=>{const{model_list:t}=e,n=[];return ke.forEach(t,r=>{n.push(r.weights)}),n});function kFe(){const{t:e}=Ve();return y.jsx(ko,{position:"absolute",zIndex:2,right:4,top:4,fontSize:"0.7rem",fontWeight:"bold",backgroundColor:"var(--accent-color)",padding:"0.2rem 0.5rem",borderRadius:"0.2rem",alignItems:"center",children:e("modelmanager:modelExists")})}function QN({model:e,modelsToAdd:t,setModelsToAdd:n}){const r=he(DK),i=o=>{t.includes(o.target.value)?n(ke.remove(t,a=>a!==o.target.value)):n([...t,o.target.value])};return y.jsxs(ko,{position:"relative",children:[r.includes(e.location)?y.jsx(kFe,{}):null,y.jsx(er,{value:e.name,label:y.jsx(y.Fragment,{children:y.jsxs(yn,{alignItems:"start",children:[y.jsx("p",{style:{fontWeight:"bold"},children:e.name}),y.jsx("p",{style:{fontStyle:"italic"},children:e.location})]})}),isChecked:t.includes(e.name),isDisabled:r.includes(e.location),onChange:i,padding:"1rem",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",_checked:{backgroundColor:"var(--accent-color)",color:"var(--text-color)"},_disabled:{backgroundColor:"var(--background-color-secondary)"}})]})}function EFe(){const e=Me(),{t}=Ve(),n=he(S=>S.system.searchFolder),r=he(S=>S.system.foundModels),i=he(DK),o=he(S=>S.ui.shouldShowExistingModelsInSearch),a=he(S=>S.system.isProcessing),[s,l]=N.useState([]),u=()=>{e(FU(null)),e(zU(null)),l([])},d=S=>{e(cD(S.checkpointFolder))},h=()=>{l([]),r&&r.forEach(S=>{i.includes(S.location)||l(k=>[...k,S.name])})},m=()=>{l([])},v=()=>{const S=r==null?void 0:r.filter(k=>s.includes(k.name));S==null||S.forEach(k=>{const E={name:k.name,description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:k.location,vae:"",width:512,height:512,default:!1,format:"ckpt"};e($y(E))}),l([])},b=()=>{const S=[],k=[];return r&&r.forEach((E,_)=>{i.includes(E.location)?k.push(y.jsx(QN,{model:E,modelsToAdd:s,setModelsToAdd:l},_)):S.push(y.jsx(QN,{model:E,modelsToAdd:s,setModelsToAdd:l},_))}),y.jsxs(y.Fragment,{children:[S,o&&k]})};return y.jsxs(y.Fragment,{children:[n?y.jsxs(Ge,{flexDirection:"column",padding:"1rem",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",rowGap:"0.5rem",position:"relative",children:[y.jsx("p",{style:{fontWeight:"bold",fontSize:"0.8rem",backgroundColor:"var(--background-color-secondary)",padding:"0.2rem 1rem",width:"max-content",borderRadius:"0.2rem"},children:t("modelmanager:checkpointFolder")}),y.jsx("p",{style:{fontWeight:"bold",fontSize:"0.8rem",maxWidth:"80%"},children:n}),y.jsx(Qe,{"aria-label":t("modelmanager:scanAgain"),tooltip:t("modelmanager:scanAgain"),icon:y.jsx(Wx,{}),position:"absolute",right:16,fontSize:18,disabled:a,onClick:()=>e(cD(n))}),y.jsx(Qe,{"aria-label":t("modelmanager:clearCheckpointFolder"),icon:y.jsx(zy,{style:{transform:"rotate(45deg)"}}),position:"absolute",right:5,onClick:u})]}):y.jsx(Yy,{initialValues:{checkpointFolder:""},onSubmit:S=>{d(S)},children:({handleSubmit:S})=>y.jsx("form",{onSubmit:S,children:y.jsxs(wy,{columnGap:"0.5rem",children:[y.jsx(dn,{isRequired:!0,width:"max-content",children:y.jsx(dr,{as:kr,id:"checkpointFolder",name:"checkpointFolder",type:"text",width:"lg",size:"md",label:t("modelmanager:checkpointFolder")})}),y.jsx(Qe,{icon:y.jsx(zEe,{}),"aria-label":t("modelmanager:findModels"),tooltip:t("modelmanager:findModels"),type:"submit",disabled:a})]})})}),r&&y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",children:[y.jsxs(Ge,{justifyContent:"space-between",alignItems:"center",children:[y.jsxs("p",{children:[t("modelmanager:modelsFound"),": ",r.length]}),y.jsxs("p",{children:[t("modelmanager:selected"),": ",s.length]})]}),y.jsxs(Ge,{columnGap:"0.5rem",justifyContent:"space-between",children:[y.jsxs(Ge,{columnGap:"0.5rem",children:[y.jsx(cr,{isDisabled:s.length===r.length,onClick:h,children:t("modelmanager:selectAll")}),y.jsx(cr,{isDisabled:s.length===0,onClick:m,children:t("modelmanager:deselectAll")}),y.jsx(er,{label:t("modelmanager:showExisting"),isChecked:o,onChange:()=>e(fCe(!o))})]}),y.jsx(cr,{isDisabled:s.length===0,onClick:v,backgroundColor:s.length>0?"var(--accent-color) !important":"",children:t("modelmanager:addSelected")})]}),y.jsxs(Ge,{rowGap:"1rem",flexDirection:"column",maxHeight:"18rem",overflowY:"scroll",paddingRight:"1rem",paddingLeft:"0.2rem",borderRadius:"0.2rem",children:[r.length>0?s.length===0&&y.jsx(fn,{fontWeight:"bold",fontSize:14,padding:"0.5rem",borderRadius:"0.2rem",margin:"0 0.5rem 0 1rem",textAlign:"center",backgroundColor:"var(--notice-color)",boxShadow:"0 0 200px 6px var(--notice-color)",marginTop:"1rem",width:"max-content",children:t("modelmanager:selectAndAdd")}):y.jsx(fn,{fontWeight:"bold",fontSize:14,padding:"0.5rem",borderRadius:"0.2rem",textAlign:"center",backgroundColor:"var(--status-bad-color)",children:t("modelmanager:noModelsFound")}),b()]})]})]})}const JN=64,ej=2048;function PFe(){const e=Me(),{t}=Ve(),n=he(u=>u.system.isProcessing);function r(u){return/\s/.test(u)}function i(u){let d;return r(u)&&(d=t("modelmanager:cannotUseSpaces")),d}const o={name:"",description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:"",vae:"",width:512,height:512,format:"ckpt",default:!1},a=u=>{e($y(u)),e(zh(null))},[s,l]=N.useState(!1);return y.jsxs(y.Fragment,{children:[y.jsx(Qe,{"aria-label":t("common:back"),tooltip:t("common:back"),onClick:()=>e(zh(null)),width:"max-content",position:"absolute",zIndex:1,size:"sm",right:12,top:3,icon:y.jsx(XG,{})}),y.jsx(EFe,{}),y.jsx(er,{label:t("modelmanager:addManually"),isChecked:s,onChange:()=>l(!s)}),s&&y.jsx(Yy,{initialValues:o,onSubmit:a,children:({handleSubmit:u,errors:d,touched:h})=>y.jsx("form",{onSubmit:u,children:y.jsxs(yn,{rowGap:"0.5rem",children:[y.jsx(fn,{fontSize:20,fontWeight:"bold",alignSelf:"start",children:t("modelmanager:manual")}),y.jsxs(dn,{isInvalid:!!d.name&&h.name,isRequired:!0,children:[y.jsx(kn,{htmlFor:"name",fontSize:"sm",children:t("modelmanager:name")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"name",name:"name",type:"text",validate:i,width:"2xl"}),d.name&&h.name?y.jsx(ur,{children:d.name}):y.jsx(lr,{margin:0,children:t("modelmanager:nameValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.description&&h.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:t("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"2xl"}),d.description&&h.description?y.jsx(ur,{children:d.description}):y.jsx(lr,{margin:0,children:t("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.config&&h.config,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:t("modelmanager:config")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"config",name:"config",type:"text",width:"2xl"}),d.config&&h.config?y.jsx(ur,{children:d.config}):y.jsx(lr,{margin:0,children:t("modelmanager:configValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.weights&&h.weights,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:t("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"weights",name:"weights",type:"text",width:"2xl"}),d.weights&&h.weights?y.jsx(ur,{children:d.weights}):y.jsx(lr,{margin:0,children:t("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.vae&&h.vae,children:[y.jsx(kn,{htmlFor:"vae",fontSize:"sm",children:t("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae",name:"vae",type:"text",width:"2xl"}),d.vae&&h.vae?y.jsx(ur,{children:d.vae}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(wy,{width:"100%",children:[y.jsxs(dn,{isInvalid:!!d.width&&h.width,children:[y.jsx(kn,{htmlFor:"width",fontSize:"sm",children:t("modelmanager:width")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"width",name:"width",children:({field:m,form:v})=>y.jsx(ra,{id:"width",name:"width",min:JN,max:ej,step:64,width:"90%",value:v.values.width,onChange:b=>v.setFieldValue(m.name,Number(b))})}),d.width&&h.width?y.jsx(ur,{children:d.width}):y.jsx(lr,{margin:0,children:t("modelmanager:widthValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.height&&h.height,children:[y.jsx(kn,{htmlFor:"height",fontSize:"sm",children:t("modelmanager:height")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"height",name:"height",children:({field:m,form:v})=>y.jsx(ra,{id:"height",name:"height",min:JN,max:ej,width:"90%",step:64,value:v.values.height,onChange:b=>v.setFieldValue(m.name,Number(b))})}),d.height&&h.height?y.jsx(ur,{children:d.height}):y.jsx(lr,{margin:0,children:t("modelmanager:heightValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:t("modelmanager:addModel")})]})})})]})}function Qb({children:e}){return y.jsx(Ge,{flexDirection:"column",backgroundColor:"var(--background-color)",padding:"1rem 1rem",borderRadius:"0.5rem",rowGap:"1rem",width:"100%",children:e})}function TFe(){const e=Me(),{t}=Ve(),n=he(s=>s.system.isProcessing);function r(s){return/\s/.test(s)}function i(s){let l;return r(s)&&(l=t("modelmanager:cannotUseSpaces")),l}const o={name:"",description:"",repo_id:"",path:"",format:"diffusers",default:!1,vae:{repo_id:"",path:""}},a=s=>{const l=s;s.path===""&&delete l.path,s.repo_id===""&&delete l.repo_id,s.vae.path===""&&delete l.vae.path,s.vae.repo_id===""&&delete l.vae.repo_id,e($y(l)),e(zh(null))};return y.jsxs(Ge,{children:[y.jsx(Qe,{"aria-label":t("common:back"),tooltip:t("common:back"),onClick:()=>e(zh(null)),width:"max-content",position:"absolute",zIndex:1,size:"sm",right:12,top:3,icon:y.jsx(XG,{})}),y.jsx(Yy,{initialValues:o,onSubmit:a,children:({handleSubmit:s,errors:l,touched:u})=>{var d,h,m,v,b,S,k,E,_,T;return y.jsx("form",{onSubmit:s,children:y.jsxs(yn,{rowGap:"0.5rem",children:[y.jsx(Qb,{children:y.jsxs(dn,{isInvalid:!!l.name&&u.name,isRequired:!0,children:[y.jsx(kn,{htmlFor:"name",fontSize:"sm",children:t("modelmanager:name")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"name",name:"name",type:"text",validate:i,width:"2xl",isRequired:!0}),l.name&&u.name?y.jsx(ur,{children:l.name}):y.jsx(lr,{margin:0,children:t("modelmanager:nameValidationMsg")})]})]})}),y.jsx(Qb,{children:y.jsxs(dn,{isInvalid:!!l.description&&u.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:t("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"2xl",isRequired:!0}),l.description&&u.description?y.jsx(ur,{children:l.description}):y.jsx(lr,{margin:0,children:t("modelmanager:descriptionValidationMsg")})]})]})}),y.jsxs(Qb,{children:[y.jsx(fn,{fontWeight:"bold",fontSize:"sm",children:t("modelmanager:formMessageDiffusersModelLocation")}),y.jsx(fn,{fontSize:"sm",fontStyle:"italic",color:"var(--text-color-secondary)",children:t("modelmanager:formMessageDiffusersModelLocationDesc")}),y.jsxs(dn,{isInvalid:!!l.path&&u.path,children:[y.jsx(kn,{htmlFor:"path",fontSize:"sm",children:t("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"path",name:"path",type:"text",width:"2xl"}),l.path&&u.path?y.jsx(ur,{children:l.path}):y.jsx(lr,{margin:0,children:t("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!l.repo_id&&u.repo_id,children:[y.jsx(kn,{htmlFor:"repo_id",fontSize:"sm",children:t("modelmanager:repo_id")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"repo_id",name:"repo_id",type:"text",width:"2xl"}),l.repo_id&&u.repo_id?y.jsx(ur,{children:l.repo_id}):y.jsx(lr,{margin:0,children:t("modelmanager:repoIDValidationMsg")})]})]})]}),y.jsxs(Qb,{children:[y.jsx(fn,{fontWeight:"bold",children:t("modelmanager:formMessageDiffusersVAELocation")}),y.jsx(fn,{fontSize:"sm",fontStyle:"italic",color:"var(--text-color-secondary)",children:t("modelmanager:formMessageDiffusersVAELocationDesc")}),y.jsxs(dn,{isInvalid:!!((d=l.vae)!=null&&d.path)&&((h=u.vae)==null?void 0:h.path),children:[y.jsx(kn,{htmlFor:"vae.path",fontSize:"sm",children:t("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.path",name:"vae.path",type:"text",width:"2xl"}),(m=l.vae)!=null&&m.path&&((v=u.vae)!=null&&v.path)?y.jsx(ur,{children:(b=l.vae)==null?void 0:b.path}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((S=l.vae)!=null&&S.repo_id)&&((k=u.vae)==null?void 0:k.repo_id),children:[y.jsx(kn,{htmlFor:"vae.repo_id",fontSize:"sm",children:t("modelmanager:vaeRepoID")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.repo_id",name:"vae.repo_id",type:"text",width:"2xl"}),(E=l.vae)!=null&&E.repo_id&&((_=u.vae)!=null&&_.repo_id)?y.jsx(ur,{children:(T=l.vae)==null?void 0:T.repo_id}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeRepoIDValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:t("modelmanager:addModel")})]})})}})]})}function tj({text:e,onClick:t}){return y.jsx(Ge,{position:"relative",width:"50%",height:"200px",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",justifyContent:"center",alignItems:"center",_hover:{cursor:"pointer",backgroundColor:"var(--accent-color)"},onClick:t,children:y.jsx(fn,{fontWeight:"bold",children:e})})}function LFe(){const{isOpen:e,onOpen:t,onClose:n}=Wh(),r=he(s=>s.ui.addNewModelUIOption),i=Me(),{t:o}=Ve(),a=()=>{n(),i(zh(null))};return y.jsxs(y.Fragment,{children:[y.jsx(cr,{"aria-label":o("modelmanager:addNewModel"),tooltip:o("modelmanager:addNewModel"),onClick:t,className:"modal-close-btn",size:"sm",children:y.jsxs(Ge,{columnGap:"0.5rem",alignItems:"center",children:[y.jsx(zy,{}),o("modelmanager:addNew")]})}),y.jsxs(Yd,{isOpen:e,onClose:a,size:"3xl",closeOnOverlayClick:!1,children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal add-model-modal",fontFamily:"Inter",children:[y.jsx(w0,{children:o("modelmanager:addNewModel")}),y.jsx(Ly,{marginTop:"0.3rem"}),y.jsxs(n0,{className:"add-model-modal-body",children:[r==null&&y.jsxs(Ge,{columnGap:"1rem",children:[y.jsx(tj,{text:o("modelmanager:addCheckpointModel"),onClick:()=>i(zh("ckpt"))}),y.jsx(tj,{text:o("modelmanager:addDiffuserModel"),onClick:()=>i(zh("diffusers"))})]}),r=="ckpt"&&y.jsx(PFe,{}),r=="diffusers"&&y.jsx(TFe,{})]})]})]})]})}function Jb(e){const{isProcessing:t,isConnected:n}=he(v=>v.system),r=he(v=>v.system.openModel),{t:i}=Ve(),o=Me(),{name:a,status:s,description:l}=e,u=()=>{o(VG(a))},d=()=>{o(LR(a))},h=()=>{o($8e(a)),o(LR(null))},m=()=>{switch(s){case"active":return"var(--status-good-color)";case"cached":return"var(--status-working-color)";case"not loaded":return"var(--text-color-secondary)"}};return y.jsxs(Ge,{alignItems:"center",padding:"0.5rem 0.5rem",borderRadius:"0.2rem",backgroundColor:a===r?"var(--accent-color)":"",_hover:{backgroundColor:a===r?"var(--accent-color)":"var(--background-color)"},children:[y.jsx(ko,{onClick:d,cursor:"pointer",children:y.jsx(uo,{label:l,hasArrow:!0,placement:"bottom",children:y.jsx(fn,{fontWeight:"bold",children:a})})}),y.jsx(fF,{onClick:d,cursor:"pointer"}),y.jsxs(Ge,{gap:2,alignItems:"center",children:[y.jsx(fn,{color:m(),children:s}),y.jsx(as,{size:"sm",onClick:u,isDisabled:s==="active"||t||!n,className:"modal-close-btn",children:i("modelmanager:load")}),y.jsx(Qe,{icon:y.jsx(LEe,{}),size:"sm",onClick:d,"aria-label":"Modify Config",isDisabled:s==="active"||t||!n,className:" modal-close-btn"}),y.jsx(oT,{title:i("modelmanager:deleteModel"),acceptCallback:h,acceptButtonText:i("modelmanager:delete"),triggerComponent:y.jsx(Qe,{icon:y.jsx(TEe,{}),size:"sm","aria-label":i("modelmanager:deleteConfig"),isDisabled:s==="active"||t||!n,className:" modal-close-btn",style:{backgroundColor:"var(--btn-delete-image)"}}),children:y.jsxs(Ge,{rowGap:"1rem",flexDirection:"column",children:[y.jsx("p",{style:{fontWeight:"bold"},children:i("modelmanager:deleteMsg1")}),y.jsx("p",{style:{color:"var(--text-color-secondary"},children:i("modelmanager:deleteMsg2")})]})})]})]})}const AFe=at(ir,e=>ke.map(e.model_list,(n,r)=>({name:r,...n})),{memoizeOptions:{resultEqualityCheck:ke.isEqual}});function KC({label:e,isActive:t,onClick:n}){return y.jsx(cr,{onClick:n,isActive:t,_active:{backgroundColor:"var(--accent-color)",_hover:{backgroundColor:"var(--accent-color)"}},size:"sm",children:e})}const OFe=()=>{const e=he(AFe),[t,n]=w.useState(""),[r,i]=w.useState("all"),[o,a]=w.useTransition(),{t:s}=Ve(),l=d=>{a(()=>{n(d.target.value)})},u=w.useMemo(()=>{const d=[],h=[],m=[],v=[];return e.forEach((b,S)=>{b.name.toLowerCase().includes(t.toLowerCase())&&(m.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S)),b.format===r&&v.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S))),b.format!=="diffusers"?d.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S)):h.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S))}),t!==""?r==="all"?y.jsx(ko,{marginTop:"1rem",children:m}):y.jsx(ko,{marginTop:"1rem",children:v}):y.jsxs(Ge,{flexDirection:"column",rowGap:"1.5rem",children:[r==="all"&&y.jsxs(y.Fragment,{children:[y.jsxs(ko,{children:[y.jsx(fn,{fontWeight:"bold",backgroundColor:"var(--background-color)",padding:"0.5rem 1rem",borderRadius:"0.5rem",margin:"1rem 0",width:"max-content",fontSize:"14",children:s("modelmanager:checkpointModels")}),d]}),y.jsxs(ko,{children:[y.jsx(fn,{fontWeight:"bold",backgroundColor:"var(--background-color)",padding:"0.5rem 1rem",borderRadius:"0.5rem",marginBottom:"0.5rem",width:"max-content",fontSize:"14",children:s("modelmanager:diffusersModels")}),h]})]}),r==="ckpt"&&y.jsx(Ge,{flexDirection:"column",marginTop:"1rem",children:d}),r==="diffusers"&&y.jsx(Ge,{flexDirection:"column",marginTop:"1rem",children:h})]})},[e,t,s,r]);return y.jsxs(Ge,{flexDirection:"column",rowGap:"2rem",width:"50%",minWidth:"50%",children:[y.jsxs(Ge,{justifyContent:"space-between",children:[y.jsx(fn,{fontSize:"1.4rem",fontWeight:"bold",children:s("modelmanager:availableModels")}),y.jsx(LFe,{})]}),y.jsx(kr,{onChange:l,label:s("modelmanager:search")}),y.jsxs(Ge,{flexDirection:"column",gap:1,maxHeight:window.innerHeight-360,overflow:"scroll",paddingRight:"1rem",children:[y.jsxs(Ge,{columnGap:"0.5rem",children:[y.jsx(KC,{label:s("modelmanager:allModels"),onClick:()=>i("all"),isActive:r==="all"}),y.jsx(KC,{label:s("modelmanager:checkpointModels"),onClick:()=>i("ckpt"),isActive:r==="ckpt"}),y.jsx(KC,{label:s("modelmanager:diffusersModels"),onClick:()=>i("diffusers"),isActive:r==="diffusers"})]}),u]})]})};function MFe({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Wh(),i=he(s=>s.system.model_list),o=he(s=>s.system.openModel),{t:a}=Ve();return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:n}),y.jsxs(Yd,{isOpen:t,onClose:r,size:"6xl",children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal",fontFamily:"Inter",children:[y.jsx(Ly,{className:"modal-close-btn"}),y.jsx(w0,{fontWeight:"bold",children:a("modelmanager:modelManager")}),y.jsxs(Ge,{padding:"0 1.5rem 1.5rem 1.5rem",width:"100%",columnGap:"2rem",children:[y.jsx(OFe,{}),o&&i[o].format==="diffusers"?y.jsx(_Fe,{}):y.jsx(wFe,{})]})]})]})]})}const IFe=at([ir],e=>{const{isProcessing:t,model_list:n}=e;return{models:ke.map(n,(i,o)=>o),isProcessing:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),RFe=()=>{const e=Me(),{models:t,isProcessing:n}=he(IFe),r=he(qG),i=o=>{e(VG(o.target.value))};return y.jsx(Ge,{style:{paddingLeft:"0.3rem"},children:y.jsx(tl,{style:{fontSize:"0.8rem"},tooltip:r.description,isDisabled:n,value:r.name,validValues:t,onChange:i})})},DFe=at([ir,mp],(e,t)=>{const{shouldDisplayInProgressType:n,shouldConfirmOnDelete:r,shouldDisplayGuides:i,model_list:o,saveIntermediatesInterval:a,enableImageDebugging:s}=e,{shouldUseCanvasBetaLayout:l}=t;return{shouldDisplayInProgressType:n,shouldConfirmOnDelete:r,shouldDisplayGuides:i,models:ke.map(o,(u,d)=>d),saveIntermediatesInterval:a,enableImageDebugging:s,shouldUseCanvasBetaLayout:l}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),NFe=({children:e})=>{const t=Me(),{t:n}=Ve(),r=he(_=>_.generation.steps),{isOpen:i,onOpen:o,onClose:a}=Wh(),{isOpen:s,onOpen:l,onClose:u}=Wh(),{shouldDisplayInProgressType:d,shouldConfirmOnDelete:h,shouldDisplayGuides:m,saveIntermediatesInterval:v,enableImageDebugging:b,shouldUseCanvasBetaLayout:S}=he(DFe),k=()=>{GG.purge().then(()=>{a(),l()})},E=_=>{_>r&&(_=r),_<1&&(_=1),t(Q6e(_))};return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:o}),y.jsxs(Yd,{isOpen:i,onClose:a,size:"lg",children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal settings-modal",children:[y.jsx(w0,{className:"settings-modal-header",children:n("common:settingsLabel")}),y.jsx(Ly,{className:"modal-close-btn"}),y.jsxs(n0,{className:"settings-modal-content",children:[y.jsxs("div",{className:"settings-modal-items",children:[y.jsxs("div",{className:"settings-modal-item",style:{gridAutoFlow:"row",rowGap:"0.5rem"},children:[y.jsx(tl,{label:n("settings:displayInProgress"),validValues:s7e,value:d,onChange:_=>t(U6e(_.target.value))}),d==="full-res"&&y.jsx(ra,{label:n("settings:saveSteps"),min:1,max:r,step:1,onChange:E,value:v,width:"auto",textAlign:"center"})]}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:confirmOnDelete"),isChecked:h,onChange:_=>t(BU(_.target.checked))}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:displayHelpIcons"),isChecked:m,onChange:_=>t(K6e(_.target.checked))}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:useCanvasBeta"),isChecked:S,onChange:_=>t(dCe(_.target.checked))})]}),y.jsxs("div",{className:"settings-modal-items",children:[y.jsx("h2",{style:{fontWeight:"bold"},children:"Developer"}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:enableImageDebugging"),isChecked:b,onChange:_=>t(J6e(_.target.checked))})]}),y.jsxs("div",{className:"settings-modal-reset",children:[y.jsx(Dh,{size:"md",children:n("settings:resetWebUI")}),y.jsx(as,{colorScheme:"red",onClick:k,children:n("settings:resetWebUI")}),y.jsx(fn,{children:n("settings:resetWebUIDesc1")}),y.jsx(fn,{children:n("settings:resetWebUIDesc2")})]})]}),y.jsx(yx,{children:y.jsx(as,{onClick:a,className:"modal-close-btn",children:n("common:close")})})]})]}),y.jsxs(Yd,{closeOnOverlayClick:!1,isOpen:s,onClose:u,isCentered:!0,children:[y.jsx(Kd,{bg:"blackAlpha.300",backdropFilter:"blur(40px)"}),y.jsx(Zh,{children:y.jsx(n0,{pb:6,pt:6,children:y.jsx(Ge,{justifyContent:"center",children:y.jsx(fn,{fontSize:"lg",children:y.jsx(fn,{children:n("settings:resetComplete")})})})})})]})]})},jFe=at(ir,e=>({isConnected:e.isConnected,isProcessing:e.isProcessing,currentIteration:e.currentIteration,totalIterations:e.totalIterations,currentStatus:e.currentStatus,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),BFe=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,currentStatus:i,hasError:o,wasErrorSeen:a}=he(jFe),s=Me(),{t:l}=Ve();let u;e&&!o?u="status-good":u="status-bad";let d=i;[l("common:statusGenerating"),l("common:statusPreparing"),l("common:statusSavingImage"),l("common:statusRestoringFaces"),l("common:statusUpscaling")].includes(d)&&(u="status-working"),d&&t&&r>1&&(d=`${l(d)} (${n}/${r})`);const m=o&&!a?"Click to clear, check logs for details":void 0,v=o&&!a?"pointer":"initial",b=()=>{(o||!a)&&s($U())};return y.jsx(uo,{label:m,children:y.jsx(fn,{cursor:v,onClick:b,className:`status ${u}`,children:l(d)})})};function $Fe(){const{t:e}=Ve(),{setColorMode:t,colorMode:n}=dy(),r=Me(),i=he(l=>l.ui.currentTheme),o={dark:e("common:darkTheme"),light:e("common:lightTheme"),green:e("common:greenTheme")};w.useEffect(()=>{n!==i&&t(i)},[t,n,i]);const a=l=>{r(aCe(l))},s=()=>{const l=[];return Object.keys(o).forEach(u=>{l.push(y.jsx(cr,{style:{width:"6rem"},leftIcon:i===u?y.jsx(PP,{}):void 0,size:"sm",onClick:()=>a(u),children:o[u]},u))}),l};return y.jsx(Zs,{trigger:"hover",triggerComponent:y.jsx(Qe,{"aria-label":e("common:themeLabel"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(pEe,{})}),children:y.jsx(yn,{align:"stretch",children:s()})})}function FFe(){const{t:e,i18n:t}=Ve(),n={en:e("common:langEnglish"),nl:e("common:langDutch"),fr:e("common:langFrench"),de:e("common:langGerman"),it:e("common:langItalian"),ja:e("common:langJapanese"),pl:e("common:langPolish"),pt_br:e("common:langBrPortuguese"),ru:e("common:langRussian"),zh_cn:e("common:langSimplifiedChinese"),es:e("common:langSpanish"),ua:e("common:langUkranian")},r=()=>{const i=[];return Object.keys(n).forEach(o=>{i.push(y.jsx(cr,{"data-selected":localStorage.getItem("i18nextLng")===o,onClick:()=>t.changeLanguage(o),className:"modal-close-btn lang-select-btn","aria-label":n[o],tooltip:n[o],size:"sm",minWidth:"200px",children:n[o]},o))}),i};return y.jsx(Zs,{trigger:"hover",triggerComponent:y.jsx(Qe,{"aria-label":e("common:languagePickerLabel"),tooltip:e("common:languagePickerLabel"),icon:y.jsx(dEe,{}),size:"sm",variant:"link","data-variant":"link",fontSize:26}),children:y.jsx(yn,{children:r()})})}const zFe=()=>{const{t:e}=Ve(),t=he(n=>n.system.app_version);return y.jsxs("div",{className:"site-header",children:[y.jsxs("div",{className:"site-header-left-side",children:[y.jsx("img",{src:LY,alt:"invoke-ai-logo"}),y.jsxs(Ge,{alignItems:"center",columnGap:"0.6rem",children:[y.jsxs(fn,{fontSize:"1.4rem",children:["invoke ",y.jsx("strong",{children:"ai"})]}),y.jsx(fn,{fontWeight:"bold",color:"var(--text-color-secondary)",marginTop:"0.2rem",children:t})]})]}),y.jsxs("div",{className:"site-header-right-side",children:[y.jsx(BFe,{}),y.jsx(RFe,{}),y.jsx(MFe,{children:y.jsx(Qe,{"aria-label":e("modelmanager:modelManager"),tooltip:e("modelmanager:modelManager"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(rEe,{})})}),y.jsx(TDe,{children:y.jsx(Qe,{"aria-label":e("common:hotkeysLabel"),tooltip:e("common:hotkeysLabel"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(cEe,{})})}),y.jsx($Fe,{}),y.jsx(FFe,{}),y.jsx(Qe,{"aria-label":e("common:reportBugLabel"),tooltip:e("common:reportBugLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI/issues",children:y.jsx(nEe,{})})}),y.jsx(Qe,{"aria-label":e("common:githubLabel"),tooltip:e("common:githubLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI",children:y.jsx(Zke,{})})}),y.jsx(Qe,{"aria-label":e("common:discordLabel"),tooltip:e("common:discordLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"https://discord.gg/ZmtBAhwWhy",children:y.jsx(Xke,{})})}),y.jsx(NFe,{children:y.jsx(Qe,{"aria-label":e("common:settingsLabel"),tooltip:e("common:settingsLabel"),variant:"link","data-variant":"link",fontSize:22,size:"sm",icon:y.jsx(VEe,{})})})]})]})};function HFe(){async function e(n=""){return await fetch(n,{method:"GET",cache:"no-cache"})}const t=()=>{const n=document.location;e(n+"/flaskwebgui-keep-server-alive").then(i=>i)};(!{}.NODE_ENV||{}.NODE_ENV==="production")&&document.addEventListener("DOMContentLoaded",()=>{t(),setInterval(t,3e3)})}const VFe=()=>{const e=Me(),t=he(a_e),n=Ry();w.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(tCe())},[e,n,t])},NK=at([yp,mp,Or],(e,t,n)=>{const{shouldPinParametersPanel:r,shouldShowParametersPanel:i,shouldHoldParametersPanelOpen:o,shouldUseCanvasBetaLayout:a}=t,{shouldShowGallery:s,shouldPinGallery:l,shouldHoldGalleryOpen:u}=e,d=a&&n==="unifiedCanvas",h=!d&&!(i||o&&!r)&&["txt2img","img2img","unifiedCanvas"].includes(n),m=!(s||u&&!l)&&["txt2img","img2img","unifiedCanvas"].includes(n);return{shouldPinParametersPanel:r,shouldShowProcessButtons:!d&&(!r||!i),shouldShowParametersPanelButton:h,shouldShowParametersPanel:i,shouldShowGallery:s,shouldPinGallery:l,shouldShowGalleryButton:m}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),WFe=()=>{const e=Me(),{shouldShowParametersPanel:t,shouldShowParametersPanelButton:n,shouldShowProcessButtons:r,shouldPinParametersPanel:i,shouldShowGallery:o,shouldPinGallery:a}=he(NK),s=()=>{e(Ku(!0)),i&&setTimeout(()=>e(vi(!0)),400)};return Je("f",()=>{o||t?(e(Ku(!1)),e(Bd(!1))):(e(Ku(!0)),e(Bd(!0))),(a||i)&&setTimeout(()=>e(vi(!0)),400)},[o,t]),n?y.jsxs("div",{className:"show-hide-button-options",children:[y.jsx(Qe,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":"Show Options Panel",onClick:s,children:y.jsx(AP,{})}),r&&y.jsxs(y.Fragment,{children:[y.jsx(XP,{iconButton:!0}),y.jsx(YP,{})]})]}):null},UFe=()=>{const e=Me(),{shouldShowGallery:t,shouldShowGalleryButton:n,shouldPinGallery:r,shouldShowParametersPanel:i,shouldPinParametersPanel:o}=he(NK),a=()=>{e(Bd(!0)),r&&e(vi(!0))};return Je("f",()=>{t||i?(e(Ku(!1)),e(Bd(!1))):(e(Ku(!0)),e(Bd(!0))),(r||o)&&setTimeout(()=>e(vi(!0)),400)},[t,i]),n?y.jsx(Qe,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":"Show Gallery",styleClass:"floating-show-hide-button right show-hide-button-gallery",onClick:a,children:y.jsx(Tq,{})}):null};HFe();const GFe=()=>(VFe(),y.jsxs("div",{className:"App",children:[y.jsxs(xDe,{children:[y.jsx(EDe,{}),y.jsxs("div",{className:"app-content",children:[y.jsx(zFe,{}),y.jsx(ERe,{})]}),y.jsx("div",{className:"app-console",children:y.jsx(_De,{})})]}),y.jsx(WFe,{}),y.jsx(UFe,{})]})),nj=()=>y.jsx(Ge,{width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",children:y.jsx(xy,{thickness:"2px",speed:"1s",emptyColor:"gray.200",color:"gray.400",size:"xl"})});const qFe=Aj({key:"invokeai-style-cache",prepend:!0});X9.createRoot(document.getElementById("root")).render(y.jsx(N.StrictMode,{children:y.jsx(T5e,{store:UG,children:y.jsx(mW,{loading:y.jsx(nj,{}),persistor:GG,children:y.jsx(qne,{value:qFe,children:y.jsx(q4e,{children:y.jsx(N.Suspense,{fallback:y.jsx(nj,{}),children:y.jsx(GFe,{})})})})})})})); +${R.message}`,"");i({title:o("toast:uploadFailed"),description:A,status:"error",isClosable:!0})},[o,i]),d=w.useCallback(async T=>{n(fD({imageFile:T}))},[n]),h=w.useCallback((T,A)=>{A.forEach(I=>{u(I)}),T.forEach(I=>{d(I)})},[d,u]),{getRootProps:m,getInputProps:v,isDragAccept:b,isDragReject:S,isDragActive:k,open:E}=iK({accept:{"image/png":[".png"],"image/jpeg":[".jpg",".jpeg",".png"]},noClick:!0,onDrop:h,onDragOver:()=>s(!0),maxFiles:1});l(E),w.useEffect(()=>{const T=A=>{var j;const I=(j=A.clipboardData)==null?void 0:j.items;if(!I)return;const R=[];for(const z of I)z.kind==="file"&&["image/png","image/jpg"].includes(z.type)&&R.push(z);if(!R.length)return;if(A.stopImmediatePropagation(),R.length>1){i({description:o("toast:uploadFailedMultipleImagesDesc"),status:"error",isClosable:!0});return}const D=R[0].getAsFile();if(!D){i({description:o("toast:uploadFailedUnableToLoadDesc"),status:"error",isClosable:!0});return}n(fD({imageFile:D}))};return document.addEventListener("paste",T),()=>{document.removeEventListener("paste",T)}},[o,n,i,r]);const _=["img2img","unifiedCanvas"].includes(r)?` to ${es[r].tooltip}`:"";return y.jsx(SP.Provider,{value:E,children:y.jsxs("div",{...m({style:{}}),onKeyDown:T=>{T.key},children:[y.jsx("input",{...v()}),t,k&&a&&y.jsx(SDe,{isDragAccept:b,isDragReject:S,overlaySecondaryText:_,setIsHandlingUpload:s})]})})},wDe=at(ir,e=>e.log,{memoizeOptions:{resultEqualityCheck:(e,t)=>e.length===t.length}}),CDe=at(ir,e=>({shouldShowLogViewer:e.shouldShowLogViewer,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),_De=()=>{const e=Me(),t=he(wDe),{shouldShowLogViewer:n,hasError:r,wasErrorSeen:i}=he(CDe),[o,a]=w.useState(!0),s=w.useRef(null);w.useLayoutEffect(()=>{s.current!==null&&o&&(s.current.scrollTop=s.current.scrollHeight)},[o,t,n]);const l=()=>{e($U()),e(CC(!n))};Je("`",()=>{e(CC(!n))},[n]),Je("esc",()=>{e(CC(!1))});const u=()=>{s.current&&o&&s.current.scrollTop{const{timestamp:m,message:v,level:b}=d;return y.jsxs("div",{className:`console-entry console-${b}-color`,children:[y.jsxs("p",{className:"console-timestamp",children:[m,":"]}),y.jsx("p",{className:"console-message",children:v})]},h)})})}),n&&y.jsx(uo,{hasArrow:!0,label:o?"Autoscroll On":"Autoscroll Off",children:y.jsx(ss,{className:"console-autoscroll-icon-button","data-autoscroll-enabled":o,size:"sm","aria-label":"Toggle autoscroll",variant:"solid",icon:y.jsx(Qke,{}),onClick:()=>a(!o)})}),y.jsx(uo,{hasArrow:!0,label:n?"Hide Console":"Show Console",children:y.jsx(ss,{className:"console-toggle-icon-button","data-error-seen":r||!i,size:"sm",position:"fixed",variant:"solid","aria-label":"Toggle Log Viewer",icon:n?y.jsx(hEe,{}):y.jsx(pq,{}),onClick:l})})]})},kDe=at(ir,e=>({isProcessing:e.isProcessing,currentStep:e.currentStep,totalSteps:e.totalSteps,currentStatusHasSteps:e.currentStatusHasSteps}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),EDe=()=>{const{isProcessing:e,currentStep:t,totalSteps:n,currentStatusHasSteps:r}=he(kDe),i=t?Math.round(t*100/n):0;return y.jsx(BV,{value:i,isIndeterminate:e&&!r,className:"progress-bar"})};function PDe(e){const{title:t,hotkey:n,description:r}=e;return y.jsxs("div",{className:"hotkey-modal-item",children:[y.jsxs("div",{className:"hotkey-info",children:[y.jsx("p",{className:"hotkey-title",children:t}),r&&y.jsx("p",{className:"hotkey-description",children:r})]}),y.jsx("div",{className:"hotkey-key",children:n})]})}function TDe({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Wh(),{t:i}=Ve(),o=[{title:i("hotkeys:invoke.title"),desc:i("hotkeys:invoke.desc"),hotkey:"Ctrl+Enter"},{title:i("hotkeys:cancel.title"),desc:i("hotkeys:cancel.desc"),hotkey:"Shift+X"},{title:i("hotkeys:focusPrompt.title"),desc:i("hotkeys:focusPrompt.desc"),hotkey:"Alt+A"},{title:i("hotkeys:toggleOptions.title"),desc:i("hotkeys:toggleOptions.desc"),hotkey:"O"},{title:i("hotkeys:pinOptions.title"),desc:i("hotkeys:pinOptions.desc"),hotkey:"Shift+O"},{title:i("hotkeys:toggleViewer.title"),desc:i("hotkeys:toggleViewer.desc"),hotkey:"Z"},{title:i("hotkeys:toggleGallery.title"),desc:i("hotkeys:toggleGallery.desc"),hotkey:"G"},{title:i("hotkeys:maximizeWorkSpace.title"),desc:i("hotkeys:maximizeWorkSpace.desc"),hotkey:"F"},{title:i("hotkeys:changeTabs.title"),desc:i("hotkeys:changeTabs.desc"),hotkey:"1-5"},{title:i("hotkeys:consoleToggle.title"),desc:i("hotkeys:consoleToggle.desc"),hotkey:"`"}],a=[{title:i("hotkeys:setPrompt.title"),desc:i("hotkeys:setPrompt.desc"),hotkey:"P"},{title:i("hotkeys:setSeed.title"),desc:i("hotkeys:setSeed.desc"),hotkey:"S"},{title:i("hotkeys:setParameters.title"),desc:i("hotkeys:setParameters.desc"),hotkey:"A"},{title:i("hotkeys:restoreFaces.title"),desc:i("hotkeys:restoreFaces.desc"),hotkey:"Shift+R"},{title:i("hotkeys:upscale.title"),desc:i("hotkeys:upscale.desc"),hotkey:"Shift+U"},{title:i("hotkeys:showInfo.title"),desc:i("hotkeys:showInfo.desc"),hotkey:"I"},{title:i("hotkeys:sendToImageToImage.title"),desc:i("hotkeys:sendToImageToImage.desc"),hotkey:"Shift+I"},{title:i("hotkeys:deleteImage.title"),desc:i("hotkeys:deleteImage.desc"),hotkey:"Del"},{title:i("hotkeys:closePanels.title"),desc:i("hotkeys:closePanels.desc"),hotkey:"Esc"}],s=[{title:i("hotkeys:previousImage.title"),desc:i("hotkeys:previousImage.desc"),hotkey:"Arrow Left"},{title:i("hotkeys:nextImage.title"),desc:i("hotkeys:nextImage.desc"),hotkey:"Arrow Right"},{title:i("hotkeys:toggleGalleryPin.title"),desc:i("hotkeys:toggleGalleryPin.desc"),hotkey:"Shift+G"},{title:i("hotkeys:increaseGalleryThumbSize.title"),desc:i("hotkeys:increaseGalleryThumbSize.desc"),hotkey:"Shift+Up"},{title:i("hotkeys:decreaseGalleryThumbSize.title"),desc:i("hotkeys:decreaseGalleryThumbSize.desc"),hotkey:"Shift+Down"}],l=[{title:i("hotkeys:selectBrush.title"),desc:i("hotkeys:selectBrush.desc"),hotkey:"B"},{title:i("hotkeys:selectEraser.title"),desc:i("hotkeys:selectEraser.desc"),hotkey:"E"},{title:i("hotkeys:decreaseBrushSize.title"),desc:i("hotkeys:decreaseBrushSize.desc"),hotkey:"["},{title:i("hotkeys:increaseBrushSize.title"),desc:i("hotkeys:increaseBrushSize.desc"),hotkey:"]"},{title:i("hotkeys:decreaseBrushOpacity.title"),desc:i("hotkeys:decreaseBrushOpacity.desc"),hotkey:"Shift + ["},{title:i("hotkeys:increaseBrushOpacity.title"),desc:i("hotkeys:increaseBrushOpacity.desc"),hotkey:"Shift + ]"},{title:i("hotkeys:moveTool.title"),desc:i("hotkeys:moveTool.desc"),hotkey:"V"},{title:i("hotkeys:fillBoundingBox.title"),desc:i("hotkeys:fillBoundingBox.desc"),hotkey:"Shift + F"},{title:i("hotkeys:eraseBoundingBox.title"),desc:i("hotkeys:eraseBoundingBox.desc"),hotkey:"Delete / Backspace"},{title:i("hotkeys:colorPicker.title"),desc:i("hotkeys:colorPicker.desc"),hotkey:"C"},{title:i("hotkeys:toggleSnap.title"),desc:i("hotkeys:toggleSnap.desc"),hotkey:"N"},{title:i("hotkeys:quickToggleMove.title"),desc:i("hotkeys:quickToggleMove.desc"),hotkey:"Hold Space"},{title:i("hotkeys:toggleLayer.title"),desc:i("hotkeys:toggleLayer.desc"),hotkey:"Q"},{title:i("hotkeys:clearMask.title"),desc:i("hotkeys:clearMask.desc"),hotkey:"Shift+C"},{title:i("hotkeys:hideMask.title"),desc:i("hotkeys:hideMask.desc"),hotkey:"H"},{title:i("hotkeys:showHideBoundingBox.title"),desc:i("hotkeys:showHideBoundingBox.desc"),hotkey:"Shift+H"},{title:i("hotkeys:mergeVisible.title"),desc:i("hotkeys:mergeVisible.desc"),hotkey:"Shift+M"},{title:i("hotkeys:saveToGallery.title"),desc:i("hotkeys:saveToGallery.desc"),hotkey:"Shift+S"},{title:i("hotkeys:copyToClipboard.title"),desc:i("hotkeys:copyToClipboard.desc"),hotkey:"Ctrl+C"},{title:i("hotkeys:downloadImage.title"),desc:i("hotkeys:downloadImage.desc"),hotkey:"Shift+D"},{title:i("hotkeys:undoStroke.title"),desc:i("hotkeys:undoStroke.desc"),hotkey:"Ctrl+Z"},{title:i("hotkeys:redoStroke.title"),desc:i("hotkeys:redoStroke.desc"),hotkey:"Ctrl+Shift+Z, Ctrl+Y"},{title:i("hotkeys:resetView.title"),desc:i("hotkeys:resetView.desc"),hotkey:"R"},{title:i("hotkeys:previousStagingImage.title"),desc:i("hotkeys:previousStagingImage.desc"),hotkey:"Arrow Left"},{title:i("hotkeys:nextStagingImage.title"),desc:i("hotkeys:nextStagingImage.desc"),hotkey:"Arrow Right"},{title:i("hotkeys:acceptStagingImage.title"),desc:i("hotkeys:acceptStagingImage.desc"),hotkey:"Enter"}],u=d=>{const h=[];return d.forEach((m,v)=>{h.push(y.jsx(PDe,{title:m.title,description:m.desc,hotkey:m.hotkey},v))}),y.jsx("div",{className:"hotkey-modal-category",children:h})};return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:n}),y.jsxs(Yd,{isOpen:t,onClose:r,children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:" modal hotkeys-modal",children:[y.jsx(Ly,{className:"modal-close-btn"}),y.jsx("h1",{children:"Keyboard Shorcuts"}),y.jsx("div",{className:"hotkeys-modal-items",children:y.jsxs(ok,{allowMultiple:!0,children:[y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:appHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(o)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:generalHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(a)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:galleryHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(s)})]}),y.jsxs(Gg,{children:[y.jsxs(Wg,{className:"hotkeys-modal-button",children:[y.jsx("h2",{children:i("hotkeys:unifiedCanvasHotkeys")}),y.jsx(Ug,{})]}),y.jsx(qg,{children:u(l)})]})]})})]})]})]})}var SN=Array.isArray,xN=Object.keys,LDe=Object.prototype.hasOwnProperty,ADe=typeof Element<"u";function i_(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){var n=SN(e),r=SN(t),i,o,a;if(n&&r){if(o=e.length,o!=t.length)return!1;for(i=o;i--!==0;)if(!i_(e[i],t[i]))return!1;return!0}if(n!=r)return!1;var s=e instanceof Date,l=t instanceof Date;if(s!=l)return!1;if(s&&l)return e.getTime()==t.getTime();var u=e instanceof RegExp,d=t instanceof RegExp;if(u!=d)return!1;if(u&&d)return e.toString()==t.toString();var h=xN(e);if(o=h.length,o!==xN(t).length)return!1;for(i=o;i--!==0;)if(!LDe.call(t,h[i]))return!1;if(ADe&&e instanceof Element&&t instanceof Element)return e===t;for(i=o;i--!==0;)if(a=h[i],!(a==="_owner"&&e.$$typeof)&&!i_(e[a],t[a]))return!1;return!0}return e!==e&&t!==t}var md=function(t,n){try{return i_(t,n)}catch(r){if(r.message&&r.message.match(/stack|recursion/i)||r.number===-2146828260)return console.warn("Warning: react-fast-compare does not handle circular references.",r.name,r.message),!1;throw r}},ODe=function(t){return MDe(t)&&!IDe(t)};function MDe(e){return!!e&&typeof e=="object"}function IDe(e){var t=Object.prototype.toString.call(e);return t==="[object RegExp]"||t==="[object Date]"||NDe(e)}var RDe=typeof Symbol=="function"&&Symbol.for,DDe=RDe?Symbol.for("react.element"):60103;function NDe(e){return e.$$typeof===DDe}function jDe(e){return Array.isArray(e)?[]:{}}function pS(e,t){return t.clone!==!1&&t.isMergeableObject(e)?sy(jDe(e),e,t):e}function BDe(e,t,n){return e.concat(t).map(function(r){return pS(r,n)})}function $De(e,t,n){var r={};return n.isMergeableObject(e)&&Object.keys(e).forEach(function(i){r[i]=pS(e[i],n)}),Object.keys(t).forEach(function(i){!n.isMergeableObject(t[i])||!e[i]?r[i]=pS(t[i],n):r[i]=sy(e[i],t[i],n)}),r}function sy(e,t,n){n=n||{},n.arrayMerge=n.arrayMerge||BDe,n.isMergeableObject=n.isMergeableObject||ODe;var r=Array.isArray(t),i=Array.isArray(e),o=r===i;return o?r?n.arrayMerge(e,t,n):$De(e,t,n):pS(t,n)}sy.all=function(t,n){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce(function(r,i){return sy(r,i,n)},{})};var o_=sy,FDe=typeof global=="object"&&global&&global.Object===Object&&global;const oK=FDe;var zDe=typeof self=="object"&&self&&self.Object===Object&&self,HDe=oK||zDe||Function("return this")();const mu=HDe;var VDe=mu.Symbol;const ef=VDe;var aK=Object.prototype,WDe=aK.hasOwnProperty,UDe=aK.toString,gv=ef?ef.toStringTag:void 0;function GDe(e){var t=WDe.call(e,gv),n=e[gv];try{e[gv]=void 0;var r=!0}catch{}var i=UDe.call(e);return r&&(t?e[gv]=n:delete e[gv]),i}var qDe=Object.prototype,YDe=qDe.toString;function KDe(e){return YDe.call(e)}var XDe="[object Null]",ZDe="[object Undefined]",wN=ef?ef.toStringTag:void 0;function xp(e){return e==null?e===void 0?ZDe:XDe:wN&&wN in Object(e)?GDe(e):KDe(e)}function sK(e,t){return function(n){return e(t(n))}}var QDe=sK(Object.getPrototypeOf,Object);const uT=QDe;function wp(e){return e!=null&&typeof e=="object"}var JDe="[object Object]",eNe=Function.prototype,tNe=Object.prototype,lK=eNe.toString,nNe=tNe.hasOwnProperty,rNe=lK.call(Object);function CN(e){if(!wp(e)||xp(e)!=JDe)return!1;var t=uT(e);if(t===null)return!0;var n=nNe.call(t,"constructor")&&t.constructor;return typeof n=="function"&&n instanceof n&&lK.call(n)==rNe}function iNe(){this.__data__=[],this.size=0}function uK(e,t){return e===t||e!==e&&t!==t}function cw(e,t){for(var n=e.length;n--;)if(uK(e[n][0],t))return n;return-1}var oNe=Array.prototype,aNe=oNe.splice;function sNe(e){var t=this.__data__,n=cw(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():aNe.call(t,n,1),--this.size,!0}function lNe(e){var t=this.__data__,n=cw(t,e);return n<0?void 0:t[n][1]}function uNe(e){return cw(this.__data__,e)>-1}function cNe(e,t){var n=this.__data__,r=cw(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function vc(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t-1&&e%1==0&&e-1&&e%1==0&&e<=vje}var yje="[object Arguments]",bje="[object Array]",Sje="[object Boolean]",xje="[object Date]",wje="[object Error]",Cje="[object Function]",_je="[object Map]",kje="[object Number]",Eje="[object Object]",Pje="[object RegExp]",Tje="[object Set]",Lje="[object String]",Aje="[object WeakMap]",Oje="[object ArrayBuffer]",Mje="[object DataView]",Ije="[object Float32Array]",Rje="[object Float64Array]",Dje="[object Int8Array]",Nje="[object Int16Array]",jje="[object Int32Array]",Bje="[object Uint8Array]",$je="[object Uint8ClampedArray]",Fje="[object Uint16Array]",zje="[object Uint32Array]",sr={};sr[Ije]=sr[Rje]=sr[Dje]=sr[Nje]=sr[jje]=sr[Bje]=sr[$je]=sr[Fje]=sr[zje]=!0;sr[yje]=sr[bje]=sr[Oje]=sr[Sje]=sr[Mje]=sr[xje]=sr[wje]=sr[Cje]=sr[_je]=sr[kje]=sr[Eje]=sr[Pje]=sr[Tje]=sr[Lje]=sr[Aje]=!1;function Hje(e){return wp(e)&&mK(e.length)&&!!sr[xp(e)]}function cT(e){return function(t){return e(t)}}var vK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,f2=vK&&typeof module=="object"&&module&&!module.nodeType&&module,Vje=f2&&f2.exports===vK,UC=Vje&&oK.process,Wje=function(){try{var e=f2&&f2.require&&f2.require("util").types;return e||UC&&UC.binding&&UC.binding("util")}catch{}}();const u0=Wje;var LN=u0&&u0.isTypedArray,Uje=LN?cT(LN):Hje;const Gje=Uje;var qje=Object.prototype,Yje=qje.hasOwnProperty;function yK(e,t){var n=qy(e),r=!n&&lje(e),i=!n&&!r&&gK(e),o=!n&&!r&&!i&&Gje(e),a=n||r||i||o,s=a?rje(e.length,String):[],l=s.length;for(var u in e)(t||Yje.call(e,u))&&!(a&&(u=="length"||i&&(u=="offset"||u=="parent")||o&&(u=="buffer"||u=="byteLength"||u=="byteOffset")||mje(u,l)))&&s.push(u);return s}var Kje=Object.prototype;function dT(e){var t=e&&e.constructor,n=typeof t=="function"&&t.prototype||Kje;return e===n}var Xje=sK(Object.keys,Object);const Zje=Xje;var Qje=Object.prototype,Jje=Qje.hasOwnProperty;function eBe(e){if(!dT(e))return Zje(e);var t=[];for(var n in Object(e))Jje.call(e,n)&&n!="constructor"&&t.push(n);return t}function bK(e){return e!=null&&mK(e.length)&&!cK(e)}function fT(e){return bK(e)?yK(e):eBe(e)}function tBe(e,t){return e&&fw(t,fT(t),e)}function nBe(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var rBe=Object.prototype,iBe=rBe.hasOwnProperty;function oBe(e){if(!Gy(e))return nBe(e);var t=dT(e),n=[];for(var r in e)r=="constructor"&&(t||!iBe.call(e,r))||n.push(r);return n}function hT(e){return bK(e)?yK(e,!0):oBe(e)}function aBe(e,t){return e&&fw(t,hT(t),e)}var SK=typeof exports=="object"&&exports&&!exports.nodeType&&exports,AN=SK&&typeof module=="object"&&module&&!module.nodeType&&module,sBe=AN&&AN.exports===SK,ON=sBe?mu.Buffer:void 0,MN=ON?ON.allocUnsafe:void 0;function lBe(e,t){if(t)return e.slice();var n=e.length,r=MN?MN(n):new e.constructor(n);return e.copy(r),r}function xK(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n=0)&&(n[i]=e[i]);return n}function YN(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}var KN=function(t){return Array.isArray(t)&&t.length===0},Go=function(t){return typeof t=="function"},hw=function(t){return t!==null&&typeof t=="object"},aFe=function(t){return String(Math.floor(Number(t)))===t},GC=function(t){return Object.prototype.toString.call(t)==="[object String]"},MK=function(t){return w.Children.count(t)===0},qC=function(t){return hw(t)&&Go(t.then)};function Vi(e,t,n,r){r===void 0&&(r=0);for(var i=OK(t);e&&r=0?[]:{}}}return(o===0?e:i)[a[o]]===n?e:(n===void 0?delete i[a[o]]:i[a[o]]=n,o===0&&n===void 0&&delete r[a[o]],r)}function IK(e,t,n,r){n===void 0&&(n=new WeakMap),r===void 0&&(r={});for(var i=0,o=Object.keys(e);i0?Re.map(function(Ke){return j(Ke,Vi(ae,Ke))}):[Promise.resolve("DO_NOT_DELETE_YOU_WILL_BE_FIRED")];return Promise.all(Ye).then(function(Ke){return Ke.reduce(function(xe,Ne,Ct){return Ne==="DO_NOT_DELETE_YOU_WILL_BE_FIRED"||Ne&&(xe=iu(xe,Re[Ct],Ne)),xe},{})})},[j]),V=w.useCallback(function(ae){return Promise.all([z(ae),m.validationSchema?D(ae):{},m.validate?R(ae):{}]).then(function(Re){var Ye=Re[0],Ke=Re[1],xe=Re[2],Ne=o_.all([Ye,Ke,xe],{arrayMerge:fFe});return Ne})},[m.validate,m.validationSchema,z,R,D]),K=Ka(function(ae){return ae===void 0&&(ae=A.values),I({type:"SET_ISVALIDATING",payload:!0}),V(ae).then(function(Re){return E.current&&(I({type:"SET_ISVALIDATING",payload:!1}),I({type:"SET_ERRORS",payload:Re})),Re})});w.useEffect(function(){a&&E.current===!0&&md(v.current,m.initialValues)&&K(v.current)},[a,K]);var te=w.useCallback(function(ae){var Re=ae&&ae.values?ae.values:v.current,Ye=ae&&ae.errors?ae.errors:b.current?b.current:m.initialErrors||{},Ke=ae&&ae.touched?ae.touched:S.current?S.current:m.initialTouched||{},xe=ae&&ae.status?ae.status:k.current?k.current:m.initialStatus;v.current=Re,b.current=Ye,S.current=Ke,k.current=xe;var Ne=function(){I({type:"RESET_FORM",payload:{isSubmitting:!!ae&&!!ae.isSubmitting,errors:Ye,touched:Ke,status:xe,values:Re,isValidating:!!ae&&!!ae.isValidating,submitCount:ae&&ae.submitCount&&typeof ae.submitCount=="number"?ae.submitCount:0}})};if(m.onReset){var Ct=m.onReset(A.values,st);qC(Ct)?Ct.then(Ne):Ne()}else Ne()},[m.initialErrors,m.initialStatus,m.initialTouched]);w.useEffect(function(){E.current===!0&&!md(v.current,m.initialValues)&&(u&&(v.current=m.initialValues,te()),a&&K(v.current))},[u,m.initialValues,te,a,K]),w.useEffect(function(){u&&E.current===!0&&!md(b.current,m.initialErrors)&&(b.current=m.initialErrors||uh,I({type:"SET_ERRORS",payload:m.initialErrors||uh}))},[u,m.initialErrors]),w.useEffect(function(){u&&E.current===!0&&!md(S.current,m.initialTouched)&&(S.current=m.initialTouched||Zb,I({type:"SET_TOUCHED",payload:m.initialTouched||Zb}))},[u,m.initialTouched]),w.useEffect(function(){u&&E.current===!0&&!md(k.current,m.initialStatus)&&(k.current=m.initialStatus,I({type:"SET_STATUS",payload:m.initialStatus}))},[u,m.initialStatus,m.initialTouched]);var q=Ka(function(ae){if(_.current[ae]&&Go(_.current[ae].validate)){var Re=Vi(A.values,ae),Ye=_.current[ae].validate(Re);return qC(Ye)?(I({type:"SET_ISVALIDATING",payload:!0}),Ye.then(function(Ke){return Ke}).then(function(Ke){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ke}}),I({type:"SET_ISVALIDATING",payload:!1})})):(I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ye}}),Promise.resolve(Ye))}else if(m.validationSchema)return I({type:"SET_ISVALIDATING",payload:!0}),D(A.values,ae).then(function(Ke){return Ke}).then(function(Ke){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Ke[ae]}}),I({type:"SET_ISVALIDATING",payload:!1})});return Promise.resolve()}),$=w.useCallback(function(ae,Re){var Ye=Re.validate;_.current[ae]={validate:Ye}},[]),U=w.useCallback(function(ae){delete _.current[ae]},[]),X=Ka(function(ae,Re){I({type:"SET_TOUCHED",payload:ae});var Ye=Re===void 0?i:Re;return Ye?K(A.values):Promise.resolve()}),Z=w.useCallback(function(ae){I({type:"SET_ERRORS",payload:ae})},[]),W=Ka(function(ae,Re){var Ye=Go(ae)?ae(A.values):ae;I({type:"SET_VALUES",payload:Ye});var Ke=Re===void 0?n:Re;return Ke?K(Ye):Promise.resolve()}),Q=w.useCallback(function(ae,Re){I({type:"SET_FIELD_ERROR",payload:{field:ae,value:Re}})},[]),ie=Ka(function(ae,Re,Ye){I({type:"SET_FIELD_VALUE",payload:{field:ae,value:Re}});var Ke=Ye===void 0?n:Ye;return Ke?K(iu(A.values,ae,Re)):Promise.resolve()}),fe=w.useCallback(function(ae,Re){var Ye=Re,Ke=ae,xe;if(!GC(ae)){ae.persist&&ae.persist();var Ne=ae.target?ae.target:ae.currentTarget,Ct=Ne.type,Dt=Ne.name,Te=Ne.id,At=Ne.value,$e=Ne.checked,vt=Ne.outerHTML,tn=Ne.options,Rn=Ne.multiple;Ye=Re||Dt||Te,Ke=/number|range/.test(Ct)?(xe=parseFloat(At),isNaN(xe)?"":xe):/checkbox/.test(Ct)?pFe(Vi(A.values,Ye),$e,At):tn&&Rn?hFe(tn):At}Ye&&ie(Ye,Ke)},[ie,A.values]),Se=Ka(function(ae){if(GC(ae))return function(Re){return fe(Re,ae)};fe(ae)}),Pe=Ka(function(ae,Re,Ye){Re===void 0&&(Re=!0),I({type:"SET_FIELD_TOUCHED",payload:{field:ae,value:Re}});var Ke=Ye===void 0?i:Ye;return Ke?K(A.values):Promise.resolve()}),ye=w.useCallback(function(ae,Re){ae.persist&&ae.persist();var Ye=ae.target,Ke=Ye.name,xe=Ye.id,Ne=Ye.outerHTML,Ct=Re||Ke||xe;Pe(Ct,!0)},[Pe]),We=Ka(function(ae){if(GC(ae))return function(Re){return ye(Re,ae)};ye(ae)}),De=w.useCallback(function(ae){Go(ae)?I({type:"SET_FORMIK_STATE",payload:ae}):I({type:"SET_FORMIK_STATE",payload:function(){return ae}})},[]),ot=w.useCallback(function(ae){I({type:"SET_STATUS",payload:ae})},[]),He=w.useCallback(function(ae){I({type:"SET_ISSUBMITTING",payload:ae})},[]),Be=Ka(function(){return I({type:"SUBMIT_ATTEMPT"}),K().then(function(ae){var Re=ae instanceof Error,Ye=!Re&&Object.keys(ae).length===0;if(Ye){var Ke;try{if(Ke=mt(),Ke===void 0)return}catch(xe){throw xe}return Promise.resolve(Ke).then(function(xe){return E.current&&I({type:"SUBMIT_SUCCESS"}),xe}).catch(function(xe){if(E.current)throw I({type:"SUBMIT_FAILURE"}),xe})}else if(E.current&&(I({type:"SUBMIT_FAILURE"}),Re))throw ae})}),wt=Ka(function(ae){ae&&ae.preventDefault&&Go(ae.preventDefault)&&ae.preventDefault(),ae&&ae.stopPropagation&&Go(ae.stopPropagation)&&ae.stopPropagation(),Be().catch(function(Re){console.warn("Warning: An unhandled error was caught from submitForm()",Re)})}),st={resetForm:te,validateForm:K,validateField:q,setErrors:Z,setFieldError:Q,setFieldTouched:Pe,setFieldValue:ie,setStatus:ot,setSubmitting:He,setTouched:X,setValues:W,setFormikState:De,submitForm:Be},mt=Ka(function(){return d(A.values,st)}),St=Ka(function(ae){ae&&ae.preventDefault&&Go(ae.preventDefault)&&ae.preventDefault(),ae&&ae.stopPropagation&&Go(ae.stopPropagation)&&ae.stopPropagation(),te()}),Le=w.useCallback(function(ae){return{value:Vi(A.values,ae),error:Vi(A.errors,ae),touched:!!Vi(A.touched,ae),initialValue:Vi(v.current,ae),initialTouched:!!Vi(S.current,ae),initialError:Vi(b.current,ae)}},[A.errors,A.touched,A.values]),lt=w.useCallback(function(ae){return{setValue:function(Ye,Ke){return ie(ae,Ye,Ke)},setTouched:function(Ye,Ke){return Pe(ae,Ye,Ke)},setError:function(Ye){return Q(ae,Ye)}}},[ie,Pe,Q]),Mt=w.useCallback(function(ae){var Re=hw(ae),Ye=Re?ae.name:ae,Ke=Vi(A.values,Ye),xe={name:Ye,value:Ke,onChange:Se,onBlur:We};if(Re){var Ne=ae.type,Ct=ae.value,Dt=ae.as,Te=ae.multiple;Ne==="checkbox"?Ct===void 0?xe.checked=!!Ke:(xe.checked=!!(Array.isArray(Ke)&&~Ke.indexOf(Ct)),xe.value=Ct):Ne==="radio"?(xe.checked=Ke===Ct,xe.value=Ct):Dt==="select"&&Te&&(xe.value=xe.value||[],xe.multiple=!0)}return xe},[We,Se,A.values]),ut=w.useMemo(function(){return!md(v.current,A.values)},[v.current,A.values]),_t=w.useMemo(function(){return typeof s<"u"?ut?A.errors&&Object.keys(A.errors).length===0:s!==!1&&Go(s)?s(m):s:A.errors&&Object.keys(A.errors).length===0},[s,ut,A.errors,m]),ln=Gn({},A,{initialValues:v.current,initialErrors:b.current,initialTouched:S.current,initialStatus:k.current,handleBlur:We,handleChange:Se,handleReset:St,handleSubmit:wt,resetForm:te,setErrors:Z,setFormikState:De,setFieldTouched:Pe,setFieldValue:ie,setFieldError:Q,setStatus:ot,setSubmitting:He,setTouched:X,setValues:W,submitForm:Be,validateForm:K,validateField:q,isValid:_t,dirty:ut,unregisterField:U,registerField:$,getFieldProps:Mt,getFieldMeta:Le,getFieldHelpers:lt,validateOnBlur:i,validateOnChange:n,validateOnMount:a});return ln}function Yy(e){var t=uFe(e),n=e.component,r=e.children,i=e.render,o=e.innerRef;return w.useImperativeHandle(o,function(){return t}),w.createElement(sFe,{value:t},n?w.createElement(n,t):i?i(t):r?Go(r)?r(t):MK(r)?null:w.Children.only(r):null)}function cFe(e){var t={};if(e.inner){if(e.inner.length===0)return iu(t,e.path,e.message);for(var i=e.inner,n=Array.isArray(i),r=0,i=n?i:i[Symbol.iterator]();;){var o;if(n){if(r>=i.length)break;o=i[r++]}else{if(r=i.next(),r.done)break;o=r.value}var a=o;Vi(t,a.path)||(t=iu(t,a.path,a.message))}}return t}function dFe(e,t,n,r){n===void 0&&(n=!1),r===void 0&&(r={});var i=c_(e);return t[n?"validateSync":"validate"](i,{abortEarly:!1,context:r})}function c_(e){var t=Array.isArray(e)?[]:{};for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=String(n);Array.isArray(e[r])===!0?t[r]=e[r].map(function(i){return Array.isArray(i)===!0||CN(i)?c_(i):i!==""?i:void 0}):CN(e[r])?t[r]=c_(e[r]):t[r]=e[r]!==""?e[r]:void 0}return t}function fFe(e,t,n){var r=e.slice();return t.forEach(function(o,a){if(typeof r[a]>"u"){var s=n.clone!==!1,l=s&&n.isMergeableObject(o);r[a]=l?o_(Array.isArray(o)?[]:{},o,n):o}else n.isMergeableObject(o)?r[a]=o_(e[a],o,n):e.indexOf(o)===-1&&r.push(o)}),r}function hFe(e){return Array.from(e).filter(function(t){return t.selected}).map(function(t){return t.value})}function pFe(e,t,n){if(typeof e=="boolean")return Boolean(t);var r=[],i=!1,o=-1;if(Array.isArray(e))r=e,o=e.indexOf(n),i=o>=0;else if(!n||n=="true"||n=="false")return Boolean(t);return t&&n&&!i?r.concat(n):i?r.slice(0,o).concat(r.slice(o+1)):r}var gFe=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u"?w.useLayoutEffect:w.useEffect;function Ka(e){var t=w.useRef(e);return gFe(function(){t.current=e}),w.useCallback(function(){for(var n=arguments.length,r=new Array(n),i=0;ir?i:r},0);return Array.from(Gn({},t,{length:n+1}))}else return[]},SFe=function(e){oFe(t,e);function t(r){var i;return i=e.call(this,r)||this,i.updateArrayField=function(o,a,s){var l=i.props,u=l.name,d=l.formik.setFormikState;d(function(h){var m=typeof s=="function"?s:o,v=typeof a=="function"?a:o,b=iu(h.values,u,o(Vi(h.values,u))),S=s?m(Vi(h.errors,u)):void 0,k=a?v(Vi(h.touched,u)):void 0;return KN(S)&&(S=void 0),KN(k)&&(k=void 0),Gn({},h,{values:b,errors:s?iu(h.errors,u,S):h.errors,touched:a?iu(h.touched,u,k):h.touched})})},i.push=function(o){return i.updateArrayField(function(a){return[].concat(c0(a),[iFe(o)])},!1,!1)},i.handlePush=function(o){return function(){return i.push(o)}},i.swap=function(o,a){return i.updateArrayField(function(s){return yFe(s,o,a)},!0,!0)},i.handleSwap=function(o,a){return function(){return i.swap(o,a)}},i.move=function(o,a){return i.updateArrayField(function(s){return vFe(s,o,a)},!0,!0)},i.handleMove=function(o,a){return function(){return i.move(o,a)}},i.insert=function(o,a){return i.updateArrayField(function(s){return YC(s,o,a)},function(s){return YC(s,o,null)},function(s){return YC(s,o,null)})},i.handleInsert=function(o,a){return function(){return i.insert(o,a)}},i.replace=function(o,a){return i.updateArrayField(function(s){return bFe(s,o,a)},!1,!1)},i.handleReplace=function(o,a){return function(){return i.replace(o,a)}},i.unshift=function(o){var a=-1;return i.updateArrayField(function(s){var l=s?[o].concat(s):[o];return a<0&&(a=l.length),l},function(s){var l=s?[null].concat(s):[null];return a<0&&(a=l.length),l},function(s){var l=s?[null].concat(s):[null];return a<0&&(a=l.length),l}),a},i.handleUnshift=function(o){return function(){return i.unshift(o)}},i.handleRemove=function(o){return function(){return i.remove(o)}},i.handlePop=function(){return function(){return i.pop()}},i.remove=i.remove.bind(YN(i)),i.pop=i.pop.bind(YN(i)),i}var n=t.prototype;return n.componentDidUpdate=function(i){this.props.validateOnChange&&this.props.formik.validateOnChange&&!md(Vi(i.formik.values,i.name),Vi(this.props.formik.values,this.props.name))&&this.props.formik.validateForm(this.props.formik.values)},n.remove=function(i){var o;return this.updateArrayField(function(a){var s=a?c0(a):[];return o||(o=s[i]),Go(s.splice)&&s.splice(i,1),s},!0,!0),o},n.pop=function(){var i;return this.updateArrayField(function(o){var a=o;return i||(i=a&&a.pop&&a.pop()),a},!0,!0),i},n.render=function(){var i={push:this.push,pop:this.pop,swap:this.swap,move:this.move,insert:this.insert,replace:this.replace,unshift:this.unshift,remove:this.remove,handlePush:this.handlePush,handlePop:this.handlePop,handleSwap:this.handleSwap,handleMove:this.handleMove,handleInsert:this.handleInsert,handleReplace:this.handleReplace,handleUnshift:this.handleUnshift,handleRemove:this.handleRemove},o=this.props,a=o.component,s=o.render,l=o.children,u=o.name,d=o.formik,h=Lh(d,["validate","validationSchema"]),m=Gn({},i,{form:h,name:u});return a?w.createElement(a,m):s?s(m):l?typeof l=="function"?l(m):MK(l)?null:w.Children.only(l):null},t}(w.Component);SFe.defaultProps={validateOnChange:!0};const xFe=at([ir],e=>{const{openModel:t,model_list:n}=e;return{model_list:n,openModel:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),XN=64,ZN=2048;function wFe(){const{openModel:e,model_list:t}=he(xFe),n=he(l=>l.system.isProcessing),r=Me(),{t:i}=Ve(),[o,a]=w.useState({name:"",description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:"",vae:"",width:512,height:512,default:!1,format:"ckpt"});w.useEffect(()=>{var l,u,d,h,m,v,b;if(e){const S=ke.pickBy(t,(k,E)=>ke.isEqual(E,e));a({name:e,description:(l=S[e])==null?void 0:l.description,config:(u=S[e])==null?void 0:u.config,weights:(d=S[e])==null?void 0:d.weights,vae:(h=S[e])==null?void 0:h.vae,width:(m=S[e])==null?void 0:m.width,height:(v=S[e])==null?void 0:v.height,default:(b=S[e])==null?void 0:b.default,format:"ckpt"})}},[t,e]);const s=l=>{r($y({...l,width:Number(l.width),height:Number(l.height)}))};return e?y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",width:"100%",children:[y.jsx(Ge,{alignItems:"center",children:y.jsx(fn,{fontSize:"lg",fontWeight:"bold",children:e})}),y.jsx(Ge,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",paddingRight:"2rem",children:y.jsx(Yy,{enableReinitialize:!0,initialValues:o,onSubmit:s,children:({handleSubmit:l,errors:u,touched:d})=>y.jsx("form",{onSubmit:l,children:y.jsxs(yn,{rowGap:"0.5rem",alignItems:"start",children:[y.jsxs(dn,{isInvalid:!!u.description&&d.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:i("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"lg"}),u.description&&d.description?y.jsx(ur,{children:u.description}):y.jsx(lr,{margin:0,children:i("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.config&&d.config,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:i("modelmanager:config")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"config",name:"config",type:"text",width:"lg"}),u.config&&d.config?y.jsx(ur,{children:u.config}):y.jsx(lr,{margin:0,children:i("modelmanager:configValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.weights&&d.weights,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:i("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"weights",name:"weights",type:"text",width:"lg"}),u.weights&&d.weights?y.jsx(ur,{children:u.weights}):y.jsx(lr,{margin:0,children:i("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.vae&&d.vae,children:[y.jsx(kn,{htmlFor:"vae",fontSize:"sm",children:i("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae",name:"vae",type:"text",width:"lg"}),u.vae&&d.vae?y.jsx(ur,{children:u.vae}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(wy,{width:"100%",children:[y.jsxs(dn,{isInvalid:!!u.width&&d.width,children:[y.jsx(kn,{htmlFor:"width",fontSize:"sm",children:i("modelmanager:width")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"width",name:"width",children:({field:h,form:m})=>y.jsx(ra,{id:"width",name:"width",min:XN,max:ZN,step:64,value:m.values.width,onChange:v=>m.setFieldValue(h.name,Number(v))})}),u.width&&d.width?y.jsx(ur,{children:u.width}):y.jsx(lr,{margin:0,children:i("modelmanager:widthValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.height&&d.height,children:[y.jsx(kn,{htmlFor:"height",fontSize:"sm",children:i("modelmanager:height")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"height",name:"height",children:({field:h,form:m})=>y.jsx(ra,{id:"height",name:"height",min:XN,max:ZN,step:64,value:m.values.height,onChange:v=>m.setFieldValue(h.name,Number(v))})}),u.height&&d.height?y.jsx(ur,{children:u.height}):y.jsx(lr,{margin:0,children:i("modelmanager:heightValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:i("modelmanager:updateModel")})]})})})})]}):y.jsx(Ge,{width:"100%",justifyContent:"center",alignItems:"center",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",children:y.jsx(fn,{fontWeight:"bold",color:"var(--subtext-color-bright)",children:"Pick A Model To Edit"})})}const CFe=at([ir],e=>{const{openModel:t,model_list:n}=e;return{model_list:n,openModel:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}});function _Fe(){const{openModel:e,model_list:t}=he(CFe),n=he(l=>l.system.isProcessing),r=Me(),{t:i}=Ve(),[o,a]=w.useState({name:"",description:"",repo_id:"",path:"",vae:{repo_id:"",path:""},default:!1,format:"diffusers"});w.useEffect(()=>{var l,u,d,h,m,v,b,S,k,E,_,T,A,I,R,D;if(e){const j=ke.pickBy(t,(z,V)=>ke.isEqual(V,e));a({name:e,description:(l=j[e])==null?void 0:l.description,path:(u=j[e])!=null&&u.path&&((d=j[e])==null?void 0:d.path)!=="None"?(h=j[e])==null?void 0:h.path:"",repo_id:(m=j[e])!=null&&m.repo_id&&((v=j[e])==null?void 0:v.repo_id)!=="None"?(b=j[e])==null?void 0:b.repo_id:"",vae:{repo_id:(k=(S=j[e])==null?void 0:S.vae)!=null&&k.repo_id?(_=(E=j[e])==null?void 0:E.vae)==null?void 0:_.repo_id:"",path:(A=(T=j[e])==null?void 0:T.vae)!=null&&A.path?(R=(I=j[e])==null?void 0:I.vae)==null?void 0:R.path:""},default:(D=j[e])==null?void 0:D.default,format:"diffusers"})}},[t,e]);const s=l=>{const u=l;l.path===""&&delete u.path,l.repo_id===""&&delete u.repo_id,l.vae.path===""&&delete u.vae.path,l.vae.repo_id===""&&delete u.vae.repo_id,r($y(l))};return e?y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",width:"100%",children:[y.jsx(Ge,{alignItems:"center",children:y.jsx(fn,{fontSize:"lg",fontWeight:"bold",children:e})}),y.jsx(Ge,{flexDirection:"column",maxHeight:window.innerHeight-270,overflowY:"scroll",paddingRight:"2rem",children:y.jsx(Yy,{enableReinitialize:!0,initialValues:o,onSubmit:s,children:({handleSubmit:l,errors:u,touched:d})=>{var h,m,v,b,S,k,E,_,T,A;return y.jsx("form",{onSubmit:l,children:y.jsxs(yn,{rowGap:"0.5rem",alignItems:"start",children:[y.jsxs(dn,{isInvalid:!!u.description&&d.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:i("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"lg"}),u.description&&d.description?y.jsx(ur,{children:u.description}):y.jsx(lr,{margin:0,children:i("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.path&&d.path,isRequired:!0,children:[y.jsx(kn,{htmlFor:"path",fontSize:"sm",children:i("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"path",name:"path",type:"text",width:"lg"}),u.path&&d.path?y.jsx(ur,{children:u.path}):y.jsx(lr,{margin:0,children:i("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!u.repo_id&&d.repo_id,children:[y.jsx(kn,{htmlFor:"repo_id",fontSize:"sm",children:i("modelmanager:repo_id")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"repo_id",name:"repo_id",type:"text",width:"lg"}),u.repo_id&&d.repo_id?y.jsx(ur,{children:u.repo_id}):y.jsx(lr,{margin:0,children:i("modelmanager:repoIDValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((h=u.vae)!=null&&h.path)&&((m=d.vae)==null?void 0:m.path),children:[y.jsx(kn,{htmlFor:"vae.path",fontSize:"sm",children:i("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.path",name:"vae.path",type:"text",width:"lg"}),(v=u.vae)!=null&&v.path&&((b=d.vae)!=null&&b.path)?y.jsx(ur,{children:(S=u.vae)==null?void 0:S.path}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((k=u.vae)!=null&&k.repo_id)&&((E=d.vae)==null?void 0:E.repo_id),children:[y.jsx(kn,{htmlFor:"vae.repo_id",fontSize:"sm",children:i("modelmanager:vaeRepoID")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.repo_id",name:"vae.repo_id",type:"text",width:"lg"}),(_=u.vae)!=null&&_.repo_id&&((T=d.vae)!=null&&T.repo_id)?y.jsx(ur,{children:(A=u.vae)==null?void 0:A.repo_id}):y.jsx(lr,{margin:0,children:i("modelmanager:vaeRepoIDValidationMsg")})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:i("modelmanager:updateModel")})]})})}})})]}):y.jsx(Ge,{width:"100%",justifyContent:"center",alignItems:"center",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",children:y.jsx(fn,{fontWeight:"bold",color:"var(--subtext-color-bright)",children:"Pick A Model To Edit"})})}const DK=at([ir],e=>{const{model_list:t}=e,n=[];return ke.forEach(t,r=>{n.push(r.weights)}),n});function kFe(){const{t:e}=Ve();return y.jsx(ko,{position:"absolute",zIndex:2,right:4,top:4,fontSize:"0.7rem",fontWeight:"bold",backgroundColor:"var(--accent-color)",padding:"0.2rem 0.5rem",borderRadius:"0.2rem",alignItems:"center",children:e("modelmanager:modelExists")})}function QN({model:e,modelsToAdd:t,setModelsToAdd:n}){const r=he(DK),i=o=>{t.includes(o.target.value)?n(ke.remove(t,a=>a!==o.target.value)):n([...t,o.target.value])};return y.jsxs(ko,{position:"relative",children:[r.includes(e.location)?y.jsx(kFe,{}):null,y.jsx(er,{value:e.name,label:y.jsx(y.Fragment,{children:y.jsxs(yn,{alignItems:"start",children:[y.jsx("p",{style:{fontWeight:"bold"},children:e.name}),y.jsx("p",{style:{fontStyle:"italic"},children:e.location})]})}),isChecked:t.includes(e.name),isDisabled:r.includes(e.location),onChange:i,padding:"1rem",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",_checked:{backgroundColor:"var(--accent-color)",color:"var(--text-color)"},_disabled:{backgroundColor:"var(--background-color-secondary)"}})]})}function EFe(){const e=Me(),{t}=Ve(),n=he(S=>S.system.searchFolder),r=he(S=>S.system.foundModels),i=he(DK),o=he(S=>S.ui.shouldShowExistingModelsInSearch),a=he(S=>S.system.isProcessing),[s,l]=N.useState([]),u=()=>{e(FU(null)),e(zU(null)),l([])},d=S=>{e(cD(S.checkpointFolder))},h=()=>{l([]),r&&r.forEach(S=>{i.includes(S.location)||l(k=>[...k,S.name])})},m=()=>{l([])},v=()=>{const S=r==null?void 0:r.filter(k=>s.includes(k.name));S==null||S.forEach(k=>{const E={name:k.name,description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:k.location,vae:"",width:512,height:512,default:!1,format:"ckpt"};e($y(E))}),l([])},b=()=>{const S=[],k=[];return r&&r.forEach((E,_)=>{i.includes(E.location)?k.push(y.jsx(QN,{model:E,modelsToAdd:s,setModelsToAdd:l},_)):S.push(y.jsx(QN,{model:E,modelsToAdd:s,setModelsToAdd:l},_))}),y.jsxs(y.Fragment,{children:[S,o&&k]})};return y.jsxs(y.Fragment,{children:[n?y.jsxs(Ge,{flexDirection:"column",padding:"1rem",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",rowGap:"0.5rem",position:"relative",children:[y.jsx("p",{style:{fontWeight:"bold",fontSize:"0.8rem",backgroundColor:"var(--background-color-secondary)",padding:"0.2rem 1rem",width:"max-content",borderRadius:"0.2rem"},children:t("modelmanager:checkpointFolder")}),y.jsx("p",{style:{fontWeight:"bold",fontSize:"0.8rem",maxWidth:"80%"},children:n}),y.jsx(Qe,{"aria-label":t("modelmanager:scanAgain"),tooltip:t("modelmanager:scanAgain"),icon:y.jsx(Wx,{}),position:"absolute",right:16,fontSize:18,disabled:a,onClick:()=>e(cD(n))}),y.jsx(Qe,{"aria-label":t("modelmanager:clearCheckpointFolder"),icon:y.jsx(zy,{style:{transform:"rotate(45deg)"}}),position:"absolute",right:5,onClick:u})]}):y.jsx(Yy,{initialValues:{checkpointFolder:""},onSubmit:S=>{d(S)},children:({handleSubmit:S})=>y.jsx("form",{onSubmit:S,children:y.jsxs(wy,{columnGap:"0.5rem",children:[y.jsx(dn,{isRequired:!0,width:"max-content",children:y.jsx(dr,{as:kr,id:"checkpointFolder",name:"checkpointFolder",type:"text",width:"lg",size:"md",label:t("modelmanager:checkpointFolder")})}),y.jsx(Qe,{icon:y.jsx(zEe,{}),"aria-label":t("modelmanager:findModels"),tooltip:t("modelmanager:findModels"),type:"submit",disabled:a})]})})}),r&&y.jsxs(Ge,{flexDirection:"column",rowGap:"1rem",children:[y.jsxs(Ge,{justifyContent:"space-between",alignItems:"center",children:[y.jsxs("p",{children:[t("modelmanager:modelsFound"),": ",r.length]}),y.jsxs("p",{children:[t("modelmanager:selected"),": ",s.length]})]}),y.jsxs(Ge,{columnGap:"0.5rem",justifyContent:"space-between",children:[y.jsxs(Ge,{columnGap:"0.5rem",children:[y.jsx(cr,{isDisabled:s.length===r.length,onClick:h,children:t("modelmanager:selectAll")}),y.jsx(cr,{isDisabled:s.length===0,onClick:m,children:t("modelmanager:deselectAll")}),y.jsx(er,{label:t("modelmanager:showExisting"),isChecked:o,onChange:()=>e(fCe(!o))})]}),y.jsx(cr,{isDisabled:s.length===0,onClick:v,backgroundColor:s.length>0?"var(--accent-color) !important":"",children:t("modelmanager:addSelected")})]}),y.jsxs(Ge,{rowGap:"1rem",flexDirection:"column",maxHeight:"18rem",overflowY:"scroll",paddingRight:"1rem",paddingLeft:"0.2rem",borderRadius:"0.2rem",children:[r.length>0?s.length===0&&y.jsx(fn,{fontWeight:"bold",fontSize:14,padding:"0.5rem",borderRadius:"0.2rem",margin:"0 0.5rem 0 1rem",textAlign:"center",backgroundColor:"var(--notice-color)",boxShadow:"0 0 200px 6px var(--notice-color)",marginTop:"1rem",width:"max-content",children:t("modelmanager:selectAndAdd")}):y.jsx(fn,{fontWeight:"bold",fontSize:14,padding:"0.5rem",borderRadius:"0.2rem",textAlign:"center",backgroundColor:"var(--status-bad-color)",children:t("modelmanager:noModelsFound")}),b()]})]})]})}const JN=64,ej=2048;function PFe(){const e=Me(),{t}=Ve(),n=he(u=>u.system.isProcessing);function r(u){return/\s/.test(u)}function i(u){let d;return r(u)&&(d=t("modelmanager:cannotUseSpaces")),d}const o={name:"",description:"",config:"configs/stable-diffusion/v1-inference.yaml",weights:"",vae:"",width:512,height:512,format:"ckpt",default:!1},a=u=>{e($y(u)),e(zh(null))},[s,l]=N.useState(!1);return y.jsxs(y.Fragment,{children:[y.jsx(Qe,{"aria-label":t("common:back"),tooltip:t("common:back"),onClick:()=>e(zh(null)),width:"max-content",position:"absolute",zIndex:1,size:"sm",right:12,top:3,icon:y.jsx(XG,{})}),y.jsx(EFe,{}),y.jsx(er,{label:t("modelmanager:addManually"),isChecked:s,onChange:()=>l(!s)}),s&&y.jsx(Yy,{initialValues:o,onSubmit:a,children:({handleSubmit:u,errors:d,touched:h})=>y.jsx("form",{onSubmit:u,children:y.jsxs(yn,{rowGap:"0.5rem",children:[y.jsx(fn,{fontSize:20,fontWeight:"bold",alignSelf:"start",children:t("modelmanager:manual")}),y.jsxs(dn,{isInvalid:!!d.name&&h.name,isRequired:!0,children:[y.jsx(kn,{htmlFor:"name",fontSize:"sm",children:t("modelmanager:name")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"name",name:"name",type:"text",validate:i,width:"2xl"}),d.name&&h.name?y.jsx(ur,{children:d.name}):y.jsx(lr,{margin:0,children:t("modelmanager:nameValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.description&&h.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:t("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"2xl"}),d.description&&h.description?y.jsx(ur,{children:d.description}):y.jsx(lr,{margin:0,children:t("modelmanager:descriptionValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.config&&h.config,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:t("modelmanager:config")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"config",name:"config",type:"text",width:"2xl"}),d.config&&h.config?y.jsx(ur,{children:d.config}):y.jsx(lr,{margin:0,children:t("modelmanager:configValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.weights&&h.weights,isRequired:!0,children:[y.jsx(kn,{htmlFor:"config",fontSize:"sm",children:t("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"weights",name:"weights",type:"text",width:"2xl"}),d.weights&&h.weights?y.jsx(ur,{children:d.weights}):y.jsx(lr,{margin:0,children:t("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.vae&&h.vae,children:[y.jsx(kn,{htmlFor:"vae",fontSize:"sm",children:t("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae",name:"vae",type:"text",width:"2xl"}),d.vae&&h.vae?y.jsx(ur,{children:d.vae}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(wy,{width:"100%",children:[y.jsxs(dn,{isInvalid:!!d.width&&h.width,children:[y.jsx(kn,{htmlFor:"width",fontSize:"sm",children:t("modelmanager:width")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"width",name:"width",children:({field:m,form:v})=>y.jsx(ra,{id:"width",name:"width",min:JN,max:ej,step:64,width:"90%",value:v.values.width,onChange:b=>v.setFieldValue(m.name,Number(b))})}),d.width&&h.width?y.jsx(ur,{children:d.width}):y.jsx(lr,{margin:0,children:t("modelmanager:widthValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!d.height&&h.height,children:[y.jsx(kn,{htmlFor:"height",fontSize:"sm",children:t("modelmanager:height")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{id:"height",name:"height",children:({field:m,form:v})=>y.jsx(ra,{id:"height",name:"height",min:JN,max:ej,width:"90%",step:64,value:v.values.height,onChange:b=>v.setFieldValue(m.name,Number(b))})}),d.height&&h.height?y.jsx(ur,{children:d.height}):y.jsx(lr,{margin:0,children:t("modelmanager:heightValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:t("modelmanager:addModel")})]})})})]})}function Qb({children:e}){return y.jsx(Ge,{flexDirection:"column",backgroundColor:"var(--background-color)",padding:"1rem 1rem",borderRadius:"0.5rem",rowGap:"1rem",width:"100%",children:e})}function TFe(){const e=Me(),{t}=Ve(),n=he(s=>s.system.isProcessing);function r(s){return/\s/.test(s)}function i(s){let l;return r(s)&&(l=t("modelmanager:cannotUseSpaces")),l}const o={name:"",description:"",repo_id:"",path:"",format:"diffusers",default:!1,vae:{repo_id:"",path:""}},a=s=>{const l=s;s.path===""&&delete l.path,s.repo_id===""&&delete l.repo_id,s.vae.path===""&&delete l.vae.path,s.vae.repo_id===""&&delete l.vae.repo_id,e($y(l)),e(zh(null))};return y.jsxs(Ge,{children:[y.jsx(Qe,{"aria-label":t("common:back"),tooltip:t("common:back"),onClick:()=>e(zh(null)),width:"max-content",position:"absolute",zIndex:1,size:"sm",right:12,top:3,icon:y.jsx(XG,{})}),y.jsx(Yy,{initialValues:o,onSubmit:a,children:({handleSubmit:s,errors:l,touched:u})=>{var d,h,m,v,b,S,k,E,_,T;return y.jsx("form",{onSubmit:s,children:y.jsxs(yn,{rowGap:"0.5rem",children:[y.jsx(Qb,{children:y.jsxs(dn,{isInvalid:!!l.name&&u.name,isRequired:!0,children:[y.jsx(kn,{htmlFor:"name",fontSize:"sm",children:t("modelmanager:name")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"name",name:"name",type:"text",validate:i,width:"2xl",isRequired:!0}),l.name&&u.name?y.jsx(ur,{children:l.name}):y.jsx(lr,{margin:0,children:t("modelmanager:nameValidationMsg")})]})]})}),y.jsx(Qb,{children:y.jsxs(dn,{isInvalid:!!l.description&&u.description,isRequired:!0,children:[y.jsx(kn,{htmlFor:"description",fontSize:"sm",children:t("modelmanager:description")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"description",name:"description",type:"text",width:"2xl",isRequired:!0}),l.description&&u.description?y.jsx(ur,{children:l.description}):y.jsx(lr,{margin:0,children:t("modelmanager:descriptionValidationMsg")})]})]})}),y.jsxs(Qb,{children:[y.jsx(fn,{fontWeight:"bold",fontSize:"sm",children:t("modelmanager:formMessageDiffusersModelLocation")}),y.jsx(fn,{fontSize:"sm",fontStyle:"italic",color:"var(--text-color-secondary)",children:t("modelmanager:formMessageDiffusersModelLocationDesc")}),y.jsxs(dn,{isInvalid:!!l.path&&u.path,children:[y.jsx(kn,{htmlFor:"path",fontSize:"sm",children:t("modelmanager:modelLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"path",name:"path",type:"text",width:"2xl"}),l.path&&u.path?y.jsx(ur,{children:l.path}):y.jsx(lr,{margin:0,children:t("modelmanager:modelLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!l.repo_id&&u.repo_id,children:[y.jsx(kn,{htmlFor:"repo_id",fontSize:"sm",children:t("modelmanager:repo_id")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"repo_id",name:"repo_id",type:"text",width:"2xl"}),l.repo_id&&u.repo_id?y.jsx(ur,{children:l.repo_id}):y.jsx(lr,{margin:0,children:t("modelmanager:repoIDValidationMsg")})]})]})]}),y.jsxs(Qb,{children:[y.jsx(fn,{fontWeight:"bold",children:t("modelmanager:formMessageDiffusersVAELocation")}),y.jsx(fn,{fontSize:"sm",fontStyle:"italic",color:"var(--text-color-secondary)",children:t("modelmanager:formMessageDiffusersVAELocationDesc")}),y.jsxs(dn,{isInvalid:!!((d=l.vae)!=null&&d.path)&&((h=u.vae)==null?void 0:h.path),children:[y.jsx(kn,{htmlFor:"vae.path",fontSize:"sm",children:t("modelmanager:vaeLocation")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.path",name:"vae.path",type:"text",width:"2xl"}),(m=l.vae)!=null&&m.path&&((v=u.vae)!=null&&v.path)?y.jsx(ur,{children:(b=l.vae)==null?void 0:b.path}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeLocationValidationMsg")})]})]}),y.jsxs(dn,{isInvalid:!!((S=l.vae)!=null&&S.repo_id)&&((k=u.vae)==null?void 0:k.repo_id),children:[y.jsx(kn,{htmlFor:"vae.repo_id",fontSize:"sm",children:t("modelmanager:vaeRepoID")}),y.jsxs(yn,{alignItems:"start",children:[y.jsx(dr,{as:kr,id:"vae.repo_id",name:"vae.repo_id",type:"text",width:"2xl"}),(E=l.vae)!=null&&E.repo_id&&((_=u.vae)!=null&&_.repo_id)?y.jsx(ur,{children:(T=l.vae)==null?void 0:T.repo_id}):y.jsx(lr,{margin:0,children:t("modelmanager:vaeRepoIDValidationMsg")})]})]})]}),y.jsx(cr,{type:"submit",className:"modal-close-btn",isLoading:n,children:t("modelmanager:addModel")})]})})}})]})}function tj({text:e,onClick:t}){return y.jsx(Ge,{position:"relative",width:"50%",height:"200px",backgroundColor:"var(--background-color)",borderRadius:"0.5rem",justifyContent:"center",alignItems:"center",_hover:{cursor:"pointer",backgroundColor:"var(--accent-color)"},onClick:t,children:y.jsx(fn,{fontWeight:"bold",children:e})})}function LFe(){const{isOpen:e,onOpen:t,onClose:n}=Wh(),r=he(s=>s.ui.addNewModelUIOption),i=Me(),{t:o}=Ve(),a=()=>{n(),i(zh(null))};return y.jsxs(y.Fragment,{children:[y.jsx(cr,{"aria-label":o("modelmanager:addNewModel"),tooltip:o("modelmanager:addNewModel"),onClick:t,className:"modal-close-btn",size:"sm",children:y.jsxs(Ge,{columnGap:"0.5rem",alignItems:"center",children:[y.jsx(zy,{}),o("modelmanager:addNew")]})}),y.jsxs(Yd,{isOpen:e,onClose:a,size:"3xl",closeOnOverlayClick:!1,children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal add-model-modal",fontFamily:"Inter",children:[y.jsx(w0,{children:o("modelmanager:addNewModel")}),y.jsx(Ly,{marginTop:"0.3rem"}),y.jsxs(n0,{className:"add-model-modal-body",children:[r==null&&y.jsxs(Ge,{columnGap:"1rem",children:[y.jsx(tj,{text:o("modelmanager:addCheckpointModel"),onClick:()=>i(zh("ckpt"))}),y.jsx(tj,{text:o("modelmanager:addDiffuserModel"),onClick:()=>i(zh("diffusers"))})]}),r=="ckpt"&&y.jsx(PFe,{}),r=="diffusers"&&y.jsx(TFe,{})]})]})]})]})}function Jb(e){const{isProcessing:t,isConnected:n}=he(v=>v.system),r=he(v=>v.system.openModel),{t:i}=Ve(),o=Me(),{name:a,status:s,description:l}=e,u=()=>{o(VG(a))},d=()=>{o(LR(a))},h=()=>{o($8e(a)),o(LR(null))},m=()=>{switch(s){case"active":return"var(--status-good-color)";case"cached":return"var(--status-working-color)";case"not loaded":return"var(--text-color-secondary)"}};return y.jsxs(Ge,{alignItems:"center",padding:"0.5rem 0.5rem",borderRadius:"0.2rem",backgroundColor:a===r?"var(--accent-color)":"",_hover:{backgroundColor:a===r?"var(--accent-color)":"var(--background-color)"},children:[y.jsx(ko,{onClick:d,cursor:"pointer",children:y.jsx(uo,{label:l,hasArrow:!0,placement:"bottom",children:y.jsx(fn,{fontWeight:"bold",children:a})})}),y.jsx(fF,{onClick:d,cursor:"pointer"}),y.jsxs(Ge,{gap:2,alignItems:"center",children:[y.jsx(fn,{color:m(),children:s}),y.jsx(as,{size:"sm",onClick:u,isDisabled:s==="active"||t||!n,className:"modal-close-btn",children:i("modelmanager:load")}),y.jsx(Qe,{icon:y.jsx(LEe,{}),size:"sm",onClick:d,"aria-label":"Modify Config",isDisabled:s==="active"||t||!n,className:" modal-close-btn"}),y.jsx(oT,{title:i("modelmanager:deleteModel"),acceptCallback:h,acceptButtonText:i("modelmanager:delete"),triggerComponent:y.jsx(Qe,{icon:y.jsx(TEe,{}),size:"sm","aria-label":i("modelmanager:deleteConfig"),isDisabled:s==="active"||t||!n,className:" modal-close-btn",style:{backgroundColor:"var(--btn-delete-image)"}}),children:y.jsxs(Ge,{rowGap:"1rem",flexDirection:"column",children:[y.jsx("p",{style:{fontWeight:"bold"},children:i("modelmanager:deleteMsg1")}),y.jsx("p",{style:{color:"var(--text-color-secondary"},children:i("modelmanager:deleteMsg2")})]})})]})]})}const AFe=at(ir,e=>ke.map(e.model_list,(n,r)=>({name:r,...n})),{memoizeOptions:{resultEqualityCheck:ke.isEqual}});function KC({label:e,isActive:t,onClick:n}){return y.jsx(cr,{onClick:n,isActive:t,_active:{backgroundColor:"var(--accent-color)",_hover:{backgroundColor:"var(--accent-color)"}},size:"sm",children:e})}const OFe=()=>{const e=he(AFe),[t,n]=w.useState(""),[r,i]=w.useState("all"),[o,a]=w.useTransition(),{t:s}=Ve(),l=d=>{a(()=>{n(d.target.value)})},u=w.useMemo(()=>{const d=[],h=[],m=[],v=[];return e.forEach((b,S)=>{b.name.toLowerCase().includes(t.toLowerCase())&&(m.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S)),b.format===r&&v.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S))),b.format!=="diffusers"?d.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S)):h.push(y.jsx(Jb,{name:b.name,status:b.status,description:b.description},S))}),t!==""?r==="all"?y.jsx(ko,{marginTop:"1rem",children:m}):y.jsx(ko,{marginTop:"1rem",children:v}):y.jsxs(Ge,{flexDirection:"column",rowGap:"1.5rem",children:[r==="all"&&y.jsxs(y.Fragment,{children:[y.jsxs(ko,{children:[y.jsx(fn,{fontWeight:"bold",backgroundColor:"var(--background-color)",padding:"0.5rem 1rem",borderRadius:"0.5rem",margin:"1rem 0",width:"max-content",fontSize:"14",children:s("modelmanager:checkpointModels")}),d]}),y.jsxs(ko,{children:[y.jsx(fn,{fontWeight:"bold",backgroundColor:"var(--background-color)",padding:"0.5rem 1rem",borderRadius:"0.5rem",marginBottom:"0.5rem",width:"max-content",fontSize:"14",children:s("modelmanager:diffusersModels")}),h]})]}),r==="ckpt"&&y.jsx(Ge,{flexDirection:"column",marginTop:"1rem",children:d}),r==="diffusers"&&y.jsx(Ge,{flexDirection:"column",marginTop:"1rem",children:h})]})},[e,t,s,r]);return y.jsxs(Ge,{flexDirection:"column",rowGap:"2rem",width:"50%",minWidth:"50%",children:[y.jsxs(Ge,{justifyContent:"space-between",children:[y.jsx(fn,{fontSize:"1.4rem",fontWeight:"bold",children:s("modelmanager:availableModels")}),y.jsx(LFe,{})]}),y.jsx(kr,{onChange:l,label:s("modelmanager:search")}),y.jsxs(Ge,{flexDirection:"column",gap:1,maxHeight:window.innerHeight-360,overflow:"scroll",paddingRight:"1rem",children:[y.jsxs(Ge,{columnGap:"0.5rem",children:[y.jsx(KC,{label:s("modelmanager:allModels"),onClick:()=>i("all"),isActive:r==="all"}),y.jsx(KC,{label:s("modelmanager:checkpointModels"),onClick:()=>i("ckpt"),isActive:r==="ckpt"}),y.jsx(KC,{label:s("modelmanager:diffusersModels"),onClick:()=>i("diffusers"),isActive:r==="diffusers"})]}),u]})]})};function MFe({children:e}){const{isOpen:t,onOpen:n,onClose:r}=Wh(),i=he(s=>s.system.model_list),o=he(s=>s.system.openModel),{t:a}=Ve();return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:n}),y.jsxs(Yd,{isOpen:t,onClose:r,size:"6xl",children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal",fontFamily:"Inter",children:[y.jsx(Ly,{className:"modal-close-btn"}),y.jsx(w0,{fontWeight:"bold",children:a("modelmanager:modelManager")}),y.jsxs(Ge,{padding:"0 1.5rem 1.5rem 1.5rem",width:"100%",columnGap:"2rem",children:[y.jsx(OFe,{}),o&&i[o].format==="diffusers"?y.jsx(_Fe,{}):y.jsx(wFe,{})]})]})]})]})}const IFe=at([ir],e=>{const{isProcessing:t,model_list:n}=e;return{models:ke.map(n,(i,o)=>o),isProcessing:t}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),RFe=()=>{const e=Me(),{models:t,isProcessing:n}=he(IFe),r=he(qG),i=o=>{e(VG(o.target.value))};return y.jsx(Ge,{style:{paddingLeft:"0.3rem"},children:y.jsx(tl,{style:{fontSize:"0.8rem"},tooltip:r.description,isDisabled:n,value:r.name,validValues:t,onChange:i})})},DFe=at([ir,mp],(e,t)=>{const{shouldDisplayInProgressType:n,shouldConfirmOnDelete:r,shouldDisplayGuides:i,model_list:o,saveIntermediatesInterval:a,enableImageDebugging:s}=e,{shouldUseCanvasBetaLayout:l}=t;return{shouldDisplayInProgressType:n,shouldConfirmOnDelete:r,shouldDisplayGuides:i,models:ke.map(o,(u,d)=>d),saveIntermediatesInterval:a,enableImageDebugging:s,shouldUseCanvasBetaLayout:l}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),NFe=({children:e})=>{const t=Me(),{t:n}=Ve(),r=he(_=>_.generation.steps),{isOpen:i,onOpen:o,onClose:a}=Wh(),{isOpen:s,onOpen:l,onClose:u}=Wh(),{shouldDisplayInProgressType:d,shouldConfirmOnDelete:h,shouldDisplayGuides:m,saveIntermediatesInterval:v,enableImageDebugging:b,shouldUseCanvasBetaLayout:S}=he(DFe),k=()=>{GG.purge().then(()=>{a(),l()})},E=_=>{_>r&&(_=r),_<1&&(_=1),t(Q6e(_))};return y.jsxs(y.Fragment,{children:[w.cloneElement(e,{onClick:o}),y.jsxs(Yd,{isOpen:i,onClose:a,size:"lg",children:[y.jsx(Kd,{}),y.jsxs(Zh,{className:"modal settings-modal",children:[y.jsx(w0,{className:"settings-modal-header",children:n("common:settingsLabel")}),y.jsx(Ly,{className:"modal-close-btn"}),y.jsxs(n0,{className:"settings-modal-content",children:[y.jsxs("div",{className:"settings-modal-items",children:[y.jsxs("div",{className:"settings-modal-item",style:{gridAutoFlow:"row",rowGap:"0.5rem"},children:[y.jsx(tl,{label:n("settings:displayInProgress"),validValues:s7e,value:d,onChange:_=>t(U6e(_.target.value))}),d==="full-res"&&y.jsx(ra,{label:n("settings:saveSteps"),min:1,max:r,step:1,onChange:E,value:v,width:"auto",textAlign:"center"})]}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:confirmOnDelete"),isChecked:h,onChange:_=>t(BU(_.target.checked))}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:displayHelpIcons"),isChecked:m,onChange:_=>t(K6e(_.target.checked))}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:useCanvasBeta"),isChecked:S,onChange:_=>t(dCe(_.target.checked))})]}),y.jsxs("div",{className:"settings-modal-items",children:[y.jsx("h2",{style:{fontWeight:"bold"},children:"Developer"}),y.jsx(Vs,{styleClass:"settings-modal-item",label:n("settings:enableImageDebugging"),isChecked:b,onChange:_=>t(J6e(_.target.checked))})]}),y.jsxs("div",{className:"settings-modal-reset",children:[y.jsx(Dh,{size:"md",children:n("settings:resetWebUI")}),y.jsx(as,{colorScheme:"red",onClick:k,children:n("settings:resetWebUI")}),y.jsx(fn,{children:n("settings:resetWebUIDesc1")}),y.jsx(fn,{children:n("settings:resetWebUIDesc2")})]})]}),y.jsx(yx,{children:y.jsx(as,{onClick:a,className:"modal-close-btn",children:n("common:close")})})]})]}),y.jsxs(Yd,{closeOnOverlayClick:!1,isOpen:s,onClose:u,isCentered:!0,children:[y.jsx(Kd,{bg:"blackAlpha.300",backdropFilter:"blur(40px)"}),y.jsx(Zh,{children:y.jsx(n0,{pb:6,pt:6,children:y.jsx(Ge,{justifyContent:"center",children:y.jsx(fn,{fontSize:"lg",children:y.jsx(fn,{children:n("settings:resetComplete")})})})})})]})]})},jFe=at(ir,e=>({isConnected:e.isConnected,isProcessing:e.isProcessing,currentIteration:e.currentIteration,totalIterations:e.totalIterations,currentStatus:e.currentStatus,hasError:e.hasError,wasErrorSeen:e.wasErrorSeen}),{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),BFe=()=>{const{isConnected:e,isProcessing:t,currentIteration:n,totalIterations:r,currentStatus:i,hasError:o,wasErrorSeen:a}=he(jFe),s=Me(),{t:l}=Ve();let u;e&&!o?u="status-good":u="status-bad";let d=i;[l("common:statusGenerating"),l("common:statusPreparing"),l("common:statusSavingImage"),l("common:statusRestoringFaces"),l("common:statusUpscaling")].includes(d)&&(u="status-working"),d&&t&&r>1&&(d=`${l(d)} (${n}/${r})`);const m=o&&!a?"Click to clear, check logs for details":void 0,v=o&&!a?"pointer":"initial",b=()=>{(o||!a)&&s($U())};return y.jsx(uo,{label:m,children:y.jsx(fn,{cursor:v,onClick:b,className:`status ${u}`,children:l(d)})})};function $Fe(){const{t:e}=Ve(),{setColorMode:t,colorMode:n}=dy(),r=Me(),i=he(l=>l.ui.currentTheme),o={dark:e("common:darkTheme"),light:e("common:lightTheme"),green:e("common:greenTheme")};w.useEffect(()=>{n!==i&&t(i)},[t,n,i]);const a=l=>{r(aCe(l))},s=()=>{const l=[];return Object.keys(o).forEach(u=>{l.push(y.jsx(cr,{style:{width:"6rem"},leftIcon:i===u?y.jsx(PP,{}):void 0,size:"sm",onClick:()=>a(u),children:o[u]},u))}),l};return y.jsx(Zs,{trigger:"hover",triggerComponent:y.jsx(Qe,{"aria-label":e("common:themeLabel"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(pEe,{})}),children:y.jsx(yn,{align:"stretch",children:s()})})}function FFe(){const{t:e,i18n:t}=Ve(),n={ar:e("common:langArabic"),nl:e("common:langDutch"),en:e("common:langEnglish"),fr:e("common:langFrench"),de:e("common:langGerman"),it:e("common:langItalian"),ja:e("common:langJapanese"),pl:e("common:langPolish"),pt_br:e("common:langBrPortuguese"),ru:e("common:langRussian"),zh_cn:e("common:langSimplifiedChinese"),es:e("common:langSpanish"),ua:e("common:langUkranian")},r=()=>{const i=[];return Object.keys(n).forEach(o=>{i.push(y.jsx(cr,{"data-selected":localStorage.getItem("i18nextLng")===o,onClick:()=>t.changeLanguage(o),className:"modal-close-btn lang-select-btn","aria-label":n[o],size:"sm",minWidth:"200px",children:n[o]},o))}),i};return y.jsx(Zs,{trigger:"hover",triggerComponent:y.jsx(Qe,{"aria-label":e("common:languagePickerLabel"),tooltip:e("common:languagePickerLabel"),icon:y.jsx(dEe,{}),size:"sm",variant:"link","data-variant":"link",fontSize:26}),children:y.jsx(yn,{children:r()})})}const zFe=()=>{const{t:e}=Ve(),t=he(n=>n.system.app_version);return y.jsxs("div",{className:"site-header",children:[y.jsxs("div",{className:"site-header-left-side",children:[y.jsx("img",{src:LY,alt:"invoke-ai-logo"}),y.jsxs(Ge,{alignItems:"center",columnGap:"0.6rem",children:[y.jsxs(fn,{fontSize:"1.4rem",children:["invoke ",y.jsx("strong",{children:"ai"})]}),y.jsx(fn,{fontWeight:"bold",color:"var(--text-color-secondary)",marginTop:"0.2rem",children:t})]})]}),y.jsxs("div",{className:"site-header-right-side",children:[y.jsx(BFe,{}),y.jsx(RFe,{}),y.jsx(MFe,{children:y.jsx(Qe,{"aria-label":e("modelmanager:modelManager"),tooltip:e("modelmanager:modelManager"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(rEe,{})})}),y.jsx(TDe,{children:y.jsx(Qe,{"aria-label":e("common:hotkeysLabel"),tooltip:e("common:hotkeysLabel"),size:"sm",variant:"link","data-variant":"link",fontSize:20,icon:y.jsx(cEe,{})})}),y.jsx($Fe,{}),y.jsx(FFe,{}),y.jsx(Qe,{"aria-label":e("common:reportBugLabel"),tooltip:e("common:reportBugLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI/issues",children:y.jsx(nEe,{})})}),y.jsx(Qe,{"aria-label":e("common:githubLabel"),tooltip:e("common:githubLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"http://github.com/invoke-ai/InvokeAI",children:y.jsx(Zke,{})})}),y.jsx(Qe,{"aria-label":e("common:discordLabel"),tooltip:e("common:discordLabel"),variant:"link","data-variant":"link",fontSize:20,size:"sm",icon:y.jsx(Nh,{isExternal:!0,href:"https://discord.gg/ZmtBAhwWhy",children:y.jsx(Xke,{})})}),y.jsx(NFe,{children:y.jsx(Qe,{"aria-label":e("common:settingsLabel"),tooltip:e("common:settingsLabel"),variant:"link","data-variant":"link",fontSize:22,size:"sm",icon:y.jsx(VEe,{})})})]})]})};function HFe(){async function e(n=""){return await fetch(n,{method:"GET",cache:"no-cache"})}const t=()=>{const n=document.location;e(n+"/flaskwebgui-keep-server-alive").then(i=>i)};(!{}.NODE_ENV||{}.NODE_ENV==="production")&&document.addEventListener("DOMContentLoaded",()=>{t(),setInterval(t,3e3)})}const VFe=()=>{const e=Me(),t=he(a_e),n=Ry();w.useEffect(()=>{t.forEach(r=>{n(r)}),t.length>0&&e(tCe())},[e,n,t])},NK=at([yp,mp,Or],(e,t,n)=>{const{shouldPinParametersPanel:r,shouldShowParametersPanel:i,shouldHoldParametersPanelOpen:o,shouldUseCanvasBetaLayout:a}=t,{shouldShowGallery:s,shouldPinGallery:l,shouldHoldGalleryOpen:u}=e,d=a&&n==="unifiedCanvas",h=!d&&!(i||o&&!r)&&["txt2img","img2img","unifiedCanvas"].includes(n),m=!(s||u&&!l)&&["txt2img","img2img","unifiedCanvas"].includes(n);return{shouldPinParametersPanel:r,shouldShowProcessButtons:!d&&(!r||!i),shouldShowParametersPanelButton:h,shouldShowParametersPanel:i,shouldShowGallery:s,shouldPinGallery:l,shouldShowGalleryButton:m}},{memoizeOptions:{resultEqualityCheck:ke.isEqual}}),WFe=()=>{const e=Me(),{shouldShowParametersPanel:t,shouldShowParametersPanelButton:n,shouldShowProcessButtons:r,shouldPinParametersPanel:i,shouldShowGallery:o,shouldPinGallery:a}=he(NK),s=()=>{e(Ku(!0)),i&&setTimeout(()=>e(vi(!0)),400)};return Je("f",()=>{o||t?(e(Ku(!1)),e(Bd(!1))):(e(Ku(!0)),e(Bd(!0))),(a||i)&&setTimeout(()=>e(vi(!0)),400)},[o,t]),n?y.jsxs("div",{className:"show-hide-button-options",children:[y.jsx(Qe,{tooltip:"Show Options Panel (O)",tooltipProps:{placement:"top"},"aria-label":"Show Options Panel",onClick:s,children:y.jsx(AP,{})}),r&&y.jsxs(y.Fragment,{children:[y.jsx(XP,{iconButton:!0}),y.jsx(YP,{})]})]}):null},UFe=()=>{const e=Me(),{shouldShowGallery:t,shouldShowGalleryButton:n,shouldPinGallery:r,shouldShowParametersPanel:i,shouldPinParametersPanel:o}=he(NK),a=()=>{e(Bd(!0)),r&&e(vi(!0))};return Je("f",()=>{t||i?(e(Ku(!1)),e(Bd(!1))):(e(Ku(!0)),e(Bd(!0))),(r||o)&&setTimeout(()=>e(vi(!0)),400)},[t,i]),n?y.jsx(Qe,{tooltip:"Show Gallery (G)",tooltipProps:{placement:"top"},"aria-label":"Show Gallery",styleClass:"floating-show-hide-button right show-hide-button-gallery",onClick:a,children:y.jsx(Tq,{})}):null};HFe();const GFe=()=>(VFe(),y.jsxs("div",{className:"App",children:[y.jsxs(xDe,{children:[y.jsx(EDe,{}),y.jsxs("div",{className:"app-content",children:[y.jsx(zFe,{}),y.jsx(ERe,{})]}),y.jsx("div",{className:"app-console",children:y.jsx(_De,{})})]}),y.jsx(WFe,{}),y.jsx(UFe,{})]})),nj=()=>y.jsx(Ge,{width:"100vw",height:"100vh",alignItems:"center",justifyContent:"center",children:y.jsx(xy,{thickness:"2px",speed:"1s",emptyColor:"gray.200",color:"gray.400",size:"xl"})});const qFe=Aj({key:"invokeai-style-cache",prepend:!0});X9.createRoot(document.getElementById("root")).render(y.jsx(N.StrictMode,{children:y.jsx(T5e,{store:UG,children:y.jsx(mW,{loading:y.jsx(nj,{}),persistor:GG,children:y.jsx(qne,{value:qFe,children:y.jsx(q4e,{children:y.jsx(N.Suspense,{fallback:y.jsx(nj,{}),children:y.jsx(GFe,{})})})})})})})); diff --git a/invokeai/frontend/dist/index.html b/invokeai/frontend/dist/index.html index 832305d5d4..587421b442 100644 --- a/invokeai/frontend/dist/index.html +++ b/invokeai/frontend/dist/index.html @@ -5,7 +5,7 @@ InvokeAI - A Stable Diffusion Toolkit - + diff --git a/invokeai/frontend/dist/locales/common/ar.json b/invokeai/frontend/dist/locales/common/ar.json index be663b535b..f76dfe7f6f 100644 --- a/invokeai/frontend/dist/locales/common/ar.json +++ b/invokeai/frontend/dist/locales/common/ar.json @@ -9,18 +9,6 @@ "darkTheme": "داكن", "lightTheme": "فاتح", "greenTheme": "أخضر", - "langEnglish": "الإنجليزية", - "langRussian": "روسي", - "langItalian": "إيطالي", - "langBrPortuguese": "البرتغالية (البرازيلية)", - "langGerman": "الألمانية", - "langPortuguese": "البرتغالية", - "langFrench": "الفرنسية", - "langPolish": "البولندية", - "langSimplifiedChinese": "الصينية المبسطة", - "langSpanish": "الإسبانية", - "langJapanese": "اليابانية", - "langDutch": "الهولندية", "text2img": "نص إلى صورة", "img2img": "صورة إلى صورة", "unifiedCanvas": "لوحة موحدة", @@ -31,8 +19,8 @@ "postProcessDesc2": "سيتم إصدار واجهة رسومية مخصصة قريبًا لتسهيل عمليات المعالجة بعد الإصدار المتقدمة.", "postProcessDesc3": "واجهة سطر الأوامر Invoke AI توفر ميزات أخرى عديدة بما في ذلك Embiggen.", "training": "تدريب", - "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام Textual Inversion و Dreambooth من واجهة الويب.", - "trainingDesc2": "InvokeAI يدعم بالفعل تدريب تضمينات مخصصة باستخدام Textual Inversion باستخدام السكريبت الرئيسي.", + "trainingDesc1": "تدفق خاص مخصص لتدريب تضميناتك الخاصة ونقاط التحقق باستخدام العكس النصي و دريم بوث من واجهة الويب.", + "trainingDesc2": " استحضر الذكاء الصناعي يدعم بالفعل تدريب تضمينات مخصصة باستخدام العكس النصي باستخدام السكريبت الرئيسي.", "upload": "رفع", "close": "إغلاق", "load": "تحميل", @@ -52,10 +40,10 @@ "statusIterationComplete": "اكتمال التكرار", "statusSavingImage": "جاري حفظ الصورة", "statusRestoringFaces": "جاري استعادة الوجوه", - "statusRestoringFacesGFPGAN": "تحسيت الوجوه (GFPGAN)", - "statusRestoringFacesCodeFormer": "تحسين الوجوه (CodeFormer)", + "statusRestoringFacesGFPGAN": "تحسيت الوجوه (جي إف بي جان)", + "statusRestoringFacesCodeFormer": "تحسين الوجوه (كود فورمر)", "statusUpscaling": "تحسين الحجم", - "statusUpscalingESRGAN": "تحسين الحجم (ESRGAN)", + "statusUpscalingESRGAN": "تحسين الحجم (إي إس آر جان)", "statusLoadingModel": "تحميل النموذج", "statusModelChanged": "تغير النموذج" } diff --git a/invokeai/frontend/dist/locales/common/de.json b/invokeai/frontend/dist/locales/common/de.json index a1b1a12739..c827cae5b5 100644 --- a/invokeai/frontend/dist/locales/common/de.json +++ b/invokeai/frontend/dist/locales/common/de.json @@ -9,13 +9,6 @@ "darkTheme": "Dunkel", "lightTheme": "Hell", "greenTheme": "Grün", - "langEnglish": "Englisch", - "langRussian": "Russisch", - "langItalian": "Italienisch", - "langPortuguese": "Portugiesisch", - "langFrench": "Französich", - "langGerman": "Deutsch", - "langSpanish": "Spanisch", "text2img": "Text zu Bild", "img2img": "Bild zu Bild", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/dist/locales/common/en-US.json b/invokeai/frontend/dist/locales/common/en-US.json index 7d38074520..00b60df420 100644 --- a/invokeai/frontend/dist/locales/common/en-US.json +++ b/invokeai/frontend/dist/locales/common/en-US.json @@ -9,19 +9,6 @@ "darkTheme": "Dark", "lightTheme": "Light", "greenTheme": "Green", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", - "langJapanese": "Japanese", - "langDutch": "Dutch", - "langUkranian": "Ukranian", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/dist/locales/common/en.json b/invokeai/frontend/dist/locales/common/en.json index 7d38074520..e97fa2d074 100644 --- a/invokeai/frontend/dist/locales/common/en.json +++ b/invokeai/frontend/dist/locales/common/en.json @@ -9,19 +9,19 @@ "darkTheme": "Dark", "lightTheme": "Light", "greenTheme": "Green", + "langArabic": "العربية", "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", - "langJapanese": "Japanese", - "langDutch": "Dutch", - "langUkranian": "Ukranian", + "langDutch": "Nederlands", + "langFrench": "Français", + "langGerman": "Deutsch", + "langItalian": "Italiano", + "langJapanese": "日本語", + "langPolish": "Polski", + "langBrPortuguese": "Português do Brasil", + "langRussian": "Русский", + "langSimplifiedChinese": "简体中文", + "langUkranian": "Украї́нська", + "langSpanish": "Español", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/dist/locales/common/es.json b/invokeai/frontend/dist/locales/common/es.json index f4259cdaf2..5f51d5e6cd 100644 --- a/invokeai/frontend/dist/locales/common/es.json +++ b/invokeai/frontend/dist/locales/common/es.json @@ -9,15 +9,6 @@ "darkTheme": "Oscuro", "lightTheme": "Claro", "greenTheme": "Verde", - "langEnglish": "Inglés", - "langRussian": "Ruso", - "langItalian": "Italiano", - "langBrPortuguese": "Portugués (Brasil)", - "langGerman": "Alemán", - "langPortuguese": "Portugués", - "langFrench": "French", - "langPolish": "Polish", - "langSpanish": "Español", "text2img": "Texto a Imagen", "img2img": "Imagen a Imagen", "unifiedCanvas": "Lienzo Unificado", @@ -29,7 +20,6 @@ "postProcessDesc3": "La Interfaz de Línea de Comandos de Invoke AI ofrece muchas otras características, incluyendo -Embiggen-.", "training": "Entrenamiento", "trainingDesc1": "Un flujo de trabajo dedicado para el entrenamiento de sus propios -embeddings- y puntos de control utilizando Inversión Textual y Dreambooth desde la interfaz web.", - "trainingDesc2": "InvokeAI already supports training custom embeddings using Textual Inversion using the main script.", "trainingDesc2": "InvokeAI ya soporta el entrenamiento de -embeddings- personalizados utilizando la Inversión Textual mediante el script principal.", "upload": "Subir imagen", "close": "Cerrar", diff --git a/invokeai/frontend/dist/locales/common/fr.json b/invokeai/frontend/dist/locales/common/fr.json index f276a91644..46d32b1dee 100644 --- a/invokeai/frontend/dist/locales/common/fr.json +++ b/invokeai/frontend/dist/locales/common/fr.json @@ -9,18 +9,6 @@ "darkTheme": "Sombre", "lightTheme": "Clair", "greenTheme": "Vert", - "langEnglish": "Anglais", - "langRussian": "Russe", - "langItalian": "Italien", - "langBrPortuguese": "Portugais (Brésilien)", - "langGerman": "Allemand", - "langPortuguese": "Portugais", - "langFrench": "Français", - "langPolish": "Polonais", - "langSimplifiedChinese": "Chinois simplifié", - "langSpanish": "Espagnol", - "langJapanese": "Japonais", - "langDutch": "Néerlandais", "text2img": "Texte en image", "img2img": "Image en image", "unifiedCanvas": "Canvas unifié", diff --git a/invokeai/frontend/dist/locales/common/it.json b/invokeai/frontend/dist/locales/common/it.json index d96f5cc32c..8b9702ab4d 100644 --- a/invokeai/frontend/dist/locales/common/it.json +++ b/invokeai/frontend/dist/locales/common/it.json @@ -9,18 +9,6 @@ "darkTheme": "Scuro", "lightTheme": "Chiaro", "greenTheme": "Verde", - "langEnglish": "Inglese", - "langRussian": "Russo", - "langItalian": "Italiano", - "langBrPortuguese": "Portoghese (Brasiliano)", - "langGerman": "Tedesco", - "langPortuguese": "Portoghese", - "langFrench": "Francese", - "langPolish": "Polacco", - "langSimplifiedChinese": "Cinese semplificato", - "langSpanish": "Spagnolo", - "langJapanese": "Giapponese", - "langDutch": "Olandese", "text2img": "Testo a Immagine", "img2img": "Immagine a Immagine", "unifiedCanvas": "Tela unificata", diff --git a/invokeai/frontend/dist/locales/common/ja.json b/invokeai/frontend/dist/locales/common/ja.json index 94653b28d4..7705a2cf53 100644 --- a/invokeai/frontend/dist/locales/common/ja.json +++ b/invokeai/frontend/dist/locales/common/ja.json @@ -9,16 +9,6 @@ "darkTheme": "ダーク", "lightTheme": "ライト", "greenTheme": "緑", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Portuguese (Brazilian)", - "langGerman": "German", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langPolish": "Polish", - "langSimplifiedChinese": "Simplified Chinese", - "langSpanish": "Spanish", "text2img": "Text To Image", "img2img": "Image To Image", "unifiedCanvas": "Unified Canvas", diff --git a/invokeai/frontend/dist/locales/common/nl.json b/invokeai/frontend/dist/locales/common/nl.json index c61d97b9a7..326e75274a 100644 --- a/invokeai/frontend/dist/locales/common/nl.json +++ b/invokeai/frontend/dist/locales/common/nl.json @@ -9,17 +9,6 @@ "darkTheme": "Donker", "lightTheme": "Licht", "greenTheme": "Groen", - "langEnglish": "Engels", - "langRussian": "Russisch", - "langItalian": "Italiaans", - "langBrPortuguese": "Portugees (Braziliaans)", - "langGerman": "Duits", - "langPortuguese": "Portugees", - "langFrench": "Frans", - "langPolish": "Pools", - "langSimplifiedChinese": "Vereenvoudigd Chinees", - "langSpanish": "Spaans", - "langDutch": "Nederlands", "text2img": "Tekst naar afbeelding", "img2img": "Afbeelding naar afbeelding", "unifiedCanvas": "Centraal canvas", diff --git a/invokeai/frontend/dist/locales/common/pl.json b/invokeai/frontend/dist/locales/common/pl.json index 2b9f3b5903..384fa18628 100644 --- a/invokeai/frontend/dist/locales/common/pl.json +++ b/invokeai/frontend/dist/locales/common/pl.json @@ -9,13 +9,6 @@ "darkTheme": "Ciemny", "lightTheme": "Jasny", "greenTheme": "Zielony", - "langEnglish": "Angielski", - "langRussian": "Rosyjski", - "langItalian": "Włoski", - "langPortuguese": "Portugalski", - "langFrench": "Francuski", - "langPolish": "Polski", - "langSpanish": "Hiszpański", "text2img": "Tekst na obraz", "img2img": "Obraz na obraz", "unifiedCanvas": "Tryb uniwersalny", diff --git a/invokeai/frontend/dist/locales/common/pt_br.json b/invokeai/frontend/dist/locales/common/pt_br.json index 295bcf8184..52f3007797 100644 --- a/invokeai/frontend/dist/locales/common/pt_br.json +++ b/invokeai/frontend/dist/locales/common/pt_br.json @@ -9,13 +9,6 @@ "darkTheme": "Noite", "lightTheme": "Dia", "greenTheme": "Verde", - "langEnglish": "English", - "langRussian": "Russian", - "langItalian": "Italian", - "langBrPortuguese": "Português do Brasil", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langSpanish": "Spanish", "text2img": "Texto Para Imagem", "img2img": "Imagem Para Imagem", "unifiedCanvas": "Tela Unificada", diff --git a/invokeai/frontend/dist/locales/common/ru.json b/invokeai/frontend/dist/locales/common/ru.json index efa54fcd47..992cb5caf8 100644 --- a/invokeai/frontend/dist/locales/common/ru.json +++ b/invokeai/frontend/dist/locales/common/ru.json @@ -9,12 +9,6 @@ "darkTheme": "Темная", "lightTheme": "Светлая", "greenTheme": "Зеленая", - "langEnglish": "English", - "langRussian": "Русский", - "langItalian": "Italian", - "langPortuguese": "Portuguese", - "langFrench": "French", - "langSpanish": "Spanish", "text2img": "Изображение из текста (text2img)", "img2img": "Изображение в изображение (img2img)", "unifiedCanvas": "Универсальный холст", diff --git a/invokeai/frontend/dist/locales/common/ua.json b/invokeai/frontend/dist/locales/common/ua.json index 69c1e7bc09..8b0d5b7ae8 100644 --- a/invokeai/frontend/dist/locales/common/ua.json +++ b/invokeai/frontend/dist/locales/common/ua.json @@ -9,11 +9,6 @@ "darkTheme": "Темна", "lightTheme": "Світла", "greenTheme": "Зелена", - "langEnglish": "Англійська", - "langRussian": "Російська", - "langItalian": "Iталійська", - "langPortuguese": "Португальська", - "langFrench": "Французька", "text2img": "Зображення із тексту (text2img)", "img2img": "Зображення із зображення (img2img)", "unifiedCanvas": "Універсальне полотно", diff --git a/invokeai/frontend/dist/locales/common/zh_cn.json b/invokeai/frontend/dist/locales/common/zh_cn.json index a787f13b76..d4219d8815 100644 --- a/invokeai/frontend/dist/locales/common/zh_cn.json +++ b/invokeai/frontend/dist/locales/common/zh_cn.json @@ -9,12 +9,6 @@ "darkTheme": "暗色", "lightTheme": "亮色", "greenTheme": "绿色", - "langEnglish": "英语", - "langRussian": "俄语", - "langItalian": "意大利语", - "langPortuguese": "葡萄牙语", - "langFrench": "法语", - "langChineseSimplified": "简体中文", "text2img": "文字到图像", "img2img": "图像到图像", "unifiedCanvas": "统一画布", diff --git a/invokeai/frontend/dist/locales/hotkeys/ar.json b/invokeai/frontend/dist/locales/hotkeys/ar.json index 4a70ab2129..e169b3cdbc 100644 --- a/invokeai/frontend/dist/locales/hotkeys/ar.json +++ b/invokeai/frontend/dist/locales/hotkeys/ar.json @@ -3,7 +3,7 @@ "appHotkeys": "مفاتيح التطبيق", "GeneralHotkeys": "مفاتيح عامة", "galleryHotkeys": "مفاتيح المعرض", - "unifiedCanvasHotkeys": "مفاتيح الأوحدة Canvas", + "unifiedCanvasHotkeys": "مفاتيح اللوحةالموحدة ", "invoke": { "title": "أدعو", "desc": "إنشاء صورة" diff --git a/invokeai/frontend/dist/locales/modelmanager/ar.json b/invokeai/frontend/dist/locales/modelmanager/ar.json index a5ba06f31c..5c93a87f45 100644 --- a/invokeai/frontend/dist/locales/modelmanager/ar.json +++ b/invokeai/frontend/dist/locales/modelmanager/ar.json @@ -4,14 +4,14 @@ "allModels": "جميع النماذج", "checkpointModels": "نقاط التحقق", "diffusersModels": "المصادر المتعددة", - "safetensorModels": "SafeTensors", + "safetensorModels": "التنسورات الآمنة", "modelAdded": "تمت إضافة النموذج", "modelUpdated": "تم تحديث النموذج", "modelEntryDeleted": "تم حذف مدخل النموذج", "cannotUseSpaces": "لا يمكن استخدام المساحات", "addNew": "إضافة جديد", "addNewModel": "إضافة نموذج جديد", - "addCheckpointModel": "إضافة نقطة تحقق / نموذج SafeTensor", + "addCheckpointModel": "إضافة نقطة تحقق / نموذج التنسور الآمن", "addDiffuserModel": "إضافة مصادر متعددة", "addManually": "إضافة يدويًا", "manual": "يدوي", @@ -25,10 +25,10 @@ "modelLocationValidationMsg": "موقع النموذج على الجهاز الخاص بك.", "repo_id": "معرف المستودع", "repoIDValidationMsg": "المستودع الإلكتروني لنموذجك", - "vaeLocation": "موقع VAE", - "vaeLocationValidationMsg": "موقع VAE على الجهاز الخاص بك.", - "vaeRepoID": "معرف مستودع VAE", - "vaeRepoIDValidationMsg": "المستودع الإلكتروني لVAE", + "vaeLocation": "موقع فاي إي", + "vaeLocationValidationMsg": "موقع فاي إي على الجهاز الخاص بك.", + "vaeRepoID": "معرف مستودع فاي إي", + "vaeRepoIDValidationMsg": "المستودع الإلكتروني فاي إي", "width": "عرض", "widthValidationMsg": "عرض افتراضي لنموذجك.", "height": "ارتفاع", @@ -58,10 +58,10 @@ "delete": "حذف", "deleteModel": "حذف النموذج", "deleteConfig": "حذف التكوين", - "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من InvokeAI؟", + "deleteMsg1": "هل أنت متأكد من رغبتك في حذف إدخال النموذج هذا من استحضر الذكاء الصناعي", "deleteMsg2": "هذا لن يحذف ملف نقطة التحكم للنموذج من القرص الخاص بك. يمكنك إعادة إضافتهم إذا كنت ترغب في ذلك.", "formMessageDiffusersModelLocation": "موقع النموذج للمصعد", "formMessageDiffusersModelLocationDesc": "يرجى إدخال واحد على الأقل.", - "formMessageDiffusersVAELocation": "موقع VAE", - "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث InvokeAI عن ملف VAE داخل موقع النموذج المعطى أعلاه." + "formMessageDiffusersVAELocation": "موقع فاي إي", + "formMessageDiffusersVAELocationDesc": "إذا لم يتم توفيره، سيبحث استحضر الذكاء الصناعي عن ملف فاي إي داخل موقع النموذج المعطى أعلاه." } diff --git a/invokeai/frontend/dist/locales/options/ar.json b/invokeai/frontend/dist/locales/parameters/ar.json similarity index 96% rename from invokeai/frontend/dist/locales/options/ar.json rename to invokeai/frontend/dist/locales/parameters/ar.json index 7fe56ae954..f46139db2e 100644 --- a/invokeai/frontend/dist/locales/options/ar.json +++ b/invokeai/frontend/dist/locales/parameters/ar.json @@ -1,7 +1,7 @@ { "images": "الصور", "steps": "الخطوات", - "cfgScale": "CFG Scale", + "cfgScale": "مقياس الإعداد الذاتي للجملة", "width": "عرض", "height": "ارتفاع", "sampler": "مزج", @@ -9,7 +9,7 @@ "randomizeSeed": "تبديل بذرة", "shuffle": "تشغيل", "noiseThreshold": "عتبة الضوضاء", - "perlinNoise": "Perlin Noise", + "perlinNoise": "ضجيج برلين", "variations": "تباينات", "variationAmount": "كمية التباين", "seedWeights": "أوزان البذور", diff --git a/invokeai/frontend/dist/locales/settings/ar.json b/invokeai/frontend/dist/locales/settings/ar.json index 9471df4809..02f11dd0ba 100644 --- a/invokeai/frontend/dist/locales/settings/ar.json +++ b/invokeai/frontend/dist/locales/settings/ar.json @@ -8,6 +8,6 @@ "enableImageDebugging": "تمكين التصحيح عند التصوير", "resetWebUI": "إعادة تعيين واجهة الويب", "resetWebUIDesc1": "إعادة تعيين واجهة الويب يعيد فقط ذاكرة التخزين المؤقت للمتصفح لصورك وإعداداتك المذكورة. لا يحذف أي صور من القرص.", - "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على GitHub.", + "resetWebUIDesc2": "إذا لم تظهر الصور في الصالة أو إذا كان شيء آخر غير ناجح، يرجى المحاولة إعادة تعيين قبل تقديم مشكلة على جيت هب.", "resetComplete": "تم إعادة تعيين واجهة الويب. تحديث الصفحة لإعادة التحميل." } diff --git a/invokeai/frontend/dist/locales/toast/ar.json b/invokeai/frontend/dist/locales/toast/ar.json index 3cde887a08..f93141337d 100644 --- a/invokeai/frontend/dist/locales/toast/ar.json +++ b/invokeai/frontend/dist/locales/toast/ar.json @@ -10,8 +10,8 @@ "imageNotLoadedDesc": "لم يتم العثور على صورة لإرسالها إلى وحدة الصورة", "imageSavedToGallery": "تم حفظ الصورة في المعرض", "canvasMerged": "تم دمج الخط", - "sentToImageToImage": "تم إرسال إلى Image To Image", - "sentToUnifiedCanvas": "تم إرسال إلى Unified Canvas", + "sentToImageToImage": "تم إرسال إلى صورة إلى صورة", + "sentToUnifiedCanvas": "تم إرسال إلى لوحة موحدة", "parametersSet": "تم تعيين المعلمات", "parametersNotSet": "لم يتم تعيين المعلمات", "parametersNotSetDesc": "لم يتم العثور على معلمات بيانية لهذه الصورة.", diff --git a/invokeai/frontend/dist/locales/tooltip/ar.json b/invokeai/frontend/dist/locales/tooltip/ar.json index 120f255458..0beca4b86e 100644 --- a/invokeai/frontend/dist/locales/tooltip/ar.json +++ b/invokeai/frontend/dist/locales/tooltip/ar.json @@ -2,11 +2,11 @@ "feature": { "prompt": "هذا هو حقل التحذير. يشمل التحذير عناصر الإنتاج والمصطلحات الأسلوبية. يمكنك إضافة الأوزان (أهمية الرمز) في التحذير أيضًا، ولكن أوامر CLI والمعلمات لن تعمل.", "gallery": "تعرض Gallery منتجات من مجلد الإخراج عندما يتم إنشاؤها. تخزن الإعدادات داخل الملفات ويتم الوصول إليها عن طريق قائمة السياق.", - "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـ Invoke. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر img2img: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من txt2img المعتاد.", + "other": "ستمكن هذه الخيارات من وضع عمليات معالجة بديلة لـاستحضر الذكاء الصناعي. سيؤدي 'الزخرفة بلا جدران' إلى إنشاء أنماط تكرارية في الإخراج. 'دقة عالية' هي الإنتاج خلال خطوتين عبر صورة إلى صورة: استخدم هذا الإعداد عندما ترغب في توليد صورة أكبر وأكثر تجانبًا دون العيوب. ستستغرق الأشياء وقتًا أطول من نص إلى صورة المعتاد.", "seed": "يؤثر قيمة البذور على الضوضاء الأولي الذي يتم تكوين الصورة منه. يمكنك استخدام البذور الخاصة بالصور السابقة. 'عتبة الضوضاء' يتم استخدامها لتخفيف العناصر الخللية في قيم CFG العالية (جرب مدى 0-10), و Perlin لإضافة ضوضاء Perlin أثناء الإنتاج: كلا منهما يعملان على إضافة التنوع إلى النتائج الخاصة بك.", "variations": "جرب التغيير مع قيمة بين 0.1 و 1.0 لتغيير النتائج لبذور معينة. التغييرات المثيرة للاهتمام للبذور تكون بين 0.1 و 0.3.", - "upscale": "استخدم ESRGAN لتكبير الصورة على الفور بعد الإنتاج.", - "face Correction": "تصحيح الوجه باستخدام GFPGAN أو Codeformer: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. Codeformer بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", + "upscale": "استخدم إي إس آر جان لتكبير الصورة على الفور بعد الإنتاج.", + "face Correction": "تصحيح الوجه باستخدام جي إف بي جان أو كود فورمر: يكتشف الخوارزمية الوجوه في الصورة وتصحح أي عيوب. قيمة عالية ستغير الصورة أكثر، مما يؤدي إلى وجوه أكثر جمالا. كود فورمر بدقة أعلى يحتفظ بالصورة الأصلية على حساب تصحيح وجه أكثر قوة.", "imageToImage": "تحميل صورة إلى صورة أي صورة كأولية، والتي يتم استخدامها لإنشاء صورة جديدة مع التشعيب. كلما كانت القيمة أعلى، كلما تغيرت نتيجة الصورة. من الممكن أن تكون القيم بين 0.0 و 1.0، وتوصي النطاق الموصى به هو .25-.75", "boundingBox": "مربع الحدود هو نفس الإعدادات العرض والارتفاع لنص إلى صورة أو صورة إلى صورة. فقط المنطقة في المربع سيتم معالجتها.", "seam Correction": "يتحكم بالتعامل مع الخطوط المرئية التي تحدث بين الصور المولدة في سطح اللوحة.", diff --git a/invokeai/frontend/stats.html b/invokeai/frontend/stats.html index abfa9a018a..3c43c716e6 100644 --- a/invokeai/frontend/stats.html +++ b/invokeai/frontend/stats.html @@ -6157,7 +6157,7 @@ var drawChart = (function (exports) {