diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000000000000000000000000000000000..d57a09a41cb3eaa372dad425fc5c401ffa5af85d --- /dev/null +++ b/.npmrc @@ -0,0 +1,2 @@ +ELECTRON_MIRROR=https://npm.taobao.org/mirrors/electron/ +ELECTRON_BUILDER_BINARIES_MIRROR=https://npm.taobao.org/mirrors/electron-builder-binaries/ diff --git a/package.json b/package.json index 76ff22ac29dd2626198df0e88da2bd862cfd324d..b251ee0b72236647bd72361403a9daf50baf5570 100644 --- a/package.json +++ b/package.json @@ -6,10 +6,10 @@ "scripts": { "build": "node scripts/build.js", "build-server": "node scripts/build_server.js", - "build-web": "cd web && rollup -c rollup.config.js", + "build-web": "cd web && rollup -c rollup.config.mjs", "build-desktop": "node scripts/build_desktop.js", "start-desktop": "cd build && electron .", - "dev": "cd web && rollup -c rollup.config.js --watch", + "dev": "cd web && rollup -c rollup.config.mjs --watch", "watch": "node scripts/watch.js", "serve": "npm-run-all --parallel dev watch", "copy": "node scripts/copy.js", @@ -21,8 +21,8 @@ "clean": "node scripts/clean.js", "test": "echo \"Error: no test specified\" && exit 1", "clear": "npm prune", - "build-wind": "cd web/test/WebWorldWind && rollup -c rollup.config.js", - "dev-wind": "cd web/test/WebWorldWind && rollup -c rollup.config.js --watch" + "build-wind": "cd web/test/WebWorldWind && rollup -c rollup.config.mjs", + "dev-wind": "cd web/test/WebWorldWind && rollup -c rollup.config.mjs --watch" }, "dependencies": { "@tweenjs/tween.js": "^18.5.0", @@ -31,7 +31,9 @@ "i18next": "^17.3.1", "i18next-xhr-backend": "^3.2.2", "js-cookie": "^2.2.1", - "prop-types": "^15.7.2" + "prop-types": "^15.7.2", + "rollup-plugin-livereload": "^2.0.5", + "rollup-plugin-serve": "^2.0.2" }, "devDependencies": { "@babel/core": "^7.9.6", @@ -75,4 +77,4 @@ "url": "https://github.com/tengge1/ShadowEditor/issues" }, "homepage": "https://github.com/tengge1/ShadowEditor" -} \ No newline at end of file +} diff --git a/scripts/build.js b/scripts/build.js index 445a947201696e394fb73ccb903aa97e8a2e9392..2b204ecac9e63e73725e316b34461d7d24db466b 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -59,7 +59,7 @@ async function main() { process.chdir(webDir); console.log('build web client...'); const npx = os.platform() === 'win32' ? 'npx.cmd' : 'npx'; - await exec(npx, ['rollup', '-c', 'rollup.config.js']); + await exec(npx, ['rollup', '-c', 'rollup.config.mjs']); console.log(`copy files...`); fs.copySync('./assets', '../build/public/assets'); fs.copySync('./locales', '../build/public/locales'); diff --git a/web/README.md b/web/README.md index 7569aca76e3dfef4ee77bda36a1c7b71173d21e4..e6aaa5f9b6d8089c9c65555ea4014ceda88561e5 100644 --- a/web/README.md +++ b/web/README.md @@ -16,6 +16,6 @@ is javascript. | favicon.ico | website icon | | index.html | web client home page | | manifest.json | | -| rollup.config.js | rollup config file | +| rollup.config.mjs | rollup config file | | sw.js | | | view.html | home page when play in new window or publish | \ No newline at end of file diff --git a/web/index.html b/web/index.html index 36221a5d65bab66d03a3163ef3c46f1c343b4f42..1bfc44384dfcb12c2bfd5a3e829a31f57f918f9d 100644 --- a/web/index.html +++ b/web/index.html @@ -1,43 +1,52 @@ - + + - - Shadow Editor - - - - - + + No Name + + + + + -
- - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/locales/fr-FR.json b/web/locales/fr-FR.json index 971970ff00ce799f2c066683946db66bc41200c7..1d2cc5d87fa708e36a73195c9c4db475aa842276 100644 --- a/web/locales/fr-FR.json +++ b/web/locales/fr-FR.json @@ -1,652 +1,658 @@ { - "Please open scene first.": "S'il vous plaît ouvrir la scène en premier!", - "Solid Color": "Couleur unie", - "PanSpeed": "Vitesse de traduction", - "Encoding": "Codage", - "Execute after program stopped": "Exécuter une fois après la fin du programme", - "Group": "Groupe", - "Please save scene first.": "S'il vous plaît enregistrer la scène en premier!", - "Sphere": "Sphère", - "RadiusTop": "Rayon supérieur", - "BumpMap": "Texture bosse", - "Far": "Au loin", - "KeyPanSpeed": "Bouton vitesse", - "WireWidth": "Épaisseur de filaire", - "ConstrainVertical": "Limiter l'angle d'élévation", - "Transparent": "Transparent", - "AoMap": "Texture d'occlusion", - "Cylinder": "Cylindre", - "Clamp To Edge": "Étirement", - "Settings": "Réglage", - "Add physics cloth successfully": "Ajouter un vêtement physique avec succès!", - "Bump Scale": "Ratio de texture en relief", - "Position": "Emplacement", - "BlendingMode": "Mode mixte", - "VelocitySpread": "Divergence de vitesse", - "Play Fullscreen": "Lecture plein écran", - "Mass": "La qualité", - "CameraBottom": "Sous la caméra", - "EnableZoom": "Activer le zoom", - "SMAA": "Anti-aliasing multi-échantillons (SMAA)", - "Undo": "Annuler", - "Lighter": "Éclaircir", - "ClipBias": "Décalage des cultures", - "Geometry": "La géométrie", - "Total {{totalPage}} Pages": "Total {{totalPage}} page", - "Basic Info": "Informations de base", - "Remove Object": "Supprimer l'objet", - "Rotate(E)": "Rotation (e)", - "NoPan": "Pas panoramique", - "Occlusion": "Occlusion", - "Level": "Grade", - "RotateGreen": "Déviation verte", - "Aperture": "Ouverture", - "Listen to resize event": "Surveiller l'événement de changement de taille d'écran", - "Set Geometry.": "Définissez la géométrie.", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "Le tri du modèle supprimera le nombre et le soulignement après le nom, régénérera la table de données, le catalogue de modèles, supprimera les dossiers vides et les fichiers de modèle non référencés, le système sauvegardera automatiquement la table de données, le catalogue de modèles, si le tri est nécessaire?", - "AudioListener": "Auditeur audio", - "Luminance": "La luminosité", - "HeightSpeed": "Hauteur de la vitesse", - "Mapping": "Cartographie", - "Image upload successfully!": "L'image a été téléchargée avec succès!", - "Box": "Cube", - "Please enter material name": "Veuillez entrer un nom de matériau", - "Are you sure to export the current scene?": "Voulez-vous exporter la scène actuelle?", - "PhysicsType": "Type physique", - "Substractive Blending": "Mauvais mélange", - "Preview": "Aperçu", - "Reduce Terrain": "Réduire le terrain", - "Geometry Component": "Composant géométrique", - "MaxPolarAngle": "Angle d'élévation maximum", - "material has no coordinates.": "Le matériau n'a pas de coordonnées de texture!", - "RepeatNum": "Nombre de remplissages", - "Please select object!": "Veuillez sélectionner un objet!", - "Category Add": "Addition de catégorie", - "LMesh Component": "Composant LMesh", - "Blinn": "Brin", - "Listen to mousedown event": "Surveiller l'événement de clic de souris", - "Save Scene": "Sauver la scène", - "Vertex Shader": "Vertex shader", - "Gamma Factor": "Facteur gamma", - "MinAzimuthAngle": "Orientation minimale", - "MieCofficient": " off coefficient", - "Emissive": "Illuminer", - "Smoke": "Fumée", - "Basic Shadow": "Ombre de base", - "32 Samples": "32 échantillons", - "PosY": "Axe Y positif", - "RigidBody": "Corps rigide", - "Torus": "Pneu", - "Play New Window": "Nouvelle lecture de la fenêtre", - "Vertex": "Nombre de sommets", - "Name": "Nom", - "Export GLTF": "Exporter un fichier gltf", - "Grayscale": "Niveaux de gris", - "Side View": "Vue de côté", - "Undo/Redo history will be cleared. Are you sure?": "L'historique annuler / rétablir sera effacé. ", - "Sone Words": "Du texte", - "Water Component": "Composant de l'eau", - "Execute each frame during running": "Chaque image doit être exécutée pendant l'exécution du programme.", - "Top View": "Vue de dessus", - "DistortedArc": "Courbure déformée", - "MovementSpeed": "Vitesse de déplacement", - "BeginTime": "Heure de début", - "Particle Animation": "Animation de particules", - "Listen to click event": "Écouter les événements de clic de souris", - "Amount": "Montant", - "BackgroundColor": "Couleur de fond", - "BlurStdDev": "Écart type", - "FogDensity": "Concentration de brouillard", - "Acceleration": "L'accélération", - "Scale Locked": "Verrouiller le zoom", - "Please select MMD animation only.": "Seules les animations de modèle MMD sont autorisées!", - "Displace Scale": "Ratio de texture de déplacement", - "Radius": "Rayon", - "Error": "Erreur", - "CatmullRom Curve": "courbe Catmull Rom ", - "PosZ": "Axe Z positif", - "ShaderMaterial": "Matériau de shader", - "PremultiplyAlpha": "Laissé par transparent", - "MeshBasicMaterial": "Matériel de base", - "Custom Status": "Personnalisé", - "Grid": "Grille", - "Invert": "Inversion de couleur", - "CameraRight": "Caméra droite", - "DragToLook": "Faites glisser pour voir", - "Object": "Nombre d'objets", - "Pie Chart": "Camembert", - "Clear Logs": "Vider le journal", - "Play Audio": "Jouer de la musique", - "Label": "Étiquette", - "Fire Component": "Assemblage de flamme", - "Create": "Ajouter", - "Wireframe": "Fil de fer", - "TimeSpan": "Durée", - "Enable": "Activer", - "AutoRotate": "Rotation automatique", - "Cannot deserialize scene data.": "Impossible d'analyser les données de la scène!", - "Tube": "Segment de tuyau", - "Lid": "Couvercle du pot", - "Point": "Point", - "Bar Chart": "Diagramme à barres", - "Body": "Corps", - "Set Scale": "Définir le zoom", - "Arrange Thumbnail": "Organiser les vignettes", - "MaxAzimuthAngle": "Orientation maximale", - "ActiveLock": "Activer attendre et voir", - "MetalNess": "Métalité", - "Publish website": "Site de publication", - "Penumbra": "Demi ombre", - "Illustrate: Double-click the area below the timeline to add an animation.": "Description: double-cliquez sur la zone située sous la timeline pour ajouter une animation.", - "Lisense": "Autorisation", - "Listen to mousemove event": "Surveiller les mouvements de souris", - "MaxBlur": "Flou maximum", - "Shadow Component": "Composant ombré", - "Double Side": "Double face", - "Add Point": "Ajouter un point", - "LookVertical": "Lève les yeux", - "CubicBezier Curve": "Courbe de Bézier cubique", - "History": "Histoire", - "Empty Scene": "Scène vide", - "Author": "Auteur", - "TextureSize": "Taille de la texture", - "MeshPhysicalMaterial": "Matériel physique", - "CameraNear": "Caméra près", - "Please select texture first.": "Veuillez d'abord sélectionner la texture pour cet objet!", - "Gravity": "Gravité", - "ParticleEmitter": "Émetteur de particules", - "PositionSpread": "Divergence de localisation", - "CameraFar": "Caméra loin", - "MaxDistance": "Distance maximale", - "Options": "Option", - "Shape": "Forme", - "Teapot": "Théière", - "HeightMax": "Hauteur maximale", - "Add": "Ajouter ensemble", - "PhiStart": "Longitude de départ", - "FitLid": "Convient pour le couvercle", - "Disable": "Désactiver", - "DepthSegments": "Segmentation profonde", - "Gamma Output": "Sortie gamma", - "RadialSegments": "Segmentation radiale", - "RawShaderMaterial": "Matériau de shader brut", - "Logs": "Journal", - "RGB Shift Effect": "Effet de changement de couleur", - "Hierachy": "Scène", - "2 Samples": "2 échantillons", - "Shininess": "La luminosité", - "Audio": "Audio", - "Helpers": "Assistant", - "Fragment": "Source", - "CameraLeft": "Caméra à gauche", - "Loop": "Lecture en boucle", - "Icosahedron": "Icosaèdre", - "FogNear": "Brouillard près du point", - "Depth": "Profondeur", - "PCF Soft Shadow": "Ombre douce PCF", - "Shader cannot be parsed.": "Les informations sur les shader ne peuvent pas être désérialisées.", - "Category": "Catégorie", - "Category Edit": "Édition de catégorie", - "FXAA Component": "Anti-aliasing à approximation rapide (FXAA)", - "BackSide": "Retour", - "RotateRed": "Déviation rouge", - "Animation Object": "Objet en mouvement", - "Side": "Exclure", - "IsLocked": "Si verrouiller", - "Directional Light": "Lumière parallèle", - "has no physics helper.": "Il n'y a pas d'aide de forme physique correspondante.", - "EndStatus": "État final", - "Shader Terrain": "Shader Terrain", - "Please input": "S'il vous plaît entrer", - "Remove Script": "Supprimer le script", - "Target": "Objectif", - "Flat Shading": "Lissage", - "Data Source Manage": "Gestion des sources de données", - "Cannot set texture": "Impossible de définir la texture,", - "Property": "Attribut", - "Move Object": "Objet en mouvement", - "Scale(R)": "Zoom (R)", - "Texture Settings": "Réglage de la texture", - "8 Samples": "8 échantillons", - "Enabled": "Activer", - "Arc": "Radian", - "OK": "Déterminer", - "New Material": "Nouveau matériel", - "Form Panel": "Formulaire", - "Export OBJ": "Exporter un fichier obj", - "4 Samples": "4 échantillons", - "Arrange Mesh": "Organiser le modèle", - "AutoRotateSpeed": "Vitesse de rotation", - "WrapT": "Remplissage vertical", - "Tension": "La tension", - "Unbiased": "Pas de déviation", - "Output": "Sortie", - "Model Animation": "Animation de modèle", - "GIS Component": "Composante SIG", - "Text": "Texte", - "SmokeComponent": "Composant de fumée", - "Globe": "La terre", - "Ellipse": "Ellipse", - "No Colors": "Pas de couleur", - "Please select category.": "Veuillez sélectionner une catégorie!", - "Particle": "Particule", - "Collapse": "Pliant", - "Focus": "Longueur focale", - "DotScreenEffect": "Effet de réseau", - "UnpackAlignment": "Décompresser l'alignement", - "Camera": "Appareil photo", - "NegX": "Axe X négatif", - "ShaderInfo": "Informations sur le shader", - "Fov": "Champ de vision", - "Arrange Map": "Carte de finition", - "MaxAge": "Durée", - "Search Content": "Rechercher du contenu", - "SoftVolume": "Corps mou", - "Add Object": "Ajouter des objets:", - "Opacity": "L'opacité", - "Physics Cloth": "Ajouter un vêtement physique", - "TubelarSegments": "Segment tubulaire", - "GroundColor": "Couleur de fond", - "Color": "Couleur", - "KernalRadius": "Rayon de base", - "You should select Cube Texture.": "Autoriser uniquement les cartes stéréo!", - "Scale": "Zoom", - "Theme": "Thème", - "Width": "Largeur", - "Frag Shader": "Source shader", - "EmissiveMap": "Texture rougeoyante", - "Please select a record.": "Veuillez sélectionner des données", - "Upload": "Upload", - "Upload failed.": "Le téléchargement a échoué!", - "AnimLayer": "Couche d'animation", - "Quality": "La qualité", - "Background": "Le fond", - "ClearCoatRoughness": "Rugosité transparente", - "Vertex Colors": "Couleur vertex", - "Decal": "Applique", - "Perspective View": "Perspective", - "Load Successfully!": "Chargement réussi!", - "ThrowBall": "Lancer une petite balle", - "Are you sure to publish all scenes and assets?": "Publiez-vous tous les scénarios et les ressources en tant que sites Web statiques?", - "Skeletal Animation": "Animation squelettique", - "SizeSpread": "Divergence dimensionnelle", - "Waiting...": "S'il vous plaît attendez ...", - "Rayleigh": "Rayleigh", - "Plane": "Avion", - "PhysicsEnvironment": "Environnement physique", - "Cancel": "Annuler", - "EndTime": "Heure de fin", - "Draw Point": "Dessiner un point", - "Auto Play": "Jeu automatique", - "Translate(W)": "Pan (W)", - "Fire": "Flamme", - "Chord": "Chaîne", - "Torus Knot": "Kink", - "Darker": "Assombrir", - "Please select MMD audio.": "Veuillez cliquer sur l'audio correspondant à l'animation MMD!", - "Export Object": "Exporter un objet", - "StaticMoving": "Mouvement statique", - "Set Script": "Paramétrage du script", - "HeightMin": "Hauteur minimale", - "Spray": "Jet", - "Please click the map in the Map Panel.": "S'il vous plaît cliquer sur la carte stéréo dans le panneau de texture!", - "Save As": "Enregistrer sous", - "Delete": "Supprimer", - "Orbit Controls": "Contrôleur de piste", - "Force Directed Graph": "Carte orientée force", - "Perlin Terrain": "Terrain berlinois", - "Plant Trees": "Lot de plantation d'arbres", - "SceneComponent": "Composant de scène", - "Sprite": "Elfe", - "HueRotate": "Teinte", - "Face Colors": "Visage couleur", - "Scatter": "Disperser", - "Tree Diagram": "Diagramme d'arbre", - "Set": "Réglage", - "Please select camera animation only.": "Seules les animations de caméra MMD sont autorisées!", - "Scene Controller": "Contrôleur de scène", - "GenerateMipmaps": "Niveau ouvert", - "Anisotropy": "Anisotropie", - "Clear": "Vide", - "BeginStatus": "Etat de départ", - "Ambient": "Lumière ambiante", - "Cube Texture fetch failed.": "L'acquisition de texture stéréo a échoué!", - "Dark Color": "Sombre", - "MeshDepthMaterial": "Matériau de profondeur", - "Component": "Composant", - "Please click the audio in the Audio Panel.": "S'il vous plaît cliquer sur l'audio dans le panneau audio!", - "Please click the animation in the animation panel.": "S'il vous plaît cliquer sur l'animation dans le panneau d'animation!", - "Filter": "Filtrer", - "Rotate Center": "Centre de rotation", - "LookSpeed": "Regarder la vitesse", - "Are you sure to export the editor?": "Voulez-vous exporter l'éditeur?", - "Specular": "Degré de miroir", - "Camera Component": "Composant de la caméra", - "Exponential": "Exponentielle", - "Update UUID": "Mettre à jour l'UUID", - "Reflector Component": "Composant réfléchissant", - "DefaultCollisionConfig": "Configuration de collision par défaut", - "Tianditu Map": "Carte du jour", - "Edit Script": "Editer le script", - "DisplacementMap": "Texture de déplacement", - "Examples": "Exemple", - "Listen to mousewheel event": "Surveiller les événements de la molette de la souris", - "Horizontal Line": "Ligne horizontale", - "Pointer Lock Controls": "Contrôleur de verrouillage de pointeur", - "Height": "Hauteur", - "Distance": "Distance", - "Visual": "Visualisation", - "RoughnessMap": "Texture rugueuse", - "Partition Diagram": "Carte de partition", - "Current Status": "État actuel", - "Information": "Les informations", - "CameraTop": "Sur la caméra", - "Please check the layer.": "Veuillez cocher la couche que vous souhaitez supprimer!", - "Beauty&Occlusion": "", - "Ambient Light": "Lumière ambiante", - "2D": "En deux dimensions", - "SoftBodyRigidBodyCollisionConfig": "Configuration de collision de corps mou", - "No Image": "Pas d'image", - "Record": "Enregistrement", - "Language": "Langue", - "Please select camera animation.": "Seules les animations de caméra MMD sont autorisées!", - "Select": "Choisir", - "Intensity": "Intensité", - "SpecularMap": "Texture miroir", - "MapSize": "Taille de la texture", - "Clear History": "Effacer l'historique", - "WrapS": "Remplissage latéral", - "Bottom": "En bas", - "Cube Texture": "Carte stéréo", - "LightMap": "Texture légère", - "Damp": "Amortissement", - "LineBasicMaterial": "Matériau de trait", - "Bokeh Effect": "Effet de flou de fond", - "Not Set": "Non défini", - "Tool": "Outil", - "Query": "Enquête", - "Thumbnail": "Thumbnail", - "Save Successfully.": "Enregistré avec succès.", - "WidthSegments": "Segmentation en largeur", - "16 Samples": "16 échantillons", - "BoxShape": "Cube", - "Draw Pologon": "Photo", - "Bias": "Déviation", - "Skeleton": "Os", - "New Script": "Nouveau script", - "Dragging animation on other animation is not allowed.": "Faire glisser une animation vers d'autres animations n'est pas autorisé.", - "EnableRotate": "Activer la rotation", - "Basic Information": "Informations de base", - "Default": "Par défaut", - "Play": "Jouer", - "Reflect": "Réfléchissant", - "Vertex Color": "Couleur vertex", - "First Person Controls": "Premier contrôleur de vue", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "L'organisation des vignettes régénérera le répertoire des vignettes, modifiera la scène, le modèle, la texture, les matériaux, l'audio, les animations, les particules, le corps des préréglages et le chemin des vignettes des personnages. Sauvegardez d'abord la base de données manuellement.", - "Listen to keydown event": "Surveiller l'événement de presse au clavier", - "Exporting...": "Exporter ...", - "Ease Func": "Fonction d'interpolation", - "Disabled": "Désactiver", - "NormalMap": "Texture normale", - "Tween Animation": "Animation entre deux", - "Spline": "Courbe", - "Chord Graph": "Diagramme d'accord", - "Raise Terrain": "Soulever le terrain", - "Close": "Fermer", - "Please upload all the textures before save.": "Veuillez télécharger toutes les cartes stéréo et cliquez sur Enregistrer!", - "Debug Mode": "Mode débogage", - "Execute after scene render": "Exécuter une fois après le rendu de la scène", - "Confirm": "Confirmer", - "VerticalMax": "Angle d'élévation maximum", - "Gauge": "Instrument", - "Water": "De l'eau", - "NoRotate": "Ne tourne pas", - "Recursion": "Récursif", - "Skin": "Peau", - "Button": "Bouton", - "Documents": "Document", - "Shader Program": "Programme d'ombrage", - "Export Static Website": "Publier un site web statique", - "Pack Diagram": "Diagramme de paquet", - "SphereShape": "Sphère", - "Cloth": "Tissu", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "La finition de la texture supprime le nombre et le soulignement après le nom, régénère la table de données et le catalogue de texture, supprime le dossier vide et le fichier de texture non référencée. Le système sauvegarde automatiquement la table de données et le catalogue de texture. Est-il organisé?", - "TAA": "Anti-crénelage temporel (TAA)", - "RadiusBottom": "Rayon inférieur", - "PosX": "Axe X positif", - "TubeArc": "Arc long", - "ClearCoat": "La transparence", - "Blur": "Flou", - "The object you selected is not geometry.": "L'objet sélectionné n'a pas de propriété Geometry.", - "Set Position": "Définir l'emplacement", - "Line": "Ligne", - "Front View": "Vue de face", - "SSAA": "Anti-aliasing plein écran (SSAA)", - "PixelEffect": "Effet pixel", - "Normal": "Normal", - "Size": "La taille", - "Listen to dblclick event": "Surveiller l'événement de double clic de la souris", - "Sidebar": "Barre latérale", - "Ao Scale": "Rapport de texture d'occlusion", - "EnableKeys": "Bouton Activer", - "Delete Script": "Supprimer le script", - "Line Chart": "Graphique linéaire", - "AlphaMap": "Texture transparente", - "FrontSide": "Positif", - "Inertia": "Inertie", - "Shadow": "L'ombre", - "Delete layer will delete all the anims on the layer. Are you sure?": "La suppression d'un calque supprime toutes les animations du calque. ", - "Transform Component": "Composante de déplacement", - "CatmullRom curve should have at least 3 points.": "La courbe Catmull Rom devrait avoir au moins trois points!", - "Directional": "Lumière parallèle", - "Light Component": "Assemblage de la source lumineuse", - "MinResolution": "Résolution la plus basse", - "Occlusion&Blur": "", - "Triangle": "Nombre de triangles", - "Listen to mouseup event": "Surveiller la levée de la souris", - "Delete successfully!": "Supprimé avec succès!", - "Execute before scene render": "Exécuter une fois avant que la scène ne soit rendue", - "Line Curve": "Segment de ligne", - "Quadratic Bezier Curve": "Courbe de Bézier quadratique", - "Options Window": "Fenêtre d'option", - "LineDashedMaterial": "Matériel pointillé", - "RotateSpeed": "Vitesse de rotation", - "Loading...": "Chargement ...", - "Velocity": "La vitesse", - "PhiLength": "Longitude de virage", - "Program started.": "Le programme a démarré avec succès.", - "Multiply Blending": "Mélange de produits", - "ClothComponent": "Assemblage de tissu", - "Map": "Texture", - "Closed": "Fermé", - "Bing Map": "Bing Map", - "Script": "Le script", - "FogFar": "Brouillard au loin", - "Ellipse Curve": "Courbe elliptique", - "ScreenSpacePanning": "Coordonnées de l'écran", - "GreyScale": "Échelle de gris", - "Blending": "Mélanger", - "Script name existed.": "Le nom du script est dupliqué!", - "Program stoped.": "Le programme s'est arrêté avec succès.", - "Histogram": "L'histogramme", - "Visible": "La visibilité", - "Rect Area Light": "Lumière rectangulaire", - "Type": "Type", - "Export Scene": "Scène d'exportation", - "Lathe": "Verre à vin", - "Offset": "Décalage", - "Stop": "Arrêter", - "AnimLayer1": "Couche d'animation 1", - "Export Geometry": "Exporter la géométrie", - "GIS Scene": "Scène SIG", - "Repeat": "Répéter", - "Max Volume": "Volume principal", - "Linear": "Linéaire", - "Material Component": "Composant matériel", - "Detail": "Détail", - "Vertical Line": "Ligne verticale", - "SpriteMaterial": "Matériel d'elfe", - "Message": "Message", - "maxAgeSpread": "Longue divergence", - "Export STL": "Exporter le fichier stl", - "Background Image": "Image de fond", - "Glitch Effect": "Effet glitch", - "DefaultCamera": "Caméra par défaut", - "HeightCoef": "Facteur de hauteur", - "EnableState": "État activé", - "Key Value Label": "Étiquette de valeur clé", - "is not available.": "Non disponible.", - "Please click the map in the map panel.": "S'il vous plaît cliquer sur la carte dans le panneau de la carte!", - "Brightness": "La luminosité", - "Terrain": "Terrain", - "Halo": "Halo", - "Circle": "Ronde", - "Furface": "Apparence", - "Set Rotation": "Définir la rotation", - "FogColor": "Couleur de brouillard", - "ThetaStart": "Latitude de départ", - "Additive Blending": "Et mélanger", - "Fog": "Brouillard", - "About": "À propos de", - "ParticleCount": "Nombre de particules", - "Fly Controls": "Contrôleur de vol", - "AfterimageEffect": "Effets d'après image", - "NegZ": "Axe Z négatif", - "Create Script": "Créer un script", - "Rotate": "Faire pivoter", - "Publish Scene": "Scène de sortie", - "Camera Animation": "Animation caméra", - "Material": "Matériel", - "Reflectivity": "Réflectance", - "EnablePan": "Activer le panoramique", - "Decay": "Atténuation", - "Halftone Effect": "Effet demi-teinte", - "EnvMap": "Texture environnementale", - "Assets": "Des ressources", - "SkyColor": "Couleur du ciel", - "Contrast": "Contraste", - "AccelerationSpread": "Divergence d'accélération", - "MMD Model": "Modèle MMD", - "NegY": "Axe Y négatif", - "Export Editor": "Éditeur d'exportation", - "MinDistance": "Distance minimale", - "Clear indexedDB.": "IndexedDB vide.", - "Normal Blending": "Mélange général", - "Mirrored Repeat": "Répétition miroir", - "Traceball Controls": "Contrôleur de trackball", - "New Scene": "Nouvelle scène", - "PCF Shadow": "Ombre PCF", - "Model": "Modèle", - "New": "Nouveau", - "None": "Non", - "Animation": "Animation", - "VerticalMin": "Angle d'élévation minimum", - "Shader Program Info": "Informations sur le programme Shader", - "WildMode": "Mode fou", - "EnableDamping": "Activer l'absorption des chocs", - "Receive": "Recevoir", - "Turbidity": "Turbidité", - "Scatter Plot": "Nuage de points", - "ThetaLength": "Tournez la latitude", - "Character": "Caractère", - "Sepia": "Rétro", - "RotateBlue": "Déviation bleue", - "Polygon": "Visage", - "AutoForward": "Avance automatique", - "PixelSize": "Taille de pixel", - "Clone": "Copie", - "SSAO": "Ombre de lumière ambiante (SSAO)", - "Translate": "Pan", - "Filter Animation": "Filtrer l'animation", - "Background Music": "Musique de fond", - "BlurDepthCutoff": "Partition de profondeur", - "Hemisphere Light": "Lumière hémisphérique", - "HeightSegments": "Segmentation en hauteur", - "Saved into indexDB.": "Enregistrer dans IndexedDB.", - "Listen to keyup event": "Surveiller l'événement de levage du clavier", - "Help": "L'aide", - "FlipY": "Inverser Y", - "Cast": "Générer", - "Saturate": "Saturation", - "Image upload failed!": "Le téléchargement de l'image a échoué!", - "Export STL Binary": "Exporter binaire stl", - "SliceSpacing": "Épaisseur de tranche", - "Set Scene": "Mise en place de la scène", - "MagFilter": "Filtre grossissement", - "Category List": "Liste des catégories", - "Set Material": "Matériel de jeu", - "Time": "Le temps", - "Gamma Input": "Entrée gamma", - "Script saved successfully!": "Le script a été enregistré avec succès!", - "is not existed in the scene.": "N'existe pas dans la scène.", - "MetalnessMap": "Texture en métal", - "Renderer": "Renderer", - "Front Side": "Positif", - "Prefab": "Corps préréglé", - "Create empty scene successfully.": "La scène vide a été créée avec succès!", - "Cluster Diagram": "Diagramme de cluster", - "MinPolarAngle": "Angle d'élévation minimum", - "QuadraticBezier Curve": "Courbe de Bézier quadratique", - "Multiply": "Multiplier", - "Add Script": "Ajouter un script", - "Google Map": "Google Maps", - "Dig": "Creuser", - "ZoomSpeed": "Vitesse de zoom", - "AnimLayer3": "Couche d'animation 3", - "No Type": "Aucun type", - "Date": "Date", - "Scene data of string type is needed.": "Besoin de paramètres de type de scène de type chaîne!", - "Please click material on material panel.": "Cliquez sur le matériau dans le panneau de matériau!", - "PointCloudMaterial": "Matériau du nuage de points", - "MeshNormalMaterial": "Matériau de vecteur normal", - "Save": "Enregistrer", - "Time Disk": "Disque de temps", - "Beauty": "Embellir", - "CollisionConfig": "Configuration de collision", - "Point Light": "Source ponctuelle", - "AnimLayer2": "Couche d'animation 2", - "Edit": "Éditer", - "AlphaTest": "Test alpha", - "MieDirectionalG": " exting direction", - "Back Side": "Négatif", - "Export PLY": "Exporter le fichier ply", - "Square": "Carré", - "Custom Blending": "Mélange personnalisé", - "Light Color": "Couleur claire", - "OpenEnded": "Ouvert aux deux bouts", - "Sky": "Ciel", - "Source": "Code source", - "Format": "Le format", - "Delete this category?": "Voulez-vous supprimer cette catégorie?", - "Panel": "Panneau", - "BlurRadius": "Rayon flou", - "Scene": "Scène", - "Centripetal Force": "Force centripète", - "MeshStandardMaterial": "Matériau standard", - "SAO": "Occlusion ambiante évolutive (SAO)", - "Spot Light": "Spotlight", - "Light": "Source de lumière", - "1 Sample": "1 échantillon", - "Near": "Près du point", - "Roughness": "Rugosité", - "MinFilter": "Réduire le filtrage", - "MeshPhongMaterial": "Le matériel de Feng", - "Texture": "Texture", - "Draw Line": "Tracer une ligne", - "DampingFactor": "Coefficient d'amortissement", - "MeshLambertMaterial": "Matériel Lambert", - "Angle": "Angle", - "All unsaved data will be lost. Are you sure?": "Toutes les données non sauvegardées seront perdues. Voulez-vous vraiment créer une nouvelle scène?", - "Curve Type": "Type de ligne", - "Segments": "La segmentation", - "Multi Modify": "Changements multiples", - "Remove Point": "Point de retrait", - "NoZoom": "Pas mise à l'échelle", - "Cube texture has already been uploaded.": "Les textures stéréo existent déjà du côté serveur et il n'est pas nécessaire de les télécharger plusieurs fois.", - "Set Geometry": "Définir la géométrie", - "Pressure": "La pression", - "No Name": "Sans nom", - "No Blending": "Non mélangé", - "Redo": "Refaire", - "Volume": "Lecture en boucle" -} \ No newline at end of file + "Please open scene first.": "S'il vous plaît ouvrir la scène en premier!", + "Solid Color": "Couleur unie", + "PanSpeed": "Vitesse de traduction", + "Encoding": "Codage", + "Execute after program stopped": "Exécuter une fois après la fin du programme", + "Group": "Groupe", + "Please save scene first.": "S'il vous plaît enregistrer la scène en premier!", + "Sphere": "Sphère", + "RadiusTop": "Rayon supérieur", + "BumpMap": "Texture bosse", + "Far": "Au loin", + "KeyPanSpeed": "Bouton vitesse", + "WireWidth": "Épaisseur de filaire", + "ConstrainVertical": "Limiter l'angle d'élévation", + "Transparent": "Transparent", + "AoMap": "Texture d'occlusion", + "Cylinder": "Cylindre", + "Clamp To Edge": "Étirement", + "Settings": "Réglage", + "Add physics cloth successfully": "Ajouter un vêtement physique avec succès!", + "Bump Scale": "Ratio de texture en relief", + "Position": "Emplacement", + "BlendingMode": "Mode mixte", + "VelocitySpread": "Divergence de vitesse", + "Play Fullscreen": "Lecture plein écran", + "Mass": "La qualité", + "CameraBottom": "Sous la caméra", + "EnableZoom": "Activer le zoom", + "SMAA": "Anti-aliasing multi-échantillons (SMAA)", + "Undo": "Annuler", + "Lighter": "Éclaircir", + "ClipBias": "Décalage des cultures", + "Geometry": "La géométrie", + "Total {{totalPage}} Pages": "Total {{totalPage}} page", + "Basic Info": "Informations de base", + "Remove Object": "Supprimer l'objet", + "Rotate(E)": "Rotation (e)", + "NoPan": "Pas panoramique", + "Occlusion": "Occlusion", + "Level": "Grade", + "RotateGreen": "Déviation verte", + "Aperture": "Ouverture", + "Listen to resize event": "Surveiller l'événement de changement de taille d'écran", + "Set Geometry.": "Définissez la géométrie.", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "Le tri du modèle supprimera le nombre et le soulignement après le nom, régénérera la table de données, le catalogue de modèles, supprimera les dossiers vides et les fichiers de modèle non référencés, le système sauvegardera automatiquement la table de données, le catalogue de modèles, si le tri est nécessaire?", + "AudioListener": "Auditeur audio", + "Luminance": "La luminosité", + "HeightSpeed": "Hauteur de la vitesse", + "Mapping": "Cartographie", + "Image upload successfully!": "L'image a été téléchargée avec succès!", + "Box": "Cube", + "Please enter material name": "Veuillez entrer un nom de matériau", + "Are you sure to export the current scene?": "Voulez-vous exporter la scène actuelle?", + "PhysicsType": "Type physique", + "Substractive Blending": "Mauvais mélange", + "Preview": "Aperçu", + "Reduce Terrain": "Réduire le terrain", + "Geometry Component": "Composant géométrique", + "MaxPolarAngle": "Angle d'élévation maximum", + "material has no coordinates.": "Le matériau n'a pas de coordonnées de texture!", + "RepeatNum": "Nombre de remplissages", + "Please select object!": "Veuillez sélectionner un objet!", + "Category Add": "Addition de catégorie", + "LMesh Component": "Composant LMesh", + "Blinn": "Brin", + "Listen to mousedown event": "Surveiller l'événement de clic de souris", + "Save Scene": "Sauver la scène", + "Vertex Shader": "Vertex shader", + "Gamma Factor": "Facteur gamma", + "MinAzimuthAngle": "Orientation minimale", + "MieCofficient": " off coefficient", + "Emissive": "Illuminer", + "Smoke": "Fumée", + "Basic Shadow": "Ombre de base", + "32 Samples": "32 échantillons", + "PosY": "Axe Y positif", + "RigidBody": "Corps rigide", + "Torus": "Pneu", + "Play New Window": "Nouvelle lecture de la fenêtre", + "Vertex": "Nombre de sommets", + "Name": "Nom", + "Export GLTF": "Exporter un fichier gltf", + "Grayscale": "Niveaux de gris", + "Side View": "Vue de côté", + "Undo/Redo history will be cleared. Are you sure?": "L'historique annuler / rétablir sera effacé. ", + "Sone Words": "Du texte", + "Water Component": "Composant de l'eau", + "Execute each frame during running": "Chaque image doit être exécutée pendant l'exécution du programme.", + "Top View": "Vue de dessus", + "DistortedArc": "Courbure déformée", + "MovementSpeed": "Vitesse de déplacement", + "BeginTime": "Heure de début", + "Particle Animation": "Animation de particules", + "Listen to click event": "Écouter les événements de clic de souris", + "Amount": "Montant", + "BackgroundColor": "Couleur de fond", + "BlurStdDev": "Écart type", + "FogDensity": "Concentration de brouillard", + "Acceleration": "L'accélération", + "Scale Locked": "Verrouiller le zoom", + "Please select MMD animation only.": "Seules les animations de modèle MMD sont autorisées!", + "Displace Scale": "Ratio de texture de déplacement", + "Radius": "Rayon", + "Error": "Erreur", + "CatmullRom Curve": "courbe Catmull Rom ", + "PosZ": "Axe Z positif", + "ShaderMaterial": "Matériau de shader", + "PremultiplyAlpha": "Laissé par transparent", + "MeshBasicMaterial": "Matériel de base", + "Custom Status": "Personnalisé", + "Grid": "Grille", + "Invert": "Inversion de couleur", + "CameraRight": "Caméra droite", + "DragToLook": "Faites glisser pour voir", + "Object": "Nombre d'objets", + "Pie Chart": "Camembert", + "Clear Logs": "Vider le journal", + "Play Audio": "Jouer de la musique", + "Label": "Étiquette", + "Fire Component": "Assemblage de flamme", + "Create": "Ajouter", + "Wireframe": "Fil de fer", + "TimeSpan": "Durée", + "Enable": "Activer", + "AutoRotate": "Rotation automatique", + "Cannot deserialize scene data.": "Impossible d'analyser les données de la scène!", + "Tube": "Segment de tuyau", + "Lid": "Couvercle du pot", + "Point": "Point", + "Bar Chart": "Diagramme à barres", + "Body": "Corps", + "Set Scale": "Définir le zoom", + "Arrange Thumbnail": "Organiser les vignettes", + "MaxAzimuthAngle": "Orientation maximale", + "ActiveLock": "Activer attendre et voir", + "MetalNess": "Métalité", + "Publish website": "Site de publication", + "Penumbra": "Demi ombre", + "Illustrate: Double-click the area below the timeline to add an animation.": "Description: double-cliquez sur la zone située sous la timeline pour ajouter une animation.", + "Lisense": "Autorisation", + "Listen to mousemove event": "Surveiller les mouvements de souris", + "MaxBlur": "Flou maximum", + "Shadow Component": "Composant ombré", + "Double Side": "Double face", + "Add Point": "Ajouter un point", + "LookVertical": "Lève les yeux", + "CubicBezier Curve": "Courbe de Bézier cubique", + "History": "Histoire", + "Empty Scene": "Scène vide", + "Author": "Auteur", + "TextureSize": "Taille de la texture", + "MeshPhysicalMaterial": "Matériel physique", + "CameraNear": "Caméra près", + "Please select texture first.": "Veuillez d'abord sélectionner la texture pour cet objet!", + "Gravity": "Gravité", + "ParticleEmitter": "Émetteur de particules", + "PositionSpread": "Divergence de localisation", + "CameraFar": "Caméra loin", + "MaxDistance": "Distance maximale", + "Options": "Option", + "Shape": "Forme", + "Teapot": "Théière", + "HeightMax": "Hauteur maximale", + "Add": "Ajouter ensemble", + "PhiStart": "Longitude de départ", + "FitLid": "Convient pour le couvercle", + "Disable": "Désactiver", + "DepthSegments": "Segmentation profonde", + "Gamma Output": "Sortie gamma", + "RadialSegments": "Segmentation radiale", + "RawShaderMaterial": "Matériau de shader brut", + "Logs": "Journal", + "RGB Shift Effect": "Effet de changement de couleur", + "Hierachy": "Scène", + "2 Samples": "2 échantillons", + "Shininess": "La luminosité", + "Audio": "Audio", + "Helpers": "Assistant", + "Fragment": "Source", + "CameraLeft": "Caméra à gauche", + "Loop": "Lecture en boucle", + "Icosahedron": "Icosaèdre", + "FogNear": "Brouillard près du point", + "Depth": "Profondeur", + "PCF Soft Shadow": "Ombre douce PCF", + "Shader cannot be parsed.": "Les informations sur les shader ne peuvent pas être désérialisées.", + "Category": "Catégorie", + "Category Edit": "Édition de catégorie", + "FXAA Component": "Anti-aliasing à approximation rapide (FXAA)", + "BackSide": "Retour", + "RotateRed": "Déviation rouge", + "Animation Object": "Objet en mouvement", + "Side": "Exclure", + "IsLocked": "Si verrouiller", + "Directional Light": "Lumière parallèle", + "has no physics helper.": "Il n'y a pas d'aide de forme physique correspondante.", + "EndStatus": "État final", + "Shader Terrain": "Shader Terrain", + "Please input": "S'il vous plaît entrer", + "Remove Script": "Supprimer le script", + "Target": "Objectif", + "Flat Shading": "Lissage", + "Data Source Manage": "Gestion des sources de données", + "Cannot set texture": "Impossible de définir la texture,", + "Property": "Attribut", + "Move Object": "Objet en mouvement", + "Scale(R)": "Zoom (R)", + "Texture Settings": "Réglage de la texture", + "8 Samples": "8 échantillons", + "Enabled": "Activer", + "Arc": "Radian", + "OK": "Déterminer", + "New Material": "Nouveau matériel", + "Form Panel": "Formulaire", + "Export OBJ": "Exporter un fichier obj", + "4 Samples": "4 échantillons", + "Arrange Mesh": "Organiser le modèle", + "AutoRotateSpeed": "Vitesse de rotation", + "WrapT": "Remplissage vertical", + "Tension": "La tension", + "Unbiased": "Pas de déviation", + "Output": "Sortie", + "Model Animation": "Animation de modèle", + "GIS Component": "Composante SIG", + "Text": "Texte", + "SmokeComponent": "Composant de fumée", + "Globe": "La terre", + "Ellipse": "Ellipse", + "No Colors": "Pas de couleur", + "Please select category.": "Veuillez sélectionner une catégorie!", + "Particle": "Particule", + "Collapse": "Pliant", + "Focus": "Longueur focale", + "DotScreenEffect": "Effet de réseau", + "UnpackAlignment": "Décompresser l'alignement", + "Camera": "Appareil photo", + "NegX": "Axe X négatif", + "ShaderInfo": "Informations sur le shader", + "Fov": "Champ de vision", + "Arrange Map": "Carte de finition", + "MaxAge": "Durée", + "Search Content": "Rechercher du contenu", + "SoftVolume": "Corps mou", + "Add Object": "Ajouter des objets:", + "Opacity": "L'opacité", + "Physics Cloth": "Ajouter un vêtement physique", + "TubelarSegments": "Segment tubulaire", + "GroundColor": "Couleur de fond", + "Color": "Couleur", + "KernalRadius": "Rayon de base", + "You should select Cube Texture.": "Autoriser uniquement les cartes stéréo!", + "Scale": "Zoom", + "Theme": "Thème", + "Width": "Largeur", + "Frag Shader": "Source shader", + "EmissiveMap": "Texture rougeoyante", + "Please select a record.": "Veuillez sélectionner des données", + "Upload": "Upload", + "Upload failed.": "Le téléchargement a échoué!", + "AnimLayer": "Couche d'animation", + "Quality": "La qualité", + "Background": "Le fond", + "ClearCoatRoughness": "Rugosité transparente", + "Vertex Colors": "Couleur vertex", + "Decal": "Applique", + "Perspective View": "Perspective", + "Load Successfully!": "Chargement réussi!", + "ThrowBall": "Lancer une petite balle", + "Are you sure to publish all scenes and assets?": "Publiez-vous tous les scénarios et les ressources en tant que sites Web statiques?", + "Skeletal Animation": "Animation squelettique", + "SizeSpread": "Divergence dimensionnelle", + "Waiting...": "S'il vous plaît attendez ...", + "Rayleigh": "Rayleigh", + "Plane": "Avion", + "PhysicsEnvironment": "Environnement physique", + "Cancel": "Annuler", + "EndTime": "Heure de fin", + "Draw Point": "Dessiner un point", + "Auto Play": "Jeu automatique", + "Translate(W)": "Pan (W)", + "Fire": "Flamme", + "Chord": "Chaîne", + "Torus Knot": "Kink", + "Darker": "Assombrir", + "Please select MMD audio.": "Veuillez cliquer sur l'audio correspondant à l'animation MMD!", + "Export Object": "Exporter un objet", + "StaticMoving": "Mouvement statique", + "Set Script": "Paramétrage du script", + "HeightMin": "Hauteur minimale", + "Spray": "Jet", + "Please click the map in the Map Panel.": "S'il vous plaît cliquer sur la carte stéréo dans le panneau de texture!", + "Save As": "Enregistrer sous", + "Delete": "Supprimer", + "Orbit Controls": "Contrôleur de piste", + "Force Directed Graph": "Carte orientée force", + "Perlin Terrain": "Terrain berlinois", + "Plant Trees": "Lot de plantation d'arbres", + "SceneComponent": "Composant de scène", + "Sprite": "Elfe", + "HueRotate": "Teinte", + "Face Colors": "Visage couleur", + "Scatter": "Disperser", + "Tree Diagram": "Diagramme d'arbre", + "Set": "Réglage", + "Please select camera animation only.": "Seules les animations de caméra MMD sont autorisées!", + "Scene Controller": "Contrôleur de scène", + "GenerateMipmaps": "Niveau ouvert", + "Anisotropy": "Anisotropie", + "Clear": "Vide", + "BeginStatus": "Etat de départ", + "Ambient": "Lumière ambiante", + "Cube Texture fetch failed.": "L'acquisition de texture stéréo a échoué!", + "Dark Color": "Sombre", + "MeshDepthMaterial": "Matériau de profondeur", + "Component": "Composant", + "Please click the audio in the Audio Panel.": "S'il vous plaît cliquer sur l'audio dans le panneau audio!", + "Please click the animation in the animation panel.": "S'il vous plaît cliquer sur l'animation dans le panneau d'animation!", + "Filter": "Filtrer", + "Rotate Center": "Centre de rotation", + "LookSpeed": "Regarder la vitesse", + "Are you sure to export the editor?": "Voulez-vous exporter l'éditeur?", + "Specular": "Degré de miroir", + "Camera Component": "Composant de la caméra", + "Exponential": "Exponentielle", + "Update UUID": "Mettre à jour l'UUID", + "Reflector Component": "Composant réfléchissant", + "DefaultCollisionConfig": "Configuration de collision par défaut", + "Tianditu Map": "Carte du jour", + "Edit Script": "Editer le script", + "DisplacementMap": "Texture de déplacement", + "Examples": "Exemple", + "Listen to mousewheel event": "Surveiller les événements de la molette de la souris", + "Horizontal Line": "Ligne horizontale", + "Pointer Lock Controls": "Contrôleur de verrouillage de pointeur", + "Height": "Hauteur", + "Distance": "Distance", + "Visual": "Visualisation", + "RoughnessMap": "Texture rugueuse", + "Partition Diagram": "Carte de partition", + "Current Status": "État actuel", + "Information": "Les informations", + "CameraTop": "Sur la caméra", + "Please check the layer.": "Veuillez cocher la couche que vous souhaitez supprimer!", + "Beauty&Occlusion": "", + "Ambient Light": "Lumière ambiante", + "2D": "En deux dimensions", + "SoftBodyRigidBodyCollisionConfig": "Configuration de collision de corps mou", + "No Image": "Pas d'image", + "Record": "Enregistrement", + "Language": "Langue", + "Please select camera animation.": "Seules les animations de caméra MMD sont autorisées!", + "Select": "Choisir", + "Intensity": "Intensité", + "SpecularMap": "Texture miroir", + "MapSize": "Taille de la texture", + "Clear History": "Effacer l'historique", + "WrapS": "Remplissage latéral", + "Bottom": "En bas", + "Cube Texture": "Carte stéréo", + "LightMap": "Texture légère", + "Damp": "Amortissement", + "LineBasicMaterial": "Matériau de trait", + "Bokeh Effect": "Effet de flou de fond", + "Not Set": "Non défini", + "Tool": "Outil", + "Query": "Enquête", + "Thumbnail": "Thumbnail", + "Save Successfully.": "Enregistré avec succès.", + "WidthSegments": "Segmentation en largeur", + "16 Samples": "16 échantillons", + "BoxShape": "Cube", + "Draw Pologon": "Photo", + "Bias": "Déviation", + "Skeleton": "Os", + "New Script": "Nouveau script", + "Dragging animation on other animation is not allowed.": "Faire glisser une animation vers d'autres animations n'est pas autorisé.", + "EnableRotate": "Activer la rotation", + "Basic Information": "Informations de base", + "Default": "Par défaut", + "Play": "Jouer", + "Reflect": "Réfléchissant", + "Vertex Color": "Couleur vertex", + "First Person Controls": "Premier contrôleur de vue", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "L'organisation des vignettes régénérera le répertoire des vignettes, modifiera la scène, le modèle, la texture, les matériaux, l'audio, les animations, les particules, le corps des préréglages et le chemin des vignettes des personnages. Sauvegardez d'abord la base de données manuellement.", + "Listen to keydown event": "Surveiller l'événement de presse au clavier", + "Exporting...": "Exporter ...", + "Ease Func": "Fonction d'interpolation", + "Disabled": "Désactiver", + "NormalMap": "Texture normale", + "Tween Animation": "Animation entre deux", + "Spline": "Courbe", + "Chord Graph": "Diagramme d'accord", + "Raise Terrain": "Soulever le terrain", + "Close": "Fermer", + "Please upload all the textures before save.": "Veuillez télécharger toutes les cartes stéréo et cliquez sur Enregistrer!", + "Debug Mode": "Mode débogage", + "Execute after scene render": "Exécuter une fois après le rendu de la scène", + "Confirm": "Confirmer", + "VerticalMax": "Angle d'élévation maximum", + "Gauge": "Instrument", + "Water": "De l'eau", + "NoRotate": "Ne tourne pas", + "Recursion": "Récursif", + "Skin": "Peau", + "Button": "Bouton", + "Documents": "Document", + "Shader Program": "Programme d'ombrage", + "Export Static Website": "Publier un site web statique", + "Pack Diagram": "Diagramme de paquet", + "SphereShape": "Sphère", + "Cloth": "Tissu", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "La finition de la texture supprime le nombre et le soulignement après le nom, régénère la table de données et le catalogue de texture, supprime le dossier vide et le fichier de texture non référencée. Le système sauvegarde automatiquement la table de données et le catalogue de texture. Est-il organisé?", + "TAA": "Anti-crénelage temporel (TAA)", + "RadiusBottom": "Rayon inférieur", + "PosX": "Axe X positif", + "TubeArc": "Arc long", + "ClearCoat": "La transparence", + "Blur": "Flou", + "The object you selected is not geometry.": "L'objet sélectionné n'a pas de propriété Geometry.", + "Set Position": "Définir l'emplacement", + "Line": "Ligne", + "Front View": "Vue de face", + "SSAA": "Anti-aliasing plein écran (SSAA)", + "PixelEffect": "Effet pixel", + "Normal": "Normal", + "Size": "La taille", + "Listen to dblclick event": "Surveiller l'événement de double clic de la souris", + "Sidebar": "Barre latérale", + "Ao Scale": "Rapport de texture d'occlusion", + "EnableKeys": "Bouton Activer", + "Delete Script": "Supprimer le script", + "Line Chart": "Graphique linéaire", + "AlphaMap": "Texture transparente", + "FrontSide": "Positif", + "Inertia": "Inertie", + "Shadow": "L'ombre", + "Delete layer will delete all the anims on the layer. Are you sure?": "La suppression d'un calque supprime toutes les animations du calque. ", + "Transform Component": "Composante de déplacement", + "CatmullRom curve should have at least 3 points.": "La courbe Catmull Rom devrait avoir au moins trois points!", + "Directional": "Lumière parallèle", + "Light Component": "Assemblage de la source lumineuse", + "MinResolution": "Résolution la plus basse", + "Occlusion&Blur": "", + "Triangle": "Nombre de triangles", + "Listen to mouseup event": "Surveiller la levée de la souris", + "Delete successfully!": "Supprimé avec succès!", + "Execute before scene render": "Exécuter une fois avant que la scène ne soit rendue", + "Line Curve": "Segment de ligne", + "Quadratic Bezier Curve": "Courbe de Bézier quadratique", + "Options Window": "Fenêtre d'option", + "LineDashedMaterial": "Matériel pointillé", + "RotateSpeed": "Vitesse de rotation", + "Loading...": "Chargement ...", + "Velocity": "La vitesse", + "PhiLength": "Longitude de virage", + "Program started.": "Le programme a démarré avec succès.", + "Multiply Blending": "Mélange de produits", + "ClothComponent": "Assemblage de tissu", + "Map": "Texture", + "Closed": "Fermé", + "Bing Map": "Bing Map", + "Script": "Le script", + "FogFar": "Brouillard au loin", + "Ellipse Curve": "Courbe elliptique", + "ScreenSpacePanning": "Coordonnées de l'écran", + "GreyScale": "Échelle de gris", + "Blending": "Mélanger", + "Script name existed.": "Le nom du script est dupliqué!", + "Program stoped.": "Le programme s'est arrêté avec succès.", + "Histogram": "L'histogramme", + "Visible": "La visibilité", + "Rect Area Light": "Lumière rectangulaire", + "Type": "Type", + "Export Scene": "Scène d'exportation", + "Lathe": "Verre à vin", + "Offset": "Décalage", + "Stop": "Arrêter", + "AnimLayer1": "Couche d'animation 1", + "Export Geometry": "Exporter la géométrie", + "GIS Scene": "Scène SIG", + "Repeat": "Répéter", + "Max Volume": "Volume principal", + "Linear": "Linéaire", + "Material Component": "Composant matériel", + "Detail": "Détail", + "Vertical Line": "Ligne verticale", + "SpriteMaterial": "Matériel d'elfe", + "Message": "Message", + "maxAgeSpread": "Longue divergence", + "Export STL": "Exporter le fichier stl", + "Background Image": "Image de fond", + "Glitch Effect": "Effet glitch", + "DefaultCamera": "Caméra par défaut", + "HeightCoef": "Facteur de hauteur", + "EnableState": "État activé", + "Key Value Label": "Étiquette de valeur clé", + "is not available.": "Non disponible.", + "Please click the map in the map panel.": "S'il vous plaît cliquer sur la carte dans le panneau de la carte!", + "Brightness": "La luminosité", + "Terrain": "Terrain", + "Halo": "Halo", + "Circle": "Ronde", + "Furface": "Apparence", + "Set Rotation": "Définir la rotation", + "FogColor": "Couleur de brouillard", + "ThetaStart": "Latitude de départ", + "Additive Blending": "Et mélanger", + "Fog": "Brouillard", + "About": "À propos de", + "ParticleCount": "Nombre de particules", + "Fly Controls": "Contrôleur de vol", + "AfterimageEffect": "Effets d'après image", + "NegZ": "Axe Z négatif", + "Create Script": "Créer un script", + "Rotate": "Faire pivoter", + "Publish Scene": "Scène de sortie", + "Camera Animation": "Animation caméra", + "Material": "Matériel", + "Reflectivity": "Réflectance", + "EnablePan": "Activer le panoramique", + "Decay": "Atténuation", + "Halftone Effect": "Effet demi-teinte", + "EnvMap": "Texture environnementale", + "Assets": "Des ressources", + "SkyColor": "Couleur du ciel", + "Contrast": "Contraste", + "AccelerationSpread": "Divergence d'accélération", + "MMD Model": "Modèle MMD", + "NegY": "Axe Y négatif", + "Export Editor": "Éditeur d'exportation", + "MinDistance": "Distance minimale", + "Clear indexedDB.": "IndexedDB vide.", + "Normal Blending": "Mélange général", + "Mirrored Repeat": "Répétition miroir", + "Traceball Controls": "Contrôleur de trackball", + "New Scene": "Nouvelle scène", + "PCF Shadow": "Ombre PCF", + "Model": "Modèle", + "New": "Nouveau", + "None": "Non", + "Animation": "Animation", + "VerticalMin": "Angle d'élévation minimum", + "Shader Program Info": "Informations sur le programme Shader", + "WildMode": "Mode fou", + "EnableDamping": "Activer l'absorption des chocs", + "Receive": "Recevoir", + "Turbidity": "Turbidité", + "Scatter Plot": "Nuage de points", + "ThetaLength": "Tournez la latitude", + "Character": "Caractère", + "Sepia": "Rétro", + "RotateBlue": "Déviation bleue", + "Polygon": "Visage", + "AutoForward": "Avance automatique", + "PixelSize": "Taille de pixel", + "Clone": "Copie", + "SSAO": "Ombre de lumière ambiante (SSAO)", + "Translate": "Pan", + "Filter Animation": "Filtrer l'animation", + "Background Music": "Musique de fond", + "BlurDepthCutoff": "Partition de profondeur", + "Hemisphere Light": "Lumière hémisphérique", + "HeightSegments": "Segmentation en hauteur", + "Saved into indexDB.": "Enregistrer dans IndexedDB.", + "Listen to keyup event": "Surveiller l'événement de levage du clavier", + "Help": "L'aide", + "FlipY": "Inverser Y", + "Cast": "Générer", + "Saturate": "Saturation", + "Image upload failed!": "Le téléchargement de l'image a échoué!", + "Export STL Binary": "Exporter binaire stl", + "SliceSpacing": "Épaisseur de tranche", + "Set Scene": "Mise en place de la scène", + "MagFilter": "Filtre grossissement", + "Category List": "Liste des catégories", + "Set Material": "Matériel de jeu", + "Time": "Le temps", + "Gamma Input": "Entrée gamma", + "Script saved successfully!": "Le script a été enregistré avec succès!", + "is not existed in the scene.": "N'existe pas dans la scène.", + "MetalnessMap": "Texture en métal", + "Renderer": "Renderer", + "Front Side": "Positif", + "Prefab": "Corps préréglé", + "Create empty scene successfully.": "La scène vide a été créée avec succès!", + "Cluster Diagram": "Diagramme de cluster", + "MinPolarAngle": "Angle d'élévation minimum", + "QuadraticBezier Curve": "Courbe de Bézier quadratique", + "Multiply": "Multiplier", + "Add Script": "Ajouter un script", + "Google Map": "Google Maps", + "Dig": "Creuser", + "ZoomSpeed": "Vitesse de zoom", + "AnimLayer3": "Couche d'animation 3", + "No Type": "Aucun type", + "Date": "Date", + "Scene data of string type is needed.": "Besoin de paramètres de type de scène de type chaîne!", + "Please click material on material panel.": "Cliquez sur le matériau dans le panneau de matériau!", + "PointCloudMaterial": "Matériau du nuage de points", + "MeshNormalMaterial": "Matériau de vecteur normal", + "Save": "Enregistrer", + "Time Disk": "Disque de temps", + "Beauty": "Embellir", + "CollisionConfig": "Configuration de collision", + "Point Light": "Source ponctuelle", + "AnimLayer2": "Couche d'animation 2", + "Edit": "Éditer", + "AlphaTest": "Test alpha", + "MieDirectionalG": " exting direction", + "Back Side": "Négatif", + "Export PLY": "Exporter le fichier ply", + "Square": "Carré", + "Custom Blending": "Mélange personnalisé", + "Light Color": "Couleur claire", + "OpenEnded": "Ouvert aux deux bouts", + "Sky": "Ciel", + "Source": "Code source", + "Format": "Le format", + "Delete this category?": "Voulez-vous supprimer cette catégorie?", + "Panel": "Panneau", + "BlurRadius": "Rayon flou", + "Scene": "Scène", + "Centripetal Force": "Force centripète", + "MeshStandardMaterial": "Matériau standard", + "SAO": "Occlusion ambiante évolutive (SAO)", + "Spot Light": "Spotlight", + "Light": "Source de lumière", + "1 Sample": "1 échantillon", + "Near": "Près du point", + "Roughness": "Rugosité", + "MinFilter": "Réduire le filtrage", + "MeshPhongMaterial": "Le matériel de Feng", + "Texture": "Texture", + "Draw Line": "Tracer une ligne", + "DampingFactor": "Coefficient d'amortissement", + "MeshLambertMaterial": "Matériel Lambert", + "Angle": "Angle", + "All unsaved data will be lost. Are you sure?": "Toutes les données non sauvegardées seront perdues. Voulez-vous vraiment créer une nouvelle scène?", + "Curve Type": "Type de ligne", + "Segments": "La segmentation", + "Multi Modify": "Changements multiples", + "Remove Point": "Point de retrait", + "NoZoom": "Pas mise à l'échelle", + "Cube texture has already been uploaded.": "Les textures stéréo existent déjà du côté serveur et il n'est pas nécessaire de les télécharger plusieurs fois.", + "Set Geometry": "Définir la géométrie", + "Pressure": "La pression", + "No Name": "Iimt_Digital_Twin", + "No Blending": "Non mélangé", + "Redo": "Refaire", + "Volume": "Lecture en boucle", + "Configure Animation": "Configurer l'animation", + "Please select the animation target": "Veuillez sélectionner une cible d'animation", + "Are you sure you want to delete this animation?": "Êtes - vous sûr de supprimer cette animation?", + "Animation added successfully": "Êtes - vous sûr de supprimer cette animation?", + "Animation modification successful": "Modification de l'animation réussie", + "The maximum animation duration is 1 hour": "Durée maximale de l'animation 1 heure" +} diff --git a/web/locales/ja-JP.json b/web/locales/ja-JP.json index b945d01e68a781fae1d4e4a94521b7c9b057081e..0752fd54f6266a558980b4dbd71055259ba2fd23 100644 --- a/web/locales/ja-JP.json +++ b/web/locales/ja-JP.json @@ -1,644 +1,650 @@ { - "Acceleration": "加速", - "FrontSide": "ポジティブ", - "Raise Terrain": "地形を上げる", - "Clamp To Edge": "ストレッチ", - "Add Object": "オブジェクトを追加します。", - "Wireframe": "ワイヤーフレーム", - "Add": "一緒に追加", - "AnimLayer3": "アニメーションレイヤー3", - "Background Music": "バックグラウンドミュージック", - "Beauty&Occlusion": "", - "Rotate Center": "回転中心", - "Exponential": "指数関数", - "DisplacementMap": "変位テクスチャ", - "Water": "水", - "Listen to keydown event": "キーボードプレスイベントを監視する", - "Background": "背景", - "Save Successfully.": "正常に保存されました。", - "Gamma Factor": "ガンマ係数", - "4 Samples": "4サンプル", - "Near": "ニアポイント", - "Exporting...": "エクスポートしています...", - "Material Component": "材料成分", - "SphereShape": "球体", - "QuadraticBezier Curve": "二次ベジェ曲線", - "Listen to resize event": "画面サイズ変更イベントを監視する", - "Message": "メッセージ", - "Date": "日付", - "Data Source Manage": "データソース管理", - "ClearCoat": "透明性", - "Listen to mousewheel event": "マウスホイールイベントを監視する", - "EnableZoom": "ズームを有効にする", - "Tension": "テンション", - "KeyPanSpeed": "ボタン速度", - "Ao Scale": "オクルージョンテクスチャ比", - "Name": "お名前", - "DotScreenEffect": "格子効果", - "CameraFar": "カメラファー", - "MovementSpeed": "移動速度", - "Pack Diagram": "パッケージ図", - "New": "新しい", - "Scene Controller": "シーンコントローラー", - "material has no coordinates.": "マテリアルにはテクスチャ座標がありません!", - "Force Directed Graph": "フォース指向マップ", - "Saturate": "彩度", - "Image upload successfully!": "画像が正常にアップロードされました!", - "NoZoom": "スケーリングしない", - "Please select category.": "カテゴリーを選択してください!", - "PosX": "X軸正", - "PositionSpread": "ロケーションの相違", - "RGB Shift Effect": "カラーシフト効果", - "Remove Object": "オブジェクトを削除", - "TubeArc": "長いアーク", - "Illustrate: Double-click the area below the timeline to add an animation.": "説明:タイムラインの下の領域をダブルクリックして、アニメーションを追加します。", - "Polygon": "顔", - "CameraLeft": "左カメラ", - "Vertex Shader": "頂点シェーダー", - "TubelarSegments": "管状セグメント", - "Logs": "ログ", - "HeightSpeed": "高さ速度", - "Execute each frame during running": "すべてのフレームは、プログラムの実行中に実行する必要があります。", - "Cloth": "布地", - "CubicBezier Curve": "立方ベジェ曲線", - "Clear indexedDB.": "空のIndexedDB。", - "is not available.": "利用できません。", - "ConstrainVertical": "仰角を制限", - "Custom Status": "カスタム", - "Pie Chart": "円グラフ", - "Quality": "品質", - "Execute after program stopped": "プログラムの実行が完了した後に1回実行する", - "PhysicsEnvironment": "物理的環境", - "FitLid": "ふたに適しています", - "AfterimageEffect": "残像効果", - "Delete successfully!": "削除しました!", - "RotateRed": "赤いたわみ", - "Please click the audio in the Audio Panel.": "オーディオパネルのオーディオをクリックしてください!", - "Color": "色", - "Custom Blending": "カスタムブレンド", - "IsLocked": "ロックするかどうか", - "Create Script": "スクリプトを作成", - "Opacity": "不透明度", - "Side": "除外する", - "Spray": "ジェット機", - "RoughnessMap": "大まかなテクスチャ", - "MinAzimuthAngle": "最小オリエンテーション", - "Turbidity": "濁度", - "DefaultCamera": "デフォルトのカメラ", - "MagFilter": "拡大フィルター", - "Disabled": "無効にする", - "Please click the map in the Map Panel.": "テクスチャパネルのステレオマップをクリックしてください!", - "New Script": "新しいスクリプト", - "PanSpeed": "翻訳速度", - "Aperture": "絞り", - "Options Window": "オプションウィンドウ", - "Rayleigh": "レイリー", - "Save Scene": "シーンを保存する", - "Shadow": "影", - "Basic Shadow": "基本的な影", - "Perspective View": "遠近法", - "ShaderInfo": "シェーダー情報", - "Rotate": "回転", - "Category Edit": "カテゴリー編集", - "Level": "グレード", - "SpecularMap": "鏡のテクスチャ", - "OpenEnded": "両端が開いています", - "Directional": "平行光", - "Arrange Mesh": "モデルを整理する", - "Shape": "形", - "Halo": "ハロー", - "Cylinder": "シリンダー", - "Multiply": "掛ける", - "Additive Blending": "そして混合", - "LookSpeed": "時計の速度", - "ParticleEmitter": "パーティクルエミッター", - "Texture Settings": "テクスチャ設定", - "EnableState": "有効状態", - "Source": "ソースコード", - "SmokeComponent": "煙成分", - "Map": "テクスチャー", - "ParticleCount": "粒子の数", - "Depth": "深さ", - "Visual": "可視化", - "Not Set": "設定されていません", - "New Scene": "新しいシーン", - "WildMode": "クレイジーモード", - "Brightness": "明るさ", - "PremultiplyAlpha": "透明のまま", - "HeightCoef": "高さ係数", - "PosY": "Y軸正", - "Undo": "キャンセルする", - "Skeleton": "骨", - "Edit Script": "スクリプトを編集", - "Add Point": "ポイントを追加", - "Darker": "暗くする", - "Mapping": "マッピング", - "Transform Component": "変位コンポーネント", - "Listen to mouseup event": "マウス発生イベントを監視する", - "MMD Model": "MMDモデル", - "Hierachy": "シーン", - "SkyColor": "空の色", - "Loop": "ループプレイ", - "SpriteMaterial": "エルフ素材", - "Vertex Color": "頂点の色", - "Please click the animation in the animation panel.": "アニメーションパネルでアニメーションをクリックしてください!", - "Play New Window": "新しいウィンドウプレイ", - "Particle": "粒子", - "Substractive Blending": "悪いミックス", - "Unbiased": "偏差なし", - "Occlusion": "オクルージョン", - "Object": "オブジェクトの数", - "GIS Scene": "GISシーン", - "RotateBlue": "青いたわみ", - "Script saved successfully!": "スクリプトは正常に保存されました!", - "Category List": "カテゴリーリスト", - "Redo": "やり直し", - "KernalRadius": "コア半径", - "RotateGreen": "緑のたわみ", - "Furface": "外観", - "Multiply Blending": "製品ミックス", - "8 Samples": "8サンプル", - "Execute after scene render": "シーンがレンダリングされた後に一度実行する", - "Please open scene first.": "最初にシーンを開いてください!", - "Category": "カテゴリー", - "Line Curve": "線分", - "EnvMap": "環境テクスチャ", - "GIS Component": "GISコンポーネント", - "RawShaderMaterial": "シェーダー素材", - "AnimLayer2": "アニメーションレイヤー2", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "サムネイルを整理すると、サムネイルディレクトリが再生成され、シーン、モデル、テクスチャ、マテリアル、オーディオ、アニメーション、パーティクル、プリセットボディ、キャラクターのサムネイルパスが変更されます。最初にデータベースを手動でバックアップしてください。", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "モデルを並べ替えると、名前の後の番号とアンダースコアが削除され、データテーブル、モデルカタログが再生成され、空のフォルダーと参照されていないモデルファイルが削除され、システムは自動的にデータテーブル、モデルカタログ、並べ替えるかどうかをバックアップしますか?", - "UnpackAlignment": "配置を解凍する", - "Model Animation": "モデルアニメーション", - "MaxBlur": "最大ぼかし", - "MinPolarAngle": "最小仰角", - "Save As": "名前を付けて保存", - "Total {{totalPage}} Pages": "合計{{totalPage}}ページ", - "Model": "モデル", - "RotateSpeed": "回転速度", - "Undo/Redo history will be cleared. Are you sure?": "元に戻す/やり直しの履歴は消去されます。", - "No Image": "写真なし", - "Fire Component": "フレームアセンブリ", - "Export OBJ": "objファイルをエクスポート", - "DampingFactor": "減衰係数", - "Clone": "コピー", - "EmissiveMap": "輝くテクスチャ", - "Lathe": "ワイングラス", - "FogFar": "遠くの霧", - "Terrain": "地形", - "LMesh Component": "LMeshコンポーネント", - "Far": "遠く", - "Teapot": "ティーポット", - "Shader cannot be parsed.": "シェーダー情報はデシリアライズできません。", - "CatmullRom curve should have at least 3 points.": " Catmull Rom 曲線には少なくとも3つのポイントが必要です!", - "Hemisphere Light": "半球ライト", - "Torus Knot": "キンク", - "Translate": "パン", - "Histogram": "ヒストグラム", - "maxAgeSpread": "長時間の発散", - "Sidebar": "サイドバー", - "About": "について", - "BackSide": "戻る", - "Clear Logs": "ログを空にする", - "Body": "本体", - "Tianditu Map": "デイマップ", - "Triangle": "三角形の数", - "EnableRotate": "回転を有効にする", - "AudioListener": "オーディオリスナー", - "Button": "ボタン", - "Directional Light": "平行光", - "Filter Animation": "フィルターアニメーション", - "MieDirectionalG": " exting の方向", - "ThetaStart": "開始緯度", - "Theme": "テーマ", - "Delete Script": "スクリプトを削除", - "Set Geometry": "ジオメトリを設定する", - "Quadratic Bezier Curve": "二次ベジェ曲線", - "1 Sample": "1サンプル", - "Camera Animation": "カメラアニメーション", - "Chord": "ひも", - "Point": "ポイント", - "Globe": "地球", - "Text": "テキスト", - "NoRotate": "回転しない", - "Are you sure to publish all scenes and assets?": "すべてのシナリオとリソースを静的なWebサイトとして公開していますか?", - "MeshDepthMaterial": "深さ材料", - "Gamma Input": "ガンマ入力", - "MeshPhongMaterial": "風水の材料", - "NegZ": "Z軸負", - "MeshBasicMaterial": "基本素材", - "Sprite": "エルフ", - "Skin": "スキン", - "AlphaTest": "アルファテスト", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "テクスチャを終了すると、名前の後の番号とアンダースコアが削除され、データテーブルとテクスチャカタログが再生成され、空のフォルダと参照されていないテクスチャファイルが削除され、システムはデータテーブルとテクスチャカタログを自動的にバックアップしますか?", - "Cube Texture fetch failed.": "ステレオテクスチャの取得に失敗しました!", - "BumpMap": "バンプテクスチャ", - "32 Samples": "32サンプル", - "BeginTime": "開始時間", - "Side View": "側面図", - "Publish website": "ウェブサイトの公開", - "BlurRadius": "ファジー半径", - "Time": "時間", - "Export Static Website": "静的なWebサイトを公開する", - "Draw Line": "線を引く", - "Export Geometry": "ジオメトリをエクスポート", - "Torus": "タイヤ", - "Light": "光源", - "Shader Program": "シェーディングプログラム", - "MaxAge": "期間", - "Delete": "削除する", - "Bing Map": "ビングマップ", - "Please input": "入力してください", - "PCF Shadow": "PCFシャドウ", - "Update UUID": "UUIDを更新", - "Centripetal Force": "求心力", - "GreyScale": "グレースケール", - "Listen to click event": "マウスクリックイベントをリッスンする", - "RadialSegments": "放射状セグメンテーション", - "Bottom": "下", - "Reflect": "反射する", - "Mirrored Repeat": "ミラーの繰り返し", - "No Colors": "色なし", - "Occlusion&Blur": "", - "Size": "大きさ", - "WireWidth": "ワイヤフレームの厚さ", - "Plane": "飛行機", - "Export Object": "オブジェクトをエクスポート", - "Back Side": "負", - "Arrange Thumbnail": "サムネイルを整理する", - "Audio": "音声", - "Distance": "距離", - "Information": "情報", - "Clear": "空の", - "Confirm": "確認する", - "PhiStart": "開始経度", - "Visible": "可視性", - "Play Audio": "音楽を演奏する", - "Cube Texture": "ステレオマップ", - "ThetaLength": "緯度をひっくり返す", - "ClipBias": "クロップオフセット", - "Please select texture first.": "最初にこのオブジェクトのテクスチャを選択してください!", - "Settings": "セッティング", - "Tube": "パイプセグメント", - "CollisionConfig": "衝突構成", - "FogColor": "霧の色", - "Receive": "受信中", - "Renderer": "レンダラー", - "Close": "閉じる", - "Geometry Component": "幾何学的なコンポーネント", - "Documents": "文書化", - "Cluster Diagram": "クラスター図", - "Shininess": "明るさ", - "Velocity": "スピード", - "Encoding": "コーディング", - "Are you sure to export the current scene?": "現在のシーンをエクスポートしますか?", - "Scatter": "分散", - "ThrowBall": "小さなボールを投げる", - "PhysicsType": "物理的なタイプ", - "Loading...": "読み込み中...", - "Spot Light": "スポットライト", - "Intensity": "強度", - "EndStatus": "終了状態", - "Dig": "掘る", - "Delete layer will delete all the anims on the layer. Are you sure?": "レイヤーを削除すると、レイヤー上のすべてのアニメーションが削除されます。", - "CatmullRom Curve": " Catmull Rom 曲線", - "ActiveLock": "待機して有効にする", - "HueRotate": "色相", - "AutoRotateSpeed": "回転速度", - "Move Object": "動く物体", - "Set Position": "場所を設定", - "DistortedArc": "歪曲", - "Inertia": "慣性", - "Key Value Label": "キー値タグ", - "SAO": "スケーラブルなアンビエントオクルージョン(SAO)", - "SoftBodyRigidBodyCollisionConfig": "ソフトボディの衝突構成", - "Set Material": "セット素材", - "is not existed in the scene.": "シーンに存在しません。", - "Export PLY": "プライファイルをエクスポートする", - "ScreenSpacePanning": "スクリーン座標", - "Volume": "ループプレイ", - "Grayscale": "グレースケール", - "BlurStdDev": "標準偏差", - "Blending": "混ぜる", - "Please select MMD animation only.": "MMDモデルのアニメーションのみが許可されています!", - "Camera Component": "カメラ部品", - "Frag Shader": "ソースシェーダー", - "Set Script": "設定スクリプト", - "Repeat": "繰り返す", - "Beauty": "美化する", - "Clear History": "履歴をクリア", - "Helpers": "ヘルパー", - "Please select MMD audio.": "MMDアニメーションに対応する音声をクリックしてください!", - "Preview": "プレビュー", - "Draw Point": "点を描く", - "MaxAzimuthAngle": "最大の向き", - "Collapse": "折り畳み", - "No Blending": "混合されていません", - "Save": "保存する", - "Plant Trees": "木々の植栽", - "Stop": "やめて", - "Vertical Line": "縦線", - "Tool": "道具", - "RadiusBottom": "底半径", - "Saved into indexDB.": "IndexedDBに保存します。", - "SSAO": "スクリーンスペースのアンビエントライトシェーディング(SSAO)", - "ClearCoatRoughness": "透明な粗さ", - "Component": "成分", - "Cannot deserialize scene data.": "シーンデータを解析できません!", - "Horizontal Line": "横線", - "PixelEffect": "ピクセル効果", - "Pointer Lock Controls": "ポインターロックコントローラー", - "has no physics helper.": "対応する物理的形状ヘルパーはありません。", - "FogDensity": "霧の濃度", - "Emissive": "照らす", - "Empty Scene": "空のシーン", - "PCF Soft Shadow": "PCFソフトシャドウ", - "16 Samples": "16サンプル", - "Listen to keyup event": "キーボードリフトイベントを監視する", - "ZoomSpeed": "ズーム速度", - "Cube texture has already been uploaded.": "ステレオテクスチャはサーバー側に既に存在し、繰り返しアップロードする必要はありません。", - "Gauge": "楽器", - "TextureSize": "テクスチャサイズ", - "Grid": "グリッド", - "Invert": "色反転", - "CameraNear": "カメラの近く", - "Arc": "ラジアン", - "Shader Terrain": "シェーダー地形", - "Orbit Controls": "トラックコントローラー", - "None": "いや", - "Closed": "閉店", - "Decal": "アップリケ", - "Are you sure to export the editor?": "エディターをエクスポートしますか?", - "Draw Pologon": "写真", - "Default": "デフォルト", - "MaxPolarAngle": "最大仰角", - "Edit": "編集", - "Please click the map in the map panel.": "地図パネルの地図をクリックしてください!", - "LightMap": "軽い質感", - "Ellipse Curve": "楕円曲線", - "Remove Script": "スクリプトを削除", - "Form Panel": "形", - "StaticMoving": "静的な動き", - "Penumbra": "ハーフシャドウ", - "Luminance": "明るさ", - "Bump Scale": "バンプテクスチャ比", - "FogNear": "霧の近くのポイント", - "Sky": "スカイ", - "Rotate(E)": "回転(E)", - "Scale Locked": "ロックズーム", - "DefaultCollisionConfig": "デフォルトの衝突構成", - "Fragment": "出所", - "Google Map": "Googleマップ", - "Query": "お問い合わせ", - "Play Fullscreen": "全画面再生", - "Target": "目標", - "Please save scene first.": "最初にシーンを保存してください!", - "Output": "出力", - "Set Geometry.": "ジオメトリを設定します。", - "Mass": "品質", - "Radius": "半径", - "Line Chart": "折れ線グラフ", - "MinFilter": "フィルタリングを減らす", - "MapSize": "テクスチャサイズ", - "Front View": "正面図", - "Amount": "金額", - "DepthSegments": "深いセグメンテーション", - "AoMap": "オクルージョンテクスチャ", - "Segments": "セグメンテーション", - "New Material": "新素材", - "Camera": "カメラ", - "BlendingMode": "混合モード", - "Transparent": "透明", - "Tree Diagram": "ツリー図", - "LineDashedMaterial": "点線素材", - "Position": "場所", - "BackgroundColor": "背景色", - "Square": "スクエア", - "Normal Blending": "一般的な混合", - "Label": "ラベル", - "CameraRight": "カメラ右", - "Ease Func": "補間関数", - "CameraTop": "カメラで", - "Author": "作者", - "DragToLook": "ドラッグして表示", - "Sone Words": "一部のテキスト", - "Halftone Effect": "ハーフトーン効果", - "Listen to mousedown event": "マウスクリックイベントを監視する", - "Scene": "シーン", - "Dragging animation on other animation is not allowed.": "アニメーションを他のアニメーションにドラッグすることはできません。", - "Panel": "パネル", - "Detail": "詳細", - "Bar Chart": "棒グラフ", - "WrapT": "縦塗り", - "MeshNormalMaterial": "法線ベクトル素材", - "Create empty scene successfully.": "空のシーンが正常に作成されました!", - "Fly Controls": "フライトコントローラー", - "Spline": "曲線", - "Animation": "アニメーション", - "Circle": "ラウンド", - "Time Disk": "タイムディスク", - "Width": "幅", - "Background Image": "背景画像", - "VerticalMin": "最小仰角", - "MeshLambertMaterial": "ランバート素材", - "Fov": "視野", - "NegY": "Y軸負", - "Flat Shading": "スムージング", - "Double Side": "両面", - "Play": "遊ぶ", - "Thumbnail": "サムネイル", - "Arrange Map": "仕上げマップ", - "Box": "キューブ", - "Scatter Plot": "散布図", - "Shader Program Info": "シェーダープログラム情報", - "Blinn": "ブリン", - "Ellipse": "楕円", - "All unsaved data will be lost. Are you sure?": "未保存のデータはすべて失われますが、新しいシーンを作成してもよろしいですか?", - "Shadow Component": "影付きコンポーネント", - "Geometry": "幾何学", - "2 Samples": "2サンプル", - "Listen to dblclick event": "マウスのダブルクリックイベントを監視する", - "BoxShape": "キューブ", - "WidthSegments": "幅分割", - "Fire": "炎", - "Add Script": "スクリプトを追加", - "Waiting...": "お待ちください...", - "Please select camera animation only.": "MMDカメラアニメーションのみが許可されています!", - "Focus": "焦点距離", - "NegX": "X軸負", - "Please check the layer.": "削除したいレイヤーにチェックを入れてください!", - "MaxDistance": "最大距離", - "Current Status": "現在の状態", - "Scale": "ズーム", - "RigidBody": "剛体", - "Vertex": "頂点の数", - "Gravity": "重力", - "Decay": "減衰", - "Specular": "ミラー度", - "RepeatNum": "塗りつぶしの数", - "Script": "スクリプト", - "Anisotropy": "異方性", - "AutoRotate": "自動回転", - "Auto Play": "自動再生", - "Add physics cloth successfully": "物理的な布を正常に追加してください!", - "Listen to mousemove event": "マウス移動イベントを監視する", - "Sepia": "レトロ", - "Examples": "例", - "Pressure": "圧力", - "Sphere": "球体", - "2D": "二次元", - "VerticalMax": "最大仰角", - "EnableKeys": "有効化ボタン", - "You should select Cube Texture.": "ステレオマップのみを許可します!", - "Execute before scene render": "シーンがレンダリングされる前に1回実行する", - "SceneComponent": "シーンコンポーネント", - "MieCofficient": " off 係数", - "Blur": "ぼかし", - "FXAA Component": "高速近似アンチエイリアス(FXAA)", - "Property": "属性", - "TimeSpan": "期間", - "NormalMap": "通常のテクスチャ", - "Group": "団体", - "Set Scene": "シーンのセットアップ", - "Perlin Terrain": "ベルリンの地形", - "Particle Animation": "粒子アニメーション", - "Image upload failed!": "画像のアップロードに失敗しました!", - "Physics Cloth": "物理的な布を追加する", - "Multi Modify": "複数の変更", - "Load Successfully!": "読み込みに成功しました!", - "CameraBottom": "カメラの下", - "Solid Color": "無地", - "AnimLayer1": "アニメーションレイヤー1", - "Search Content": "コンテンツを検索", - "Smoke": "煙", - "SSAA": "全画面アンチエイリアシング(SSAA)", - "Normal": "普通", - "Upload failed.": "アップロードに失敗しました!", - "Record": "録音中", - "Traceball Controls": "トラックボールコントローラー", - "Fog": "霧", - "Help": "助けて", - "Angle": "角度", - "No Name": "無名", - "Filter": "フィルター", - "Publish Scene": "リリースシーン", - "Partition Diagram": "パーティションマップ", - "Character": "キャラクター", - "EnableDamping": "衝撃吸収を有効にする", - "AccelerationSpread": "加速発散", - "Please upload all the textures before save.": "すべてのステレオマップをアップロードして、[保存]をクリックしてください!", - "Rect Area Light": "長方形ライト", - "FlipY": "逆Y", - "Format": "書式", - "PointCloudMaterial": "点群材料", - "Linear": "線形", - "Export STL": "stlファイルをエクスポート", - "Damp": "減衰", - "Program stoped.": "プログラムは正常に停止しました。", - "MetalnessMap": "金属の質感", - "Ambient Light": "周囲光", - "Reflectivity": "反射率", - "VelocitySpread": "速度の相違", - "Reduce Terrain": "地形を減らす", - "ClothComponent": "布の組み立て", - "Line": "行", - "Chord Graph": "コード図", - "SoftVolume": "ソフトボディ", - "Set Rotation": "回転を設定する", - "SliceSpacing": "スライス厚", - "Script name existed.": "スクリプト名が重複しています!", - "AutoForward": "自動前進", - "Bias": "偏差", - "Cast": "生成する", - "Basic Information": "基本情報", - "LookVertical": "見上げる", - "Vertex Colors": "頂点の色", - "MinDistance": "最小距離", - "Cancel": "キャンセルする", - "Roughness": "粗さ", - "SizeSpread": "次元の発散", - "NoPan": "パンしない", - "Glitch Effect": "グリッチ効果", - "Displace Scale": "変位テクスチャー比", - "PixelSize": "ピクセルサイズ", - "The object you selected is not geometry.": "選択したオブジェクトにはGeometryプロパティがありません。", - "Dark Color": "ダーク", - "Point Light": "ポイントソース", - "TAA": "時間アンチエイリアス(TAA)", - "Lighter": "明るくする", - "Basic Info": "基本情報", - "Ambient": "周囲光", - "MeshStandardMaterial": "標準素材", - "Options": "オプション", - "ShaderMaterial": "シェーダー素材", - "Face Colors": "顔の色", - "OK": "決定する", - "Tween Animation": "トゥイーンアニメーション", - "Lisense": "認可", - "Material": "素材", - "Gamma Output": "ガンマ出力", - "Offset": "オフセット", - "Bokeh Effect": "背景ぼかし効果", - "GenerateMipmaps": "オープンレベル", - "MinResolution": "最低解像度", - "Cannot set texture": "テクスチャを設定できません、", - "Scene data of string type is needed.": "文字列型のシーン型パラメーターが必要です!", - "Upload": "アップロードする", - "Please select object!": "オブジェクトを選択してください!", - "Icosahedron": "正二十面体", - "Reflector Component": "反射コンポーネント", - "Translate(W)": "パン(W)", - "EndTime": "終了時間", - "Light Color": "明るい色", - "Skeletal Animation": "骨格アニメーション", - "GroundColor": "地色", - "HeightSegments": "高さセグメンテーション", - "AlphaMap": "透明な質感", - "WrapS": "横詰め", - "EnablePan": "パンを有効にする", - "Water Component": "水成分", - "Height": "身長", - "Curve Type": "ラインタイプ", - "Export STL Binary": "stlバイナリをエクスポート", - "Export Scene": "シーンをエクスポート", - "Max Volume": "マスターボリューム", - "Prefab": "プリセット本体", - "Export GLTF": "gltfファイルをエクスポートする", - "Set": "セッティング", - "First Person Controls": "最初のView Controller", - "Please enter material name": "材料名を入力してください", - "Recursion": "再帰的", - "Language": "言語", - "Assets": "資源", - "Set Scale": "ズームを設定する", - "Contrast": "コントラスト", - "MetalNess": "メタリティ", - "Please select camera animation.": "MMDカメラアニメーションのみが許可されています!", - "Scale(R)": "ズーム(R)", - "Type": "種類", - "SMAA": "マルチサンプルアンチエイリアシング(SMAA)", - "LineBasicMaterial": "ライン素材", - "Please click material on material panel.": "材料パネルで材料をクリックしてください!", - "HeightMin": "最小の高さ", - "Error": "エラー", - "History": "歴史", - "BlurDepthCutoff": "深さパーティション", - "PhiLength": "回転経度", - "AnimLayer": "アニメーションレイヤー", - "PosZ": "Z軸正", - "Enabled": "有効にする", - "Animation Object": "動く物体", - "BeginStatus": "開始状態", - "Remove Point": "取り外しポイント", - "HeightMax": "最大高さ", - "Export Editor": "エクスポートエディター", - "Top View": "平面図", - "Program started.": "プログラムは正常に開始されました。", - "Texture": "テクスチャー", - "Select": "選ぶ", - "Light Component": "光源アセンブリ", - "MeshPhysicalMaterial": "物理的な材料", - "RadiusTop": "上部半径", - "Front Side": "ポジティブ", - "Lid": "鍋のふた" -} \ No newline at end of file + "Acceleration": "加速", + "FrontSide": "ポジティブ", + "Raise Terrain": "地形を上げる", + "Clamp To Edge": "ストレッチ", + "Add Object": "オブジェクトを追加します。", + "Wireframe": "ワイヤーフレーム", + "Add": "一緒に追加", + "AnimLayer3": "アニメーションレイヤー3", + "Background Music": "バックグラウンドミュージック", + "Beauty&Occlusion": "", + "Rotate Center": "回転中心", + "Exponential": "指数関数", + "DisplacementMap": "変位テクスチャ", + "Water": "水", + "Listen to keydown event": "キーボードプレスイベントを監視する", + "Background": "背景", + "Save Successfully.": "正常に保存されました。", + "Gamma Factor": "ガンマ係数", + "4 Samples": "4サンプル", + "Near": "ニアポイント", + "Exporting...": "エクスポートしています...", + "Material Component": "材料成分", + "SphereShape": "球体", + "QuadraticBezier Curve": "二次ベジェ曲線", + "Listen to resize event": "画面サイズ変更イベントを監視する", + "Message": "メッセージ", + "Date": "日付", + "Data Source Manage": "データソース管理", + "ClearCoat": "透明性", + "Listen to mousewheel event": "マウスホイールイベントを監視する", + "EnableZoom": "ズームを有効にする", + "Tension": "テンション", + "KeyPanSpeed": "ボタン速度", + "Ao Scale": "オクルージョンテクスチャ比", + "Name": "お名前", + "DotScreenEffect": "格子効果", + "CameraFar": "カメラファー", + "MovementSpeed": "移動速度", + "Pack Diagram": "パッケージ図", + "New": "新しい", + "Scene Controller": "シーンコントローラー", + "material has no coordinates.": "マテリアルにはテクスチャ座標がありません!", + "Force Directed Graph": "フォース指向マップ", + "Saturate": "彩度", + "Image upload successfully!": "画像が正常にアップロードされました!", + "NoZoom": "スケーリングしない", + "Please select category.": "カテゴリーを選択してください!", + "PosX": "X軸正", + "PositionSpread": "ロケーションの相違", + "RGB Shift Effect": "カラーシフト効果", + "Remove Object": "オブジェクトを削除", + "TubeArc": "長いアーク", + "Illustrate: Double-click the area below the timeline to add an animation.": "説明:タイムラインの下の領域をダブルクリックして、アニメーションを追加します。", + "Polygon": "顔", + "CameraLeft": "左カメラ", + "Vertex Shader": "頂点シェーダー", + "TubelarSegments": "管状セグメント", + "Logs": "ログ", + "HeightSpeed": "高さ速度", + "Execute each frame during running": "すべてのフレームは、プログラムの実行中に実行する必要があります。", + "Cloth": "布地", + "CubicBezier Curve": "立方ベジェ曲線", + "Clear indexedDB.": "空のIndexedDB。", + "is not available.": "利用できません。", + "ConstrainVertical": "仰角を制限", + "Custom Status": "カスタム", + "Pie Chart": "円グラフ", + "Quality": "品質", + "Execute after program stopped": "プログラムの実行が完了した後に1回実行する", + "PhysicsEnvironment": "物理的環境", + "FitLid": "ふたに適しています", + "AfterimageEffect": "残像効果", + "Delete successfully!": "削除しました!", + "RotateRed": "赤いたわみ", + "Please click the audio in the Audio Panel.": "オーディオパネルのオーディオをクリックしてください!", + "Color": "色", + "Custom Blending": "カスタムブレンド", + "IsLocked": "ロックするかどうか", + "Create Script": "スクリプトを作成", + "Opacity": "不透明度", + "Side": "除外する", + "Spray": "ジェット機", + "RoughnessMap": "大まかなテクスチャ", + "MinAzimuthAngle": "最小オリエンテーション", + "Turbidity": "濁度", + "DefaultCamera": "デフォルトのカメラ", + "MagFilter": "拡大フィルター", + "Disabled": "無効にする", + "Please click the map in the Map Panel.": "テクスチャパネルのステレオマップをクリックしてください!", + "New Script": "新しいスクリプト", + "PanSpeed": "翻訳速度", + "Aperture": "絞り", + "Options Window": "オプションウィンドウ", + "Rayleigh": "レイリー", + "Save Scene": "シーンを保存する", + "Shadow": "影", + "Basic Shadow": "基本的な影", + "Perspective View": "遠近法", + "ShaderInfo": "シェーダー情報", + "Rotate": "回転", + "Category Edit": "カテゴリー編集", + "Level": "グレード", + "SpecularMap": "鏡のテクスチャ", + "OpenEnded": "両端が開いています", + "Directional": "平行光", + "Arrange Mesh": "モデルを整理する", + "Shape": "形", + "Halo": "ハロー", + "Cylinder": "シリンダー", + "Multiply": "掛ける", + "Additive Blending": "そして混合", + "LookSpeed": "時計の速度", + "ParticleEmitter": "パーティクルエミッター", + "Texture Settings": "テクスチャ設定", + "EnableState": "有効状態", + "Source": "ソースコード", + "SmokeComponent": "煙成分", + "Map": "テクスチャー", + "ParticleCount": "粒子の数", + "Depth": "深さ", + "Visual": "可視化", + "Not Set": "設定されていません", + "New Scene": "新しいシーン", + "WildMode": "クレイジーモード", + "Brightness": "明るさ", + "PremultiplyAlpha": "透明のまま", + "HeightCoef": "高さ係数", + "PosY": "Y軸正", + "Undo": "キャンセルする", + "Skeleton": "骨", + "Edit Script": "スクリプトを編集", + "Add Point": "ポイントを追加", + "Darker": "暗くする", + "Mapping": "マッピング", + "Transform Component": "変位コンポーネント", + "Listen to mouseup event": "マウス発生イベントを監視する", + "MMD Model": "MMDモデル", + "Hierachy": "シーン", + "SkyColor": "空の色", + "Loop": "ループプレイ", + "SpriteMaterial": "エルフ素材", + "Vertex Color": "頂点の色", + "Please click the animation in the animation panel.": "アニメーションパネルでアニメーションをクリックしてください!", + "Play New Window": "新しいウィンドウプレイ", + "Particle": "粒子", + "Substractive Blending": "悪いミックス", + "Unbiased": "偏差なし", + "Occlusion": "オクルージョン", + "Object": "オブジェクトの数", + "GIS Scene": "GISシーン", + "RotateBlue": "青いたわみ", + "Script saved successfully!": "スクリプトは正常に保存されました!", + "Category List": "カテゴリーリスト", + "Redo": "やり直し", + "KernalRadius": "コア半径", + "RotateGreen": "緑のたわみ", + "Furface": "外観", + "Multiply Blending": "製品ミックス", + "8 Samples": "8サンプル", + "Execute after scene render": "シーンがレンダリングされた後に一度実行する", + "Please open scene first.": "最初にシーンを開いてください!", + "Category": "カテゴリー", + "Line Curve": "線分", + "EnvMap": "環境テクスチャ", + "GIS Component": "GISコンポーネント", + "RawShaderMaterial": "シェーダー素材", + "AnimLayer2": "アニメーションレイヤー2", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "サムネイルを整理すると、サムネイルディレクトリが再生成され、シーン、モデル、テクスチャ、マテリアル、オーディオ、アニメーション、パーティクル、プリセットボディ、キャラクターのサムネイルパスが変更されます。最初にデータベースを手動でバックアップしてください。", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "モデルを並べ替えると、名前の後の番号とアンダースコアが削除され、データテーブル、モデルカタログが再生成され、空のフォルダーと参照されていないモデルファイルが削除され、システムは自動的にデータテーブル、モデルカタログ、並べ替えるかどうかをバックアップしますか?", + "UnpackAlignment": "配置を解凍する", + "Model Animation": "モデルアニメーション", + "MaxBlur": "最大ぼかし", + "MinPolarAngle": "最小仰角", + "Save As": "名前を付けて保存", + "Total {{totalPage}} Pages": "合計{{totalPage}}ページ", + "Model": "モデル", + "RotateSpeed": "回転速度", + "Undo/Redo history will be cleared. Are you sure?": "元に戻す/やり直しの履歴は消去されます。", + "No Image": "写真なし", + "Fire Component": "フレームアセンブリ", + "Export OBJ": "objファイルをエクスポート", + "DampingFactor": "減衰係数", + "Clone": "コピー", + "EmissiveMap": "輝くテクスチャ", + "Lathe": "ワイングラス", + "FogFar": "遠くの霧", + "Terrain": "地形", + "LMesh Component": "LMeshコンポーネント", + "Far": "遠く", + "Teapot": "ティーポット", + "Shader cannot be parsed.": "シェーダー情報はデシリアライズできません。", + "CatmullRom curve should have at least 3 points.": " Catmull Rom 曲線には少なくとも3つのポイントが必要です!", + "Hemisphere Light": "半球ライト", + "Torus Knot": "キンク", + "Translate": "パン", + "Histogram": "ヒストグラム", + "maxAgeSpread": "長時間の発散", + "Sidebar": "サイドバー", + "About": "について", + "BackSide": "戻る", + "Clear Logs": "ログを空にする", + "Body": "本体", + "Tianditu Map": "デイマップ", + "Triangle": "三角形の数", + "EnableRotate": "回転を有効にする", + "AudioListener": "オーディオリスナー", + "Button": "ボタン", + "Directional Light": "平行光", + "Filter Animation": "フィルターアニメーション", + "MieDirectionalG": " exting の方向", + "ThetaStart": "開始緯度", + "Theme": "テーマ", + "Delete Script": "スクリプトを削除", + "Set Geometry": "ジオメトリを設定する", + "Quadratic Bezier Curve": "二次ベジェ曲線", + "1 Sample": "1サンプル", + "Camera Animation": "カメラアニメーション", + "Chord": "ひも", + "Point": "ポイント", + "Globe": "地球", + "Text": "テキスト", + "NoRotate": "回転しない", + "Are you sure to publish all scenes and assets?": "すべてのシナリオとリソースを静的なWebサイトとして公開していますか?", + "MeshDepthMaterial": "深さ材料", + "Gamma Input": "ガンマ入力", + "MeshPhongMaterial": "風水の材料", + "NegZ": "Z軸負", + "MeshBasicMaterial": "基本素材", + "Sprite": "エルフ", + "Skin": "スキン", + "AlphaTest": "アルファテスト", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "テクスチャを終了すると、名前の後の番号とアンダースコアが削除され、データテーブルとテクスチャカタログが再生成され、空のフォルダと参照されていないテクスチャファイルが削除され、システムはデータテーブルとテクスチャカタログを自動的にバックアップしますか?", + "Cube Texture fetch failed.": "ステレオテクスチャの取得に失敗しました!", + "BumpMap": "バンプテクスチャ", + "32 Samples": "32サンプル", + "BeginTime": "開始時間", + "Side View": "側面図", + "Publish website": "ウェブサイトの公開", + "BlurRadius": "ファジー半径", + "Time": "時間", + "Export Static Website": "静的なWebサイトを公開する", + "Draw Line": "線を引く", + "Export Geometry": "ジオメトリをエクスポート", + "Torus": "タイヤ", + "Light": "光源", + "Shader Program": "シェーディングプログラム", + "MaxAge": "期間", + "Delete": "削除する", + "Bing Map": "ビングマップ", + "Please input": "入力してください", + "PCF Shadow": "PCFシャドウ", + "Update UUID": "UUIDを更新", + "Centripetal Force": "求心力", + "GreyScale": "グレースケール", + "Listen to click event": "マウスクリックイベントをリッスンする", + "RadialSegments": "放射状セグメンテーション", + "Bottom": "下", + "Reflect": "反射する", + "Mirrored Repeat": "ミラーの繰り返し", + "No Colors": "色なし", + "Occlusion&Blur": "", + "Size": "大きさ", + "WireWidth": "ワイヤフレームの厚さ", + "Plane": "飛行機", + "Export Object": "オブジェクトをエクスポート", + "Back Side": "負", + "Arrange Thumbnail": "サムネイルを整理する", + "Audio": "音声", + "Distance": "距離", + "Information": "情報", + "Clear": "空の", + "Confirm": "確認する", + "PhiStart": "開始経度", + "Visible": "可視性", + "Play Audio": "音楽を演奏する", + "Cube Texture": "ステレオマップ", + "ThetaLength": "緯度をひっくり返す", + "ClipBias": "クロップオフセット", + "Please select texture first.": "最初にこのオブジェクトのテクスチャを選択してください!", + "Settings": "セッティング", + "Tube": "パイプセグメント", + "CollisionConfig": "衝突構成", + "FogColor": "霧の色", + "Receive": "受信中", + "Renderer": "レンダラー", + "Close": "閉じる", + "Geometry Component": "幾何学的なコンポーネント", + "Documents": "文書化", + "Cluster Diagram": "クラスター図", + "Shininess": "明るさ", + "Velocity": "スピード", + "Encoding": "コーディング", + "Are you sure to export the current scene?": "現在のシーンをエクスポートしますか?", + "Scatter": "分散", + "ThrowBall": "小さなボールを投げる", + "PhysicsType": "物理的なタイプ", + "Loading...": "読み込み中...", + "Spot Light": "スポットライト", + "Intensity": "強度", + "EndStatus": "終了状態", + "Dig": "掘る", + "Delete layer will delete all the anims on the layer. Are you sure?": "レイヤーを削除すると、レイヤー上のすべてのアニメーションが削除されます。", + "CatmullRom Curve": " Catmull Rom 曲線", + "ActiveLock": "待機して有効にする", + "HueRotate": "色相", + "AutoRotateSpeed": "回転速度", + "Move Object": "動く物体", + "Set Position": "場所を設定", + "DistortedArc": "歪曲", + "Inertia": "慣性", + "Key Value Label": "キー値タグ", + "SAO": "スケーラブルなアンビエントオクルージョン(SAO)", + "SoftBodyRigidBodyCollisionConfig": "ソフトボディの衝突構成", + "Set Material": "セット素材", + "is not existed in the scene.": "シーンに存在しません。", + "Export PLY": "プライファイルをエクスポートする", + "ScreenSpacePanning": "スクリーン座標", + "Volume": "ループプレイ", + "Grayscale": "グレースケール", + "BlurStdDev": "標準偏差", + "Blending": "混ぜる", + "Please select MMD animation only.": "MMDモデルのアニメーションのみが許可されています!", + "Camera Component": "カメラ部品", + "Frag Shader": "ソースシェーダー", + "Set Script": "設定スクリプト", + "Repeat": "繰り返す", + "Beauty": "美化する", + "Clear History": "履歴をクリア", + "Helpers": "ヘルパー", + "Please select MMD audio.": "MMDアニメーションに対応する音声をクリックしてください!", + "Preview": "プレビュー", + "Draw Point": "点を描く", + "MaxAzimuthAngle": "最大の向き", + "Collapse": "折り畳み", + "No Blending": "混合されていません", + "Save": "保存する", + "Plant Trees": "木々の植栽", + "Stop": "やめて", + "Vertical Line": "縦線", + "Tool": "道具", + "RadiusBottom": "底半径", + "Saved into indexDB.": "IndexedDBに保存します。", + "SSAO": "スクリーンスペースのアンビエントライトシェーディング(SSAO)", + "ClearCoatRoughness": "透明な粗さ", + "Component": "成分", + "Cannot deserialize scene data.": "シーンデータを解析できません!", + "Horizontal Line": "横線", + "PixelEffect": "ピクセル効果", + "Pointer Lock Controls": "ポインターロックコントローラー", + "has no physics helper.": "対応する物理的形状ヘルパーはありません。", + "FogDensity": "霧の濃度", + "Emissive": "照らす", + "Empty Scene": "空のシーン", + "PCF Soft Shadow": "PCFソフトシャドウ", + "16 Samples": "16サンプル", + "Listen to keyup event": "キーボードリフトイベントを監視する", + "ZoomSpeed": "ズーム速度", + "Cube texture has already been uploaded.": "ステレオテクスチャはサーバー側に既に存在し、繰り返しアップロードする必要はありません。", + "Gauge": "楽器", + "TextureSize": "テクスチャサイズ", + "Grid": "グリッド", + "Invert": "色反転", + "CameraNear": "カメラの近く", + "Arc": "ラジアン", + "Shader Terrain": "シェーダー地形", + "Orbit Controls": "トラックコントローラー", + "None": "いや", + "Closed": "閉店", + "Decal": "アップリケ", + "Are you sure to export the editor?": "エディターをエクスポートしますか?", + "Draw Pologon": "写真", + "Default": "デフォルト", + "MaxPolarAngle": "最大仰角", + "Edit": "編集", + "Please click the map in the map panel.": "地図パネルの地図をクリックしてください!", + "LightMap": "軽い質感", + "Ellipse Curve": "楕円曲線", + "Remove Script": "スクリプトを削除", + "Form Panel": "形", + "StaticMoving": "静的な動き", + "Penumbra": "ハーフシャドウ", + "Luminance": "明るさ", + "Bump Scale": "バンプテクスチャ比", + "FogNear": "霧の近くのポイント", + "Sky": "スカイ", + "Rotate(E)": "回転(E)", + "Scale Locked": "ロックズーム", + "DefaultCollisionConfig": "デフォルトの衝突構成", + "Fragment": "出所", + "Google Map": "Googleマップ", + "Query": "お問い合わせ", + "Play Fullscreen": "全画面再生", + "Target": "目標", + "Please save scene first.": "最初にシーンを保存してください!", + "Output": "出力", + "Set Geometry.": "ジオメトリを設定します。", + "Mass": "品質", + "Radius": "半径", + "Line Chart": "折れ線グラフ", + "MinFilter": "フィルタリングを減らす", + "MapSize": "テクスチャサイズ", + "Front View": "正面図", + "Amount": "金額", + "DepthSegments": "深いセグメンテーション", + "AoMap": "オクルージョンテクスチャ", + "Segments": "セグメンテーション", + "New Material": "新素材", + "Camera": "カメラ", + "BlendingMode": "混合モード", + "Transparent": "透明", + "Tree Diagram": "ツリー図", + "LineDashedMaterial": "点線素材", + "Position": "場所", + "BackgroundColor": "背景色", + "Square": "スクエア", + "Normal Blending": "一般的な混合", + "Label": "ラベル", + "CameraRight": "カメラ右", + "Ease Func": "補間関数", + "CameraTop": "カメラで", + "Author": "作者", + "DragToLook": "ドラッグして表示", + "Sone Words": "一部のテキスト", + "Halftone Effect": "ハーフトーン効果", + "Listen to mousedown event": "マウスクリックイベントを監視する", + "Scene": "シーン", + "Dragging animation on other animation is not allowed.": "アニメーションを他のアニメーションにドラッグすることはできません。", + "Panel": "パネル", + "Detail": "詳細", + "Bar Chart": "棒グラフ", + "WrapT": "縦塗り", + "MeshNormalMaterial": "法線ベクトル素材", + "Create empty scene successfully.": "空のシーンが正常に作成されました!", + "Fly Controls": "フライトコントローラー", + "Spline": "曲線", + "Animation": "アニメーション", + "Circle": "ラウンド", + "Time Disk": "タイムディスク", + "Width": "幅", + "Background Image": "背景画像", + "VerticalMin": "最小仰角", + "MeshLambertMaterial": "ランバート素材", + "Fov": "視野", + "NegY": "Y軸負", + "Flat Shading": "スムージング", + "Double Side": "両面", + "Play": "遊ぶ", + "Thumbnail": "サムネイル", + "Arrange Map": "仕上げマップ", + "Box": "キューブ", + "Scatter Plot": "散布図", + "Shader Program Info": "シェーダープログラム情報", + "Blinn": "ブリン", + "Ellipse": "楕円", + "All unsaved data will be lost. Are you sure?": "未保存のデータはすべて失われますが、新しいシーンを作成してもよろしいですか?", + "Shadow Component": "影付きコンポーネント", + "Geometry": "幾何学", + "2 Samples": "2サンプル", + "Listen to dblclick event": "マウスのダブルクリックイベントを監視する", + "BoxShape": "キューブ", + "WidthSegments": "幅分割", + "Fire": "炎", + "Add Script": "スクリプトを追加", + "Waiting...": "お待ちください...", + "Please select camera animation only.": "MMDカメラアニメーションのみが許可されています!", + "Focus": "焦点距離", + "NegX": "X軸負", + "Please check the layer.": "削除したいレイヤーにチェックを入れてください!", + "MaxDistance": "最大距離", + "Current Status": "現在の状態", + "Scale": "ズーム", + "RigidBody": "剛体", + "Vertex": "頂点の数", + "Gravity": "重力", + "Decay": "減衰", + "Specular": "ミラー度", + "RepeatNum": "塗りつぶしの数", + "Script": "スクリプト", + "Anisotropy": "異方性", + "AutoRotate": "自動回転", + "Auto Play": "自動再生", + "Add physics cloth successfully": "物理的な布を正常に追加してください!", + "Listen to mousemove event": "マウス移動イベントを監視する", + "Sepia": "レトロ", + "Examples": "例", + "Pressure": "圧力", + "Sphere": "球体", + "2D": "二次元", + "VerticalMax": "最大仰角", + "EnableKeys": "有効化ボタン", + "You should select Cube Texture.": "ステレオマップのみを許可します!", + "Execute before scene render": "シーンがレンダリングされる前に1回実行する", + "SceneComponent": "シーンコンポーネント", + "MieCofficient": " off 係数", + "Blur": "ぼかし", + "FXAA Component": "高速近似アンチエイリアス(FXAA)", + "Property": "属性", + "TimeSpan": "期間", + "NormalMap": "通常のテクスチャ", + "Group": "団体", + "Set Scene": "シーンのセットアップ", + "Perlin Terrain": "ベルリンの地形", + "Particle Animation": "粒子アニメーション", + "Image upload failed!": "画像のアップロードに失敗しました!", + "Physics Cloth": "物理的な布を追加する", + "Multi Modify": "複数の変更", + "Load Successfully!": "読み込みに成功しました!", + "CameraBottom": "カメラの下", + "Solid Color": "無地", + "AnimLayer1": "アニメーションレイヤー1", + "Search Content": "コンテンツを検索", + "Smoke": "煙", + "SSAA": "全画面アンチエイリアシング(SSAA)", + "Normal": "普通", + "Upload failed.": "アップロードに失敗しました!", + "Record": "録音中", + "Traceball Controls": "トラックボールコントローラー", + "Fog": "霧", + "Help": "助けて", + "Angle": "角度", + "No Name": "Iimt_Digital_Twin", + "Filter": "フィルター", + "Publish Scene": "リリースシーン", + "Partition Diagram": "パーティションマップ", + "Character": "キャラクター", + "EnableDamping": "衝撃吸収を有効にする", + "AccelerationSpread": "加速発散", + "Please upload all the textures before save.": "すべてのステレオマップをアップロードして、[保存]をクリックしてください!", + "Rect Area Light": "長方形ライト", + "FlipY": "逆Y", + "Format": "書式", + "PointCloudMaterial": "点群材料", + "Linear": "線形", + "Export STL": "stlファイルをエクスポート", + "Damp": "減衰", + "Program stoped.": "プログラムは正常に停止しました。", + "MetalnessMap": "金属の質感", + "Ambient Light": "周囲光", + "Reflectivity": "反射率", + "VelocitySpread": "速度の相違", + "Reduce Terrain": "地形を減らす", + "ClothComponent": "布の組み立て", + "Line": "行", + "Chord Graph": "コード図", + "SoftVolume": "ソフトボディ", + "Set Rotation": "回転を設定する", + "SliceSpacing": "スライス厚", + "Script name existed.": "スクリプト名が重複しています!", + "AutoForward": "自動前進", + "Bias": "偏差", + "Cast": "生成する", + "Basic Information": "基本情報", + "LookVertical": "見上げる", + "Vertex Colors": "頂点の色", + "MinDistance": "最小距離", + "Cancel": "キャンセルする", + "Roughness": "粗さ", + "SizeSpread": "次元の発散", + "NoPan": "パンしない", + "Glitch Effect": "グリッチ効果", + "Displace Scale": "変位テクスチャー比", + "PixelSize": "ピクセルサイズ", + "The object you selected is not geometry.": "選択したオブジェクトにはGeometryプロパティがありません。", + "Dark Color": "ダーク", + "Point Light": "ポイントソース", + "TAA": "時間アンチエイリアス(TAA)", + "Lighter": "明るくする", + "Basic Info": "基本情報", + "Ambient": "周囲光", + "MeshStandardMaterial": "標準素材", + "Options": "オプション", + "ShaderMaterial": "シェーダー素材", + "Face Colors": "顔の色", + "OK": "決定する", + "Tween Animation": "トゥイーンアニメーション", + "Lisense": "認可", + "Material": "素材", + "Gamma Output": "ガンマ出力", + "Offset": "オフセット", + "Bokeh Effect": "背景ぼかし効果", + "GenerateMipmaps": "オープンレベル", + "MinResolution": "最低解像度", + "Cannot set texture": "テクスチャを設定できません、", + "Scene data of string type is needed.": "文字列型のシーン型パラメーターが必要です!", + "Upload": "アップロードする", + "Please select object!": "オブジェクトを選択してください!", + "Icosahedron": "正二十面体", + "Reflector Component": "反射コンポーネント", + "Translate(W)": "パン(W)", + "EndTime": "終了時間", + "Light Color": "明るい色", + "Skeletal Animation": "骨格アニメーション", + "GroundColor": "地色", + "HeightSegments": "高さセグメンテーション", + "AlphaMap": "透明な質感", + "WrapS": "横詰め", + "EnablePan": "パンを有効にする", + "Water Component": "水成分", + "Height": "身長", + "Curve Type": "ラインタイプ", + "Export STL Binary": "stlバイナリをエクスポート", + "Export Scene": "シーンをエクスポート", + "Max Volume": "マスターボリューム", + "Prefab": "プリセット本体", + "Export GLTF": "gltfファイルをエクスポートする", + "Set": "セッティング", + "First Person Controls": "最初のView Controller", + "Please enter material name": "材料名を入力してください", + "Recursion": "再帰的", + "Language": "言語", + "Assets": "資源", + "Set Scale": "ズームを設定する", + "Contrast": "コントラスト", + "MetalNess": "メタリティ", + "Please select camera animation.": "MMDカメラアニメーションのみが許可されています!", + "Scale(R)": "ズーム(R)", + "Type": "種類", + "SMAA": "マルチサンプルアンチエイリアシング(SMAA)", + "LineBasicMaterial": "ライン素材", + "Please click material on material panel.": "材料パネルで材料をクリックしてください!", + "HeightMin": "最小の高さ", + "Error": "エラー", + "History": "歴史", + "BlurDepthCutoff": "深さパーティション", + "PhiLength": "回転経度", + "AnimLayer": "アニメーションレイヤー", + "PosZ": "Z軸正", + "Enabled": "有効にする", + "Animation Object": "動く物体", + "BeginStatus": "開始状態", + "Remove Point": "取り外しポイント", + "HeightMax": "最大高さ", + "Export Editor": "エクスポートエディター", + "Top View": "平面図", + "Program started.": "プログラムは正常に開始されました。", + "Texture": "テクスチャー", + "Select": "選ぶ", + "Light Component": "光源アセンブリ", + "MeshPhysicalMaterial": "物理的な材料", + "RadiusTop": "上部半径", + "Front Side": "ポジティブ", + "Lid": "鍋のふた", + "Configure Animation": "アニメーションの設定", + "Please select the animation target": "アニメーションターゲットを選択してください", + "Are you sure you want to delete this animation?": "本当にこのアニメーションを削除しますか?", + "Animation added successfully": "アニメーションの追加に成功しました", + "Animation modification successful": "アニメーションの変更に成功しました", + "The maximum animation duration is 1 hour": "最長アニメーション時間は1時間" +} diff --git a/web/locales/ko-KR.json b/web/locales/ko-KR.json index 14e9bbbd1f1c2aafb81f412274cc7d2fe081001d..3a8360b42e4380e7f4c9d9638e5327a5559a802c 100644 --- a/web/locales/ko-KR.json +++ b/web/locales/ko-KR.json @@ -1,644 +1,650 @@ { - "Smoke": "연기", - "MeshDepthMaterial": "깊이 재료", - "Chord Graph": "코드 다이어그램", - "Rotate Center": "회전 센터", - "Halftone Effect": "하프 톤 효과", - "History": "연혁", - "Gamma Output": "감마 출력", - "Spot Light": "스포트라이트", - "MetalNess": "금속성", - "CameraRight": "카메라 오른쪽", - "Loop": "루프 플레이", - "Play Fullscreen": "전체 화면 재생", - "HeightMax": "최대 높이", - "Execute after scene render": "장면이 렌더링 된 후 한 번 실행", - "TubelarSegments": "관형 세그먼트", - "Author": "저자", - "Save": "저장", - "Acceleration": "가속", - "Terrain": "지형", - "Gamma Factor": "감마 계수", - "Directional": "평행 광", - "MeshBasicMaterial": "기본 재료", - "4 Samples": "4 개의 샘플", - "Shader cannot be parsed.": "셰이더 정보는 역 직렬화 할 수 없습니다.", - "RepeatNum": "채우기 횟수", - "Are you sure to export the current scene?": "현재 장면을 내보내시겠습니까?", - "PositionSpread": "위치 차이", - "Category List": "카테고리 목록", - "Name": "이름", - "Line Chart": "꺾은 선형 차트", - "FogDensity": "안개 농도", - "LMesh Component": "LMesh 구성 요소", - "Aperture": "조리개", - "PanSpeed": "번역 속도", - "EnablePan": "패닝 활성화", - "PointCloudMaterial": "포인트 클라우드 소재", - "CameraLeft": "카메라 왼쪽", - "WidthSegments": "폭 세분화", - "Object": "객체 수", - "Inertia": "관성", - "Tension": "장력", - "Cancel": "취소", - "Image upload failed!": "이미지 업로드에 실패했습니다!", - "TextureSize": "질감 크기", - "CubicBezier Curve": "큐빅 베 지어 곡선", - "Icosahedron": "정 이십 면체", - "Saturate": "채도", - "Please click the audio in the Audio Panel.": "오디오 패널에서 오디오를 클릭하십시오!", - "Normal": "보통", - "AutoForward": "자동 진행", - "MieDirectionalG": " 연장 방향", - "Detail": "세부 사항", - "New Script": "새로운 스크립트", - "AutoRotateSpeed": "회전 속도", - "Line Curve": "선분", - "Type": "타입", - "MapSize": "질감 크기", - "Export Scene": "장면 내보내기", - "Select": "선택", - "MeshStandardMaterial": "표준 재료", - "Sepia": "레트로", - "Button": "버튼", - "DotScreenEffect": "격자 효과", - "Model": "모형", - "Decal": "아플리케", - "Image upload successfully!": "이미지가 성공적으로 업로드되었습니다!", - "Mass": "품질", - "Additive Blending": "그리고 섞기", - "Background": "배경", - "Remove Object": "객체 제거", - "Pointer Lock Controls": "포인터 잠금 컨트롤러", - "maxAgeSpread": "장시간 발산", - "SSAO": "화면 공간 주변 광 음영 (SSAO)", - "Square": "광장", - "Encoding": "코딩", - "Point Light": "포인트 소스", - "Perspective View": "관점", - "Sone Words": "일부 텍스트", - "TimeSpan": "기간", - "Please enter material name": "재료 이름을 입력하십시오", - "EnableZoom": "줌 사용", - "Camera Animation": "카메라 애니메이션", - "SoftBodyRigidBodyCollisionConfig": "소프트 바디 충돌 구성", - "MaxAzimuthAngle": "최대 오리엔테이션", - "Information": "정보", - "Program started.": "프로그램이 성공적으로 시작되었습니다.", - "SizeSpread": "차원의 발산", - "Please upload all the textures before save.": "모든 스테레오 맵을 업로드하고 저장을 클릭하십시오!", - "LookSpeed": "시청 속도", - "BoxShape": "큐브", - "Beauty&Occlusion": "", - "CatmullRom Curve": " Catmull Rom 곡선", - "Halo": "헤일로", - "Double Side": "양면", - "ParticleCount": "입자 수", - "Edit Script": "스크립트 편집", - "Listen to keydown event": "키보드 프레스 이벤트 모니터", - "Scatter Plot": "산포도", - "MovementSpeed": "이동 속도", - "Unbiased": "편차 없음", - "Centripetal Force": "구심력", - "Cube Texture": "스테레오 맵", - "Skin": "피부", - "EndTime": "종료 시간", - "Background Music": "배경 음악", - "Script saved successfully!": "스크립트가 성공적으로 저장되었습니다!", - "MeshLambertMaterial": "램버트 소재", - "FXAA Component": "빠른 근사 앤티 앨리어싱 (FXAA)", - "Raise Terrain": "지형을 올립니다", - "CameraFar": "카메라까지", - "Force Directed Graph": "힘 중심지도", - "Line": "선", - "Bump Scale": "범프 텍스처 비율", - "SceneComponent": "장면 구성 요소", - "RadialSegments": "방사형 분할", - "Preview": "미리보기", - "Publish website": "웹 사이트 게시", - "Clear": "비우기", - "FogNear": "포인트 근처 안개", - "FitLid": "뚜껑에 적합", - "Assets": "자원", - "Exporting...": "내보내는 중 ...", - "RoughnessMap": "거친 질감", - "Reduce Terrain": "지형 축소", - "Current Status": "현재 상태", - "Position": "위치", - "VerticalMin": "최소 고도", - "Format": "체재", - "AlphaTest": "알파 테스트", - "Rayleigh": "레일리", - "Shader Program": "쉐이딩 프로그램", - "Search Content": "컨텐츠 검색", - "Beauty": "아름답다", - "Panel": "패널", - "PosZ": "Z 축 포지티브", - "Listen to dblclick event": "마우스 더블 클릭 이벤트 모니터링", - "Grayscale": "그레이 스케일", - "Lighter": "밝게", - "NoPan": "패닝하지 않음", - "Reflectivity": "반사율", - "BeginTime": "시작 시간", - "No Colors": "무색", - "Front View": "정면도", - "RotateGreen": "녹색 편향", - "Chord": "끈", - "Contrast": "대조", - "Arc": "라디안", - "Texture Settings": "텍스처 설정", - "Please select camera animation only.": "MMD 카메라 애니메이션 만 허용됩니다!", - "DefaultCollisionConfig": "기본 충돌 구성", - "Torus Knot": "꼬임", - "You should select Cube Texture.": "스테레오 맵만 허용하십시오!", - "Date": "날짜", - "Please select camera animation.": "MMD 카메라 애니메이션 만 허용됩니다!", - "Closed": "휴무", - "Execute each frame during running": "프로그램을 실행하는 동안 모든 프레임을 실행해야합니다.", - "Not Set": "미 설정", - "Component": "구성 요소", - "GIS Component": "GIS 구성 요소", - "MinDistance": "최소 거리", - "Character": "캐릭터", - "Redo": "재실행", - "RotateRed": "붉은 처짐", - "EnableDamping": "충격 흡수 가능", - "Cannot deserialize scene data.": "장면 데이터를 파싱 할 수 없습니다!", - "AutoRotate": "자동 회전", - "SpriteMaterial": "엘프 소재", - "Translate": "팬", - "Fly Controls": "비행 컨트롤러", - "Cluster Diagram": "클러스터 다이어그램", - "Skeleton": "뼈", - "Please select category.": "카테고리를 선택하십시오!", - "Brightness": "밝기", - "UnpackAlignment": "압축 풀기", - "Create Script": "스크립트 작성", - "Tianditu Map": "일지도", - "Hierachy": "장면", - "Visual": "시각화", - "Draw Line": "선 그리기", - "Multi Modify": "여러 변경", - "HeightSpeed": "높이 속도", - "Furface": "외관", - "HeightMin": "최소 높이", - "Vertex Colors": "정점 색상", - "Delete Script": "스크립트 삭제", - "Set Position": "위치 설정", - "NegX": "X 축 음수", - "Please open scene first.": "장면을 먼저여십시오!", - "PhysicsType": "물리적 유형", - "is not existed in the scene.": "장면에 존재하지 않습니다.", - "Lathe": "와인 글라스", - "Fog": "안개", - "Filter Animation": "필터 애니메이션", - "No Name": "이름이없는", - "Sprite": "엘프", - "Record": "녹화", - "Solid Color": "단색", - "Orbit Controls": "트랙 컨트롤러", - "Linear": "선형", - "Sphere": "구체", - "Emissive": "조명", - "BlendingMode": "혼합 모드", - "Circle": "라운드", - "DefaultCamera": "기본 카메라", - "Please click the map in the map panel.": "지도 패널에서지도를 클릭하십시오!", - "Substractive Blending": "불쌍한 믹스", - "Geometry Component": "기하학적 구성 요소", - "Front Side": "긍정적", - "Arrange Thumbnail": "썸네일 구성", - "Background Image": "배경 이미지", - "Animation Object": "움직이는 물체", - "Displace Scale": "변위 텍스처 비율", - "Default": "기본", - "Hemisphere Light": "반구형 조명", - "Scene Controller": "장면 컨트롤러", - "Amount": "금액", - "Undo": "취소", - "TAA": "시간 앤티 앨리어싱 (TAA)", - "Lid": "냄비 뚜껑", - "All unsaved data will be lost. Are you sure?": "저장하지 않은 모든 데이터가 손실됩니다. 새 장면을 만드시겠습니까?", - "Category": "카테고리", - "Illustrate: Double-click the area below the timeline to add an animation.": "설명 : 타임 라인 아래 영역을 두 번 클릭하여 애니메이션을 추가하십시오.", - "Play New Window": "새로운 창 놀이", - "Scatter": "분산", - "Gamma Input": "감마 입력", - "First Person Controls": "첫 번째보기 컨트롤러", - "ClearCoat": "투명도", - "Back Side": "부정적", - "Triangle": "삼각형 수", - "Material": "소재", - "Multiply Blending": "제품 믹스", - "Language": "언어", - "Side": "제외", - "Ambient": "주변 광", - "Pack Diagram": "패키지 다이어그램", - "Cylinder": "실린더", - "Shininess": "밝기", - "Shadow": "그림자", - "FrontSide": "긍정적", - "RGB Shift Effect": "컬러 시프트 효과", - "Custom Status": "관습", - "Light": "광원", - "FogFar": "멀리 안개", - "Script": "대본", - "Intensity": "강도", - "Bottom": "바닥", - "Export STL": "STL 파일 내보내기", - "Confirm": "확인", - "Listen to mouseup event": "마우스 올리기 이벤트 모니터링", - "New Material": "신소재", - "Camera": "카메라", - "Luminance": "밝기", - "Draw Point": "점을 그리다", - "SkyColor": "하늘색", - "Save Scene": "장면을 저장", - "Message": "메시지", - "LineDashedMaterial": "점선 소재", - "Renderer": "렌더러", - "NoRotate": "회전하지 않음", - "Empty Scene": "빈 장면", - "Blending": "믹스", - "Repeat": "반복", - "Curve Type": "선 종류", - "Basic Shadow": "기본 그림자", - "EndStatus": "종료 상태", - "Scale(R)": "줌 (R)", - "Occlusion&Blur": "", - "Height": "높이", - "RotateSpeed": "회전 속도", - "has no physics helper.": "해당 물리적 ​​모양 도우미가 없습니다.", - "Traceball Controls": "트랙볼 컨트롤러", - "Listen to mousewheel event": "마우스 휠 이벤트 모니터링", - "Lisense": "승인", - "is not available.": "사용할 수 없습니다.", - "HueRotate": "색조", - "Google Map": "구글 맵스", - "None": "아니요", - "Top View": "평면도", - "Mirrored Repeat": "거울 반복", - "AfterimageEffect": "잔상 효과", - "Tube": "파이프 세그먼트", - "Tween Animation": "트윈 애니메이션", - "Directional Light": "평행 광", - "MeshNormalMaterial": "법선 벡터 자료", - "Listen to mousedown event": "마우스 클릭 이벤트 모니터링", - "BumpMap": "범프 텍스처", - "Particle Animation": "입자 애니메이션", - "DisplacementMap": "변위 텍스처", - "Translate(W)": "팬 (W)", - "Body": "몸", - "Play": "플레이", - "Visible": "가시성", - "Spray": "제트", - "Ellipse": "타원", - "Decay": "감쇠", - "NoZoom": "스케일링 안 됨", - "KeyPanSpeed": "버튼 속도", - "Globe": "지구", - "DragToLook": "드래그하여 보려면", - "Fire Component": "화염 조립", - "Set": "설정", - "16 Samples": "16 개 샘플", - "Filter": "필터", - "Quality": "품질", - "Group": "그룹", - "Export OBJ": "obj 파일 내보내기", - "EnableState": "활성화 된 상태", - "Reflect": "반사", - "Clear History": "명확한 역사", - "PixelEffect": "픽셀 효과", - "SSAA": "전체 화면 앨리어싱 제거 (SSAA)", - "SAO": "확장 가능한 주변 폐색 (SAO)", - "Listen to keyup event": "키보드 리프트 이벤트 모니터링", - "GIS Scene": "GIS 장면", - "Near": "가까운 지점", - "Gravity": "중력", - "ClothComponent": "천 조립", - "8 Samples": "샘플 8 개", - "LightMap": "가벼운 질감", - "Teapot": "찻 주전자", - "WireWidth": "와이어 프레임 두께", - "ThrowBall": "작은 공을 던져", - "Far": "멀리", - "Please select object!": "개체를 선택하십시오!", - "Polygon": "얼굴", - "Please select MMD audio.": "MMD 애니메이션에 해당하는 오디오를 클릭하십시오!", - "AnimLayer1": "애니메이션 레이어 1", - "CameraTop": "카메라에서", - "Angle": "각도", - "Reflector Component": "반사 부품", - "PhysicsEnvironment": "물리적 환경", - "Export Editor": "내보내기 편집기", - "Shadow Component": "음영 처리 된 구성 요소", - "Please select texture first.": "먼저이 오브젝트의 텍스처를 선택하십시오!", - "DistortedArc": "왜곡 곡률", - "Cloth": "천", - "PosY": "Y 축 양수", - "Export Geometry": "형상 내보내기", - "Clear Logs": "로그 비우기", - "Quadratic Bezier Curve": "이차 베 지어 곡선", - "Basic Information": "기본 정보", - "Set Scale": "줌 설정", - "Text": "문자", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "썸네일을 구성하면 썸네일 디렉토리가 재생성되고 장면, 모델, 텍스처, 재질, 오디오, 애니메이션, 입자, 사전 설정 본문 및 문자의 썸네일 경로가 수정되므로 먼저 데이터베이스를 수동으로 백업하십시오.", - "Velocity": "속도", - "Upload failed.": "업로드하지 못했습니다!", - "Transform Component": "변위 부품", - "Turbidity": "탁도", - "SpecularMap": "거울 질감", - "32 Samples": "32 개 샘플", - "Delete": "삭제", - "Remove Script": "스크립트 제거", - "GreyScale": "그레이 스케일", - "Color": "색깔", - "ClipBias": "자르기 오프셋", - "Ao Scale": "폐색 텍스처 비율", - "SmokeComponent": "연기 성분", - "Scale": "줌", - "Script name existed.": "스크립트 이름이 복제되었습니다!", - "Total {{totalPage}} Pages": "총 {{totalPage}} 페이지", - "AnimLayer": "애니메이션 레이어", - "Please input": "입력 해주세요", - "Darker": "어둡게", - "Load Successfully!": "성공적으로로드 중입니다!", - "Size": "사이즈", - "Animation": "애니메이션", - "Perlin Terrain": "베를린 지형", - "Add Object": "객체 추가 :", - "New Scene": "새로운 장면", - "Ellipse Curve": "타원 곡선", - "No Blending": "혼합되지 않음", - "RigidBody": "딱딱한 몸", - "Cannot set texture": "질감을 설정할 수 없습니다", - "Light Component": "광원 어셈블리", - "Receive": "받기", - "Property": "속성", - "Collapse": "접는", - "About": "소개", - "Scale Locked": "잠금 줌", - "Ease Func": "보간 기능", - "material has no coordinates.": "소재에 텍스처 좌표가 없습니다!", - "RotateBlue": "푸른 처짐", - "Draw Pologon": "사진", - "Clear indexedDB.": "빈 IndexedDB.", - "Listen to click event": "마우스 클릭 이벤트 청취", - "Exponential": "지수", - "Arrange Mesh": "모델 정리", - "Theme": "테마", - "Anisotropy": "이방성", - "MinPolarAngle": "최소 고도", - "QuadraticBezier Curve": "이차 베 지어 곡선", - "EmissiveMap": "빛나는 텍스처", - "Set Material": "재료 설정", - "Grid": "그리드", - "MinResolution": "최저 해상도", - "Max Volume": "마스터 볼륨", - "Spline": "커브", - "Map": "질감", - "Clone": "복사", - "BlurDepthCutoff": "깊이 분할", - "FlipY": "Y 반전", - "AoMap": "폐색 텍스처", - "MMD Model": "MMD 모델", - "Target": "목표", - "Recursion": "재귀", - "PCF Shadow": "PCF 그림자", - "Clamp To Edge": "스트레치", - "PixelSize": "픽셀 크기", - "Disabled": "비활성화", - "Geometry": "기하학", - "Remove Point": "제거 지점", - "Partition Diagram": "파티션 맵", - "EnableKeys": "활성화 버튼", - "Add": "함께 추가", - "Scene data of string type is needed.": "문자열 유형의 장면 유형 매개 변수가 필요합니다!", - "Cube Texture fetch failed.": "스테레오 텍스처 획득에 실패했습니다!", - "AudioListener": "오디오 청취자", - "Texture": "질감", - "Are you sure to publish all scenes and assets?": "모든 시나리오와 리소스를 정적 ​​웹 사이트로 게시합니까?", - "Options Window": "옵션 창", - "Stop": "그만", - "Transparent": "투명", - "Model Animation": "모델 애니메이션", - "MetalnessMap": "금속 질감", - "BlurRadius": "퍼지 반경", - "Output": "출력", - "Error": "오차", - "Plane": "비행기", - "ActiveLock": "대기 및 활성화", - "Cube texture has already been uploaded.": "스테레오 텍스처는 서버 측에 이미 존재하며 반복적으로 업로드 할 필요가 없습니다.", - "Edit": "편집", - "ShaderMaterial": "셰이더 재질", - "Fragment": "출처", - "Close": "닫기", - "Options": "옵션", - "Pressure": "압력", - "Histogram": "히스토그램", - "DampingFactor": "댐핑 계수", - "Vertical Line": "수직선", - "ConstrainVertical": "고도 상승 각도", - "Category Edit": "카테고리 편집", - "Damp": "댐핑", - "Wireframe": "와이어 프레임", - "MinFilter": "필터링 감소", - "Set Geometry.": "형상을 설정하십시오.", - "Skeletal Animation": "스켈 레탈 애니메이션", - "MaxPolarAngle": "최대 앙각", - "NegZ": "Z 축 음수", - "Export Static Website": "정적 웹 사이트 게시", - "Undo/Redo history will be cleared. Are you sure?": "실행 취소 / 다시 실행 기록이 지워집니다. ", - "Point": "포인트", - "WrapS": "측면 충전", - "Width": "폭", - "Export GLTF": "GLTF 파일 내보내기", - "Export PLY": "플라이 파일 내보내기", - "Penumbra": "반 그림자", - "Custom Blending": "커스텀 블렌드", - "Water Component": "물 성분", - "Pie Chart": "파이 차트", - "Move Object": "움직이는 물체", - "Sky": "하늘", - "Occlusion": "폐색", - "Blinn": "브린", - "Ambient Light": "주변 광", - "ParticleEmitter": "파티클 이미 터", - "Distance": "거리", - "Add Point": "포인트 추가", - "FogColor": "안개 색", - "Bokeh Effect": "배경 흐림 효과", - "Shader Program Info": "셰이더 프로그램 정보", - "PosX": "X 축 포지티브", - "MieCofficient": " 꺼짐 계수", - "CameraNear": "근처 카메라", - "WrapT": "수직 채우기", - "Settings": "설정", - "Horizontal Line": "수평선", - "ZoomSpeed": "줌 속도", - "Material Component": "재료 성분", - "Publish Scene": "릴리즈 장면", - "2 Samples": "샘플 2 개", - "Prefab": "프리셋 바디", - "No Image": "사진이 없습니다", - "Depth": "깊이", - "Normal Blending": "일반적인 혼합", - "Help": "도움말", - "ThetaLength": "위도 뒤집기", - "MeshPhysicalMaterial": "물리적 재료", - "1 Sample": "샘플 1 개", - "Radius": "반경", - "Water": "물", - "Specular": "거울 정도", - "Export Object": "객체 내보내기", - "New": "새로운", - "Tree Diagram": "트리 다이어그램", - "VerticalMax": "최대 앙각", - "Segments": "세분화", - "CameraBottom": "카메라 아래", - "Source": "소스 코드", - "DepthSegments": "깊은 세분화", - "Waiting...": "기다려주세요 ...", - "StaticMoving": "정적 운동", - "Bar Chart": "막대 차트", - "Glitch Effect": "글리치 효과", - "Invert": "컬러 반전", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "텍스처를 마치면 이름 뒤에 숫자와 밑줄이 제거되고, 데이터 테이블과 텍스처 카탈로그가 재생성되고, 빈 폴더와 참조되지 않은 텍스처 파일이 제거됩니다. 시스템은 자동으로 데이터 테이블과 텍스처 카탈로그를 백업합니다.", - "Level": "등급", - "AnimLayer3": "애니메이션 레이어 3", - "Please select MMD animation only.": "MMD 모델 애니메이션 만 허용됩니다!", - "Basic Info": "기본 정보", - "CollisionConfig": "충돌 구성", - "MinAzimuthAngle": "최소 오리엔테이션", - "Rotate(E)": "회전 (E)", - "SoftVolume": "부드러운 몸", - "Export STL Binary": "STL 바이너리 내보내기", - "Please save scene first.": "장면을 먼저 저장하십시오!", - "Execute after program stopped": "프로그램 실행이 완료된 후 한 번 실행", - "SMAA": "다중 샘플 앤티 앨리어싱 (SMAA)", - "Shape": "모양", - "ClearCoatRoughness": "투명 거칠기", - "MaxDistance": "최대 거리", - "Fov": "시야", - "HeightCoef": "높이 계수", - "Enabled": "사용", - "Key Value Label": "키 값 태그", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "모델을 정렬하면 이름 뒤에 숫자와 밑줄이 제거되고, 데이터 테이블, 모델 카탈로그를 재생성하고, 빈 폴더 및 참조되지 않은 모델 파일을 제거합니다. 시스템은 데이터 테이블, 모델 카탈로그를 정렬할지 여부를 자동으로 백업합니까?", - "Opacity": "불투명도", - "Saved into indexDB.": "IndexedDB에 저장하십시오.", - "LineBasicMaterial": "선 재료", - "AnimLayer2": "애니메이션 레이어 2", - "IsLocked": "잠금 여부", - "Dark Color": "어두운", - "Logs": "로그", - "Please check the layer.": "삭제하려는 레이어를 선택하십시오!", - "Sidebar": "사이드 바", - "Focus": "초점 길이", - "Vertex": "꼭짓점 수", - "Listen to mousemove event": "마우스 움직임 이벤트 모니터링", - "Update UUID": "UUID 업데이트", - "MagFilter": "확대 필터", - "Side View": "측면도", - "Form Panel": "형태", - "OK": "결정", - "Roughness": "거칠기", - "Gauge": "계기", - "VelocitySpread": "속도 발산", - "Dig": "파기", - "Fire": "불꽃", - "Light Color": "연한 색", - "Listen to resize event": "모니터 화면 크기 변경 이벤트", - "Face Colors": "얼굴색", - "Rect Area Light": "직사각형 조명", - "Documents": "문서", - "BackSide": "다시", - "Auto Play": "자동 재생", - "ShaderInfo": "셰이더 정보", - "OpenEnded": "양쪽 끝에서 열기", - "Time": "시간", - "Scene": "장면", - "Camera Component": "카메라 구성 요소", - "Delete successfully!": "성공적으로 삭제되었습니다!", - "Bias": "편차", - "GroundColor": "그라운드 컬러", - "Multiply": "곱하기", - "Frag Shader": "소스 셰이더", - "PremultiplyAlpha": "투명하게 남김", - "Dragging animation on other animation is not allowed.": "애니메이션을 다른 애니메이션으로 드래그 할 수 없습니다.", - "Particle": "입자", - "ThetaStart": "위도 시작", - "HeightSegments": "높이 분할", - "WildMode": "미친 모드", - "NormalMap": "일반 텍스처", - "2D": "2 차원", - "Play Audio": "음악 재생", - "AccelerationSpread": "가속 발산", - "BackgroundColor": "배경색", - "LookVertical": "찾아 봐", - "MaxBlur": "최대 흐림", - "Flat Shading": "다듬기", - "Please click the animation in the animation panel.": "애니메이션 패널에서 애니메이션을 클릭하십시오!", - "Query": "문의", - "PCF Soft Shadow": "PCF 부드러운 그림자", - "Delete layer will delete all the anims on the layer. Are you sure?": "레이어를 삭제하면 레이어의 모든 애니메이션이 삭제됩니다. ", - "Loading...": "불러오는 중 ...", - "BeginStatus": "시작 상태", - "GenerateMipmaps": "오픈 레벨", - "Box": "큐브", - "EnableRotate": "회전 활성화", - "Execute before scene render": "장면이 렌더링되기 전에 한 번 실행", - "SliceSpacing": "슬라이스 두께", - "MeshPhongMaterial": "펭의 재료", - "Please click material on material panel.": "재료 패널에서 재료를 클릭하십시오!", - "Shader Terrain": "셰이더 지형", - "Cast": "생성", - "RadiusTop": "최고 반경", - "Arrange Map": "마무리지도", - "SphereShape": "구체", - "Vertex Shader": "버텍스 쉐이더", - "Mapping": "매핑", - "Thumbnail": "썸네일", - "Label": "라벨", - "The object you selected is not geometry.": "선택된 객체에는 지오메트리 속성이 없습니다.", - "Program stoped.": "프로그램이 성공적으로 중지되었습니다.", - "Save As": "다른 이름으로 저장", - "CatmullRom curve should have at least 3 points.": " Catmull Rom 곡선은 최소한 세 점을 가져야합니다!", - "Physics Cloth": "물리적 천 추가", - "Rotate": "회전", - "Upload": "업로드", - "Bing Map": "빙지도", - "Add Script": "스크립트 추가", - "Offset": "오프셋", - "RadiusBottom": "하단 반경", - "Set Script": "스크립트 설정", - "Add physics cloth successfully": "물리적 천을 성공적으로 추가하십시오!", - "Volume": "루프 플레이", - "Save Successfully.": "성공적으로 저장되었습니다.", - "Set Scene": "장면 설정", - "BlurStdDev": "표준 편차", - "MaxAge": "기간", - "Tool": "도구", - "PhiLength": "회전 경도", - "Plant Trees": "배치 심기 나무", - "Please click the map in the Map Panel.": "텍스처 패널에서 스테레오 맵을 클릭하십시오!", - "PhiStart": "경도 시작", - "Helpers": "도우미", - "Data Source Manage": "데이터 소스 관리", - "Torus": "타이어", - "AlphaMap": "투명한 질감", - "Blur": "흐림", - "Create empty scene successfully.": "빈 장면이 성공적으로 만들어졌습니다!", - "Are you sure to export the editor?": "편집기를 내보내시겠습니까?", - "Set Rotation": "회전 설정", - "NegY": "Y 축 음수", - "Audio": "오디오", - "Time Disk": "타임 디스크", - "RawShaderMaterial": "생 셰이더 재질", - "Set Geometry": "형상 설정", - "Examples": "예", - "KernalRadius": "코어 반경", - "TubeArc": "긴 호", - "Vertex Color": "정점 색상", - "ScreenSpacePanning": "화면 좌표", - "EnvMap": "환경 질감" -} \ No newline at end of file + "Smoke": "연기", + "MeshDepthMaterial": "깊이 재료", + "Chord Graph": "코드 다이어그램", + "Rotate Center": "회전 센터", + "Halftone Effect": "하프 톤 효과", + "History": "연혁", + "Gamma Output": "감마 출력", + "Spot Light": "스포트라이트", + "MetalNess": "금속성", + "CameraRight": "카메라 오른쪽", + "Loop": "루프 플레이", + "Play Fullscreen": "전체 화면 재생", + "HeightMax": "최대 높이", + "Execute after scene render": "장면이 렌더링 된 후 한 번 실행", + "TubelarSegments": "관형 세그먼트", + "Author": "저자", + "Save": "저장", + "Acceleration": "가속", + "Terrain": "지형", + "Gamma Factor": "감마 계수", + "Directional": "평행 광", + "MeshBasicMaterial": "기본 재료", + "4 Samples": "4 개의 샘플", + "Shader cannot be parsed.": "셰이더 정보는 역 직렬화 할 수 없습니다.", + "RepeatNum": "채우기 횟수", + "Are you sure to export the current scene?": "현재 장면을 내보내시겠습니까?", + "PositionSpread": "위치 차이", + "Category List": "카테고리 목록", + "Name": "이름", + "Line Chart": "꺾은 선형 차트", + "FogDensity": "안개 농도", + "LMesh Component": "LMesh 구성 요소", + "Aperture": "조리개", + "PanSpeed": "번역 속도", + "EnablePan": "패닝 활성화", + "PointCloudMaterial": "포인트 클라우드 소재", + "CameraLeft": "카메라 왼쪽", + "WidthSegments": "폭 세분화", + "Object": "객체 수", + "Inertia": "관성", + "Tension": "장력", + "Cancel": "취소", + "Image upload failed!": "이미지 업로드에 실패했습니다!", + "TextureSize": "질감 크기", + "CubicBezier Curve": "큐빅 베 지어 곡선", + "Icosahedron": "정 이십 면체", + "Saturate": "채도", + "Please click the audio in the Audio Panel.": "오디오 패널에서 오디오를 클릭하십시오!", + "Normal": "보통", + "AutoForward": "자동 진행", + "MieDirectionalG": " 연장 방향", + "Detail": "세부 사항", + "New Script": "새로운 스크립트", + "AutoRotateSpeed": "회전 속도", + "Line Curve": "선분", + "Type": "타입", + "MapSize": "질감 크기", + "Export Scene": "장면 내보내기", + "Select": "선택", + "MeshStandardMaterial": "표준 재료", + "Sepia": "레트로", + "Button": "버튼", + "DotScreenEffect": "격자 효과", + "Model": "모형", + "Decal": "아플리케", + "Image upload successfully!": "이미지가 성공적으로 업로드되었습니다!", + "Mass": "품질", + "Additive Blending": "그리고 섞기", + "Background": "배경", + "Remove Object": "객체 제거", + "Pointer Lock Controls": "포인터 잠금 컨트롤러", + "maxAgeSpread": "장시간 발산", + "SSAO": "화면 공간 주변 광 음영 (SSAO)", + "Square": "광장", + "Encoding": "코딩", + "Point Light": "포인트 소스", + "Perspective View": "관점", + "Sone Words": "일부 텍스트", + "TimeSpan": "기간", + "Please enter material name": "재료 이름을 입력하십시오", + "EnableZoom": "줌 사용", + "Camera Animation": "카메라 애니메이션", + "SoftBodyRigidBodyCollisionConfig": "소프트 바디 충돌 구성", + "MaxAzimuthAngle": "최대 오리엔테이션", + "Information": "정보", + "Program started.": "프로그램이 성공적으로 시작되었습니다.", + "SizeSpread": "차원의 발산", + "Please upload all the textures before save.": "모든 스테레오 맵을 업로드하고 저장을 클릭하십시오!", + "LookSpeed": "시청 속도", + "BoxShape": "큐브", + "Beauty&Occlusion": "", + "CatmullRom Curve": " Catmull Rom 곡선", + "Halo": "헤일로", + "Double Side": "양면", + "ParticleCount": "입자 수", + "Edit Script": "스크립트 편집", + "Listen to keydown event": "키보드 프레스 이벤트 모니터", + "Scatter Plot": "산포도", + "MovementSpeed": "이동 속도", + "Unbiased": "편차 없음", + "Centripetal Force": "구심력", + "Cube Texture": "스테레오 맵", + "Skin": "피부", + "EndTime": "종료 시간", + "Background Music": "배경 음악", + "Script saved successfully!": "스크립트가 성공적으로 저장되었습니다!", + "MeshLambertMaterial": "램버트 소재", + "FXAA Component": "빠른 근사 앤티 앨리어싱 (FXAA)", + "Raise Terrain": "지형을 올립니다", + "CameraFar": "카메라까지", + "Force Directed Graph": "힘 중심지도", + "Line": "선", + "Bump Scale": "범프 텍스처 비율", + "SceneComponent": "장면 구성 요소", + "RadialSegments": "방사형 분할", + "Preview": "미리보기", + "Publish website": "웹 사이트 게시", + "Clear": "비우기", + "FogNear": "포인트 근처 안개", + "FitLid": "뚜껑에 적합", + "Assets": "자원", + "Exporting...": "내보내는 중 ...", + "RoughnessMap": "거친 질감", + "Reduce Terrain": "지형 축소", + "Current Status": "현재 상태", + "Position": "위치", + "VerticalMin": "최소 고도", + "Format": "체재", + "AlphaTest": "알파 테스트", + "Rayleigh": "레일리", + "Shader Program": "쉐이딩 프로그램", + "Search Content": "컨텐츠 검색", + "Beauty": "아름답다", + "Panel": "패널", + "PosZ": "Z 축 포지티브", + "Listen to dblclick event": "마우스 더블 클릭 이벤트 모니터링", + "Grayscale": "그레이 스케일", + "Lighter": "밝게", + "NoPan": "패닝하지 않음", + "Reflectivity": "반사율", + "BeginTime": "시작 시간", + "No Colors": "무색", + "Front View": "정면도", + "RotateGreen": "녹색 편향", + "Chord": "끈", + "Contrast": "대조", + "Arc": "라디안", + "Texture Settings": "텍스처 설정", + "Please select camera animation only.": "MMD 카메라 애니메이션 만 허용됩니다!", + "DefaultCollisionConfig": "기본 충돌 구성", + "Torus Knot": "꼬임", + "You should select Cube Texture.": "스테레오 맵만 허용하십시오!", + "Date": "날짜", + "Please select camera animation.": "MMD 카메라 애니메이션 만 허용됩니다!", + "Closed": "휴무", + "Execute each frame during running": "프로그램을 실행하는 동안 모든 프레임을 실행해야합니다.", + "Not Set": "미 설정", + "Component": "구성 요소", + "GIS Component": "GIS 구성 요소", + "MinDistance": "최소 거리", + "Character": "캐릭터", + "Redo": "재실행", + "RotateRed": "붉은 처짐", + "EnableDamping": "충격 흡수 가능", + "Cannot deserialize scene data.": "장면 데이터를 파싱 할 수 없습니다!", + "AutoRotate": "자동 회전", + "SpriteMaterial": "엘프 소재", + "Translate": "팬", + "Fly Controls": "비행 컨트롤러", + "Cluster Diagram": "클러스터 다이어그램", + "Skeleton": "뼈", + "Please select category.": "카테고리를 선택하십시오!", + "Brightness": "밝기", + "UnpackAlignment": "압축 풀기", + "Create Script": "스크립트 작성", + "Tianditu Map": "일지도", + "Hierachy": "장면", + "Visual": "시각화", + "Draw Line": "선 그리기", + "Multi Modify": "여러 변경", + "HeightSpeed": "높이 속도", + "Furface": "외관", + "HeightMin": "최소 높이", + "Vertex Colors": "정점 색상", + "Delete Script": "스크립트 삭제", + "Set Position": "위치 설정", + "NegX": "X 축 음수", + "Please open scene first.": "장면을 먼저여십시오!", + "PhysicsType": "물리적 유형", + "is not existed in the scene.": "장면에 존재하지 않습니다.", + "Lathe": "와인 글라스", + "Fog": "안개", + "Filter Animation": "필터 애니메이션", + "No Name": "Iimt_Digital_Twin", + "Sprite": "엘프", + "Record": "녹화", + "Solid Color": "단색", + "Orbit Controls": "트랙 컨트롤러", + "Linear": "선형", + "Sphere": "구체", + "Emissive": "조명", + "BlendingMode": "혼합 모드", + "Circle": "라운드", + "DefaultCamera": "기본 카메라", + "Please click the map in the map panel.": "지도 패널에서지도를 클릭하십시오!", + "Substractive Blending": "불쌍한 믹스", + "Geometry Component": "기하학적 구성 요소", + "Front Side": "긍정적", + "Arrange Thumbnail": "썸네일 구성", + "Background Image": "배경 이미지", + "Animation Object": "움직이는 물체", + "Displace Scale": "변위 텍스처 비율", + "Default": "기본", + "Hemisphere Light": "반구형 조명", + "Scene Controller": "장면 컨트롤러", + "Amount": "금액", + "Undo": "취소", + "TAA": "시간 앤티 앨리어싱 (TAA)", + "Lid": "냄비 뚜껑", + "All unsaved data will be lost. Are you sure?": "저장하지 않은 모든 데이터가 손실됩니다. 새 장면을 만드시겠습니까?", + "Category": "카테고리", + "Illustrate: Double-click the area below the timeline to add an animation.": "설명 : 타임 라인 아래 영역을 두 번 클릭하여 애니메이션을 추가하십시오.", + "Play New Window": "새로운 창 놀이", + "Scatter": "분산", + "Gamma Input": "감마 입력", + "First Person Controls": "첫 번째보기 컨트롤러", + "ClearCoat": "투명도", + "Back Side": "부정적", + "Triangle": "삼각형 수", + "Material": "소재", + "Multiply Blending": "제품 믹스", + "Language": "언어", + "Side": "제외", + "Ambient": "주변 광", + "Pack Diagram": "패키지 다이어그램", + "Cylinder": "실린더", + "Shininess": "밝기", + "Shadow": "그림자", + "FrontSide": "긍정적", + "RGB Shift Effect": "컬러 시프트 효과", + "Custom Status": "관습", + "Light": "광원", + "FogFar": "멀리 안개", + "Script": "대본", + "Intensity": "강도", + "Bottom": "바닥", + "Export STL": "STL 파일 내보내기", + "Confirm": "확인", + "Listen to mouseup event": "마우스 올리기 이벤트 모니터링", + "New Material": "신소재", + "Camera": "카메라", + "Luminance": "밝기", + "Draw Point": "점을 그리다", + "SkyColor": "하늘색", + "Save Scene": "장면을 저장", + "Message": "메시지", + "LineDashedMaterial": "점선 소재", + "Renderer": "렌더러", + "NoRotate": "회전하지 않음", + "Empty Scene": "빈 장면", + "Blending": "믹스", + "Repeat": "반복", + "Curve Type": "선 종류", + "Basic Shadow": "기본 그림자", + "EndStatus": "종료 상태", + "Scale(R)": "줌 (R)", + "Occlusion&Blur": "", + "Height": "높이", + "RotateSpeed": "회전 속도", + "has no physics helper.": "해당 물리적 ​​모양 도우미가 없습니다.", + "Traceball Controls": "트랙볼 컨트롤러", + "Listen to mousewheel event": "마우스 휠 이벤트 모니터링", + "Lisense": "승인", + "is not available.": "사용할 수 없습니다.", + "HueRotate": "색조", + "Google Map": "구글 맵스", + "None": "아니요", + "Top View": "평면도", + "Mirrored Repeat": "거울 반복", + "AfterimageEffect": "잔상 효과", + "Tube": "파이프 세그먼트", + "Tween Animation": "트윈 애니메이션", + "Directional Light": "평행 광", + "MeshNormalMaterial": "법선 벡터 자료", + "Listen to mousedown event": "마우스 클릭 이벤트 모니터링", + "BumpMap": "범프 텍스처", + "Particle Animation": "입자 애니메이션", + "DisplacementMap": "변위 텍스처", + "Translate(W)": "팬 (W)", + "Body": "몸", + "Play": "플레이", + "Visible": "가시성", + "Spray": "제트", + "Ellipse": "타원", + "Decay": "감쇠", + "NoZoom": "스케일링 안 됨", + "KeyPanSpeed": "버튼 속도", + "Globe": "지구", + "DragToLook": "드래그하여 보려면", + "Fire Component": "화염 조립", + "Set": "설정", + "16 Samples": "16 개 샘플", + "Filter": "필터", + "Quality": "품질", + "Group": "그룹", + "Export OBJ": "obj 파일 내보내기", + "EnableState": "활성화 된 상태", + "Reflect": "반사", + "Clear History": "명확한 역사", + "PixelEffect": "픽셀 효과", + "SSAA": "전체 화면 앨리어싱 제거 (SSAA)", + "SAO": "확장 가능한 주변 폐색 (SAO)", + "Listen to keyup event": "키보드 리프트 이벤트 모니터링", + "GIS Scene": "GIS 장면", + "Near": "가까운 지점", + "Gravity": "중력", + "ClothComponent": "천 조립", + "8 Samples": "샘플 8 개", + "LightMap": "가벼운 질감", + "Teapot": "찻 주전자", + "WireWidth": "와이어 프레임 두께", + "ThrowBall": "작은 공을 던져", + "Far": "멀리", + "Please select object!": "개체를 선택하십시오!", + "Polygon": "얼굴", + "Please select MMD audio.": "MMD 애니메이션에 해당하는 오디오를 클릭하십시오!", + "AnimLayer1": "애니메이션 레이어 1", + "CameraTop": "카메라에서", + "Angle": "각도", + "Reflector Component": "반사 부품", + "PhysicsEnvironment": "물리적 환경", + "Export Editor": "내보내기 편집기", + "Shadow Component": "음영 처리 된 구성 요소", + "Please select texture first.": "먼저이 오브젝트의 텍스처를 선택하십시오!", + "DistortedArc": "왜곡 곡률", + "Cloth": "천", + "PosY": "Y 축 양수", + "Export Geometry": "형상 내보내기", + "Clear Logs": "로그 비우기", + "Quadratic Bezier Curve": "이차 베 지어 곡선", + "Basic Information": "기본 정보", + "Set Scale": "줌 설정", + "Text": "문자", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "썸네일을 구성하면 썸네일 디렉토리가 재생성되고 장면, 모델, 텍스처, 재질, 오디오, 애니메이션, 입자, 사전 설정 본문 및 문자의 썸네일 경로가 수정되므로 먼저 데이터베이스를 수동으로 백업하십시오.", + "Velocity": "속도", + "Upload failed.": "업로드하지 못했습니다!", + "Transform Component": "변위 부품", + "Turbidity": "탁도", + "SpecularMap": "거울 질감", + "32 Samples": "32 개 샘플", + "Delete": "삭제", + "Remove Script": "스크립트 제거", + "GreyScale": "그레이 스케일", + "Color": "색깔", + "ClipBias": "자르기 오프셋", + "Ao Scale": "폐색 텍스처 비율", + "SmokeComponent": "연기 성분", + "Scale": "줌", + "Script name existed.": "스크립트 이름이 복제되었습니다!", + "Total {{totalPage}} Pages": "총 {{totalPage}} 페이지", + "AnimLayer": "애니메이션 레이어", + "Please input": "입력 해주세요", + "Darker": "어둡게", + "Load Successfully!": "성공적으로로드 중입니다!", + "Size": "사이즈", + "Animation": "애니메이션", + "Perlin Terrain": "베를린 지형", + "Add Object": "객체 추가 :", + "New Scene": "새로운 장면", + "Ellipse Curve": "타원 곡선", + "No Blending": "혼합되지 않음", + "RigidBody": "딱딱한 몸", + "Cannot set texture": "질감을 설정할 수 없습니다", + "Light Component": "광원 어셈블리", + "Receive": "받기", + "Property": "속성", + "Collapse": "접는", + "About": "소개", + "Scale Locked": "잠금 줌", + "Ease Func": "보간 기능", + "material has no coordinates.": "소재에 텍스처 좌표가 없습니다!", + "RotateBlue": "푸른 처짐", + "Draw Pologon": "사진", + "Clear indexedDB.": "빈 IndexedDB.", + "Listen to click event": "마우스 클릭 이벤트 청취", + "Exponential": "지수", + "Arrange Mesh": "모델 정리", + "Theme": "테마", + "Anisotropy": "이방성", + "MinPolarAngle": "최소 고도", + "QuadraticBezier Curve": "이차 베 지어 곡선", + "EmissiveMap": "빛나는 텍스처", + "Set Material": "재료 설정", + "Grid": "그리드", + "MinResolution": "최저 해상도", + "Max Volume": "마스터 볼륨", + "Spline": "커브", + "Map": "질감", + "Clone": "복사", + "BlurDepthCutoff": "깊이 분할", + "FlipY": "Y 반전", + "AoMap": "폐색 텍스처", + "MMD Model": "MMD 모델", + "Target": "목표", + "Recursion": "재귀", + "PCF Shadow": "PCF 그림자", + "Clamp To Edge": "스트레치", + "PixelSize": "픽셀 크기", + "Disabled": "비활성화", + "Geometry": "기하학", + "Remove Point": "제거 지점", + "Partition Diagram": "파티션 맵", + "EnableKeys": "활성화 버튼", + "Add": "함께 추가", + "Scene data of string type is needed.": "문자열 유형의 장면 유형 매개 변수가 필요합니다!", + "Cube Texture fetch failed.": "스테레오 텍스처 획득에 실패했습니다!", + "AudioListener": "오디오 청취자", + "Texture": "질감", + "Are you sure to publish all scenes and assets?": "모든 시나리오와 리소스를 정적 ​​웹 사이트로 게시합니까?", + "Options Window": "옵션 창", + "Stop": "그만", + "Transparent": "투명", + "Model Animation": "모델 애니메이션", + "MetalnessMap": "금속 질감", + "BlurRadius": "퍼지 반경", + "Output": "출력", + "Error": "오차", + "Plane": "비행기", + "ActiveLock": "대기 및 활성화", + "Cube texture has already been uploaded.": "스테레오 텍스처는 서버 측에 이미 존재하며 반복적으로 업로드 할 필요가 없습니다.", + "Edit": "편집", + "ShaderMaterial": "셰이더 재질", + "Fragment": "출처", + "Close": "닫기", + "Options": "옵션", + "Pressure": "압력", + "Histogram": "히스토그램", + "DampingFactor": "댐핑 계수", + "Vertical Line": "수직선", + "ConstrainVertical": "고도 상승 각도", + "Category Edit": "카테고리 편집", + "Damp": "댐핑", + "Wireframe": "와이어 프레임", + "MinFilter": "필터링 감소", + "Set Geometry.": "형상을 설정하십시오.", + "Skeletal Animation": "스켈 레탈 애니메이션", + "MaxPolarAngle": "최대 앙각", + "NegZ": "Z 축 음수", + "Export Static Website": "정적 웹 사이트 게시", + "Undo/Redo history will be cleared. Are you sure?": "실행 취소 / 다시 실행 기록이 지워집니다. ", + "Point": "포인트", + "WrapS": "측면 충전", + "Width": "폭", + "Export GLTF": "GLTF 파일 내보내기", + "Export PLY": "플라이 파일 내보내기", + "Penumbra": "반 그림자", + "Custom Blending": "커스텀 블렌드", + "Water Component": "물 성분", + "Pie Chart": "파이 차트", + "Move Object": "움직이는 물체", + "Sky": "하늘", + "Occlusion": "폐색", + "Blinn": "브린", + "Ambient Light": "주변 광", + "ParticleEmitter": "파티클 이미 터", + "Distance": "거리", + "Add Point": "포인트 추가", + "FogColor": "안개 색", + "Bokeh Effect": "배경 흐림 효과", + "Shader Program Info": "셰이더 프로그램 정보", + "PosX": "X 축 포지티브", + "MieCofficient": " 꺼짐 계수", + "CameraNear": "근처 카메라", + "WrapT": "수직 채우기", + "Settings": "설정", + "Horizontal Line": "수평선", + "ZoomSpeed": "줌 속도", + "Material Component": "재료 성분", + "Publish Scene": "릴리즈 장면", + "2 Samples": "샘플 2 개", + "Prefab": "프리셋 바디", + "No Image": "사진이 없습니다", + "Depth": "깊이", + "Normal Blending": "일반적인 혼합", + "Help": "도움말", + "ThetaLength": "위도 뒤집기", + "MeshPhysicalMaterial": "물리적 재료", + "1 Sample": "샘플 1 개", + "Radius": "반경", + "Water": "물", + "Specular": "거울 정도", + "Export Object": "객체 내보내기", + "New": "새로운", + "Tree Diagram": "트리 다이어그램", + "VerticalMax": "최대 앙각", + "Segments": "세분화", + "CameraBottom": "카메라 아래", + "Source": "소스 코드", + "DepthSegments": "깊은 세분화", + "Waiting...": "기다려주세요 ...", + "StaticMoving": "정적 운동", + "Bar Chart": "막대 차트", + "Glitch Effect": "글리치 효과", + "Invert": "컬러 반전", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "텍스처를 마치면 이름 뒤에 숫자와 밑줄이 제거되고, 데이터 테이블과 텍스처 카탈로그가 재생성되고, 빈 폴더와 참조되지 않은 텍스처 파일이 제거됩니다. 시스템은 자동으로 데이터 테이블과 텍스처 카탈로그를 백업합니다.", + "Level": "등급", + "AnimLayer3": "애니메이션 레이어 3", + "Please select MMD animation only.": "MMD 모델 애니메이션 만 허용됩니다!", + "Basic Info": "기본 정보", + "CollisionConfig": "충돌 구성", + "MinAzimuthAngle": "최소 오리엔테이션", + "Rotate(E)": "회전 (E)", + "SoftVolume": "부드러운 몸", + "Export STL Binary": "STL 바이너리 내보내기", + "Please save scene first.": "장면을 먼저 저장하십시오!", + "Execute after program stopped": "프로그램 실행이 완료된 후 한 번 실행", + "SMAA": "다중 샘플 앤티 앨리어싱 (SMAA)", + "Shape": "모양", + "ClearCoatRoughness": "투명 거칠기", + "MaxDistance": "최대 거리", + "Fov": "시야", + "HeightCoef": "높이 계수", + "Enabled": "사용", + "Key Value Label": "키 값 태그", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "모델을 정렬하면 이름 뒤에 숫자와 밑줄이 제거되고, 데이터 테이블, 모델 카탈로그를 재생성하고, 빈 폴더 및 참조되지 않은 모델 파일을 제거합니다. 시스템은 데이터 테이블, 모델 카탈로그를 정렬할지 여부를 자동으로 백업합니까?", + "Opacity": "불투명도", + "Saved into indexDB.": "IndexedDB에 저장하십시오.", + "LineBasicMaterial": "선 재료", + "AnimLayer2": "애니메이션 레이어 2", + "IsLocked": "잠금 여부", + "Dark Color": "어두운", + "Logs": "로그", + "Please check the layer.": "삭제하려는 레이어를 선택하십시오!", + "Sidebar": "사이드 바", + "Focus": "초점 길이", + "Vertex": "꼭짓점 수", + "Listen to mousemove event": "마우스 움직임 이벤트 모니터링", + "Update UUID": "UUID 업데이트", + "MagFilter": "확대 필터", + "Side View": "측면도", + "Form Panel": "형태", + "OK": "결정", + "Roughness": "거칠기", + "Gauge": "계기", + "VelocitySpread": "속도 발산", + "Dig": "파기", + "Fire": "불꽃", + "Light Color": "연한 색", + "Listen to resize event": "모니터 화면 크기 변경 이벤트", + "Face Colors": "얼굴색", + "Rect Area Light": "직사각형 조명", + "Documents": "문서", + "BackSide": "다시", + "Auto Play": "자동 재생", + "ShaderInfo": "셰이더 정보", + "OpenEnded": "양쪽 끝에서 열기", + "Time": "시간", + "Scene": "장면", + "Camera Component": "카메라 구성 요소", + "Delete successfully!": "성공적으로 삭제되었습니다!", + "Bias": "편차", + "GroundColor": "그라운드 컬러", + "Multiply": "곱하기", + "Frag Shader": "소스 셰이더", + "PremultiplyAlpha": "투명하게 남김", + "Dragging animation on other animation is not allowed.": "애니메이션을 다른 애니메이션으로 드래그 할 수 없습니다.", + "Particle": "입자", + "ThetaStart": "위도 시작", + "HeightSegments": "높이 분할", + "WildMode": "미친 모드", + "NormalMap": "일반 텍스처", + "2D": "2 차원", + "Play Audio": "음악 재생", + "AccelerationSpread": "가속 발산", + "BackgroundColor": "배경색", + "LookVertical": "찾아 봐", + "MaxBlur": "최대 흐림", + "Flat Shading": "다듬기", + "Please click the animation in the animation panel.": "애니메이션 패널에서 애니메이션을 클릭하십시오!", + "Query": "문의", + "PCF Soft Shadow": "PCF 부드러운 그림자", + "Delete layer will delete all the anims on the layer. Are you sure?": "레이어를 삭제하면 레이어의 모든 애니메이션이 삭제됩니다. ", + "Loading...": "불러오는 중 ...", + "BeginStatus": "시작 상태", + "GenerateMipmaps": "오픈 레벨", + "Box": "큐브", + "EnableRotate": "회전 활성화", + "Execute before scene render": "장면이 렌더링되기 전에 한 번 실행", + "SliceSpacing": "슬라이스 두께", + "MeshPhongMaterial": "펭의 재료", + "Please click material on material panel.": "재료 패널에서 재료를 클릭하십시오!", + "Shader Terrain": "셰이더 지형", + "Cast": "생성", + "RadiusTop": "최고 반경", + "Arrange Map": "마무리지도", + "SphereShape": "구체", + "Vertex Shader": "버텍스 쉐이더", + "Mapping": "매핑", + "Thumbnail": "썸네일", + "Label": "라벨", + "The object you selected is not geometry.": "선택된 객체에는 지오메트리 속성이 없습니다.", + "Program stoped.": "프로그램이 성공적으로 중지되었습니다.", + "Save As": "다른 이름으로 저장", + "CatmullRom curve should have at least 3 points.": " Catmull Rom 곡선은 최소한 세 점을 가져야합니다!", + "Physics Cloth": "물리적 천 추가", + "Rotate": "회전", + "Upload": "업로드", + "Bing Map": "빙지도", + "Add Script": "스크립트 추가", + "Offset": "오프셋", + "RadiusBottom": "하단 반경", + "Set Script": "스크립트 설정", + "Add physics cloth successfully": "물리적 천을 성공적으로 추가하십시오!", + "Volume": "루프 플레이", + "Save Successfully.": "성공적으로 저장되었습니다.", + "Set Scene": "장면 설정", + "BlurStdDev": "표준 편차", + "MaxAge": "기간", + "Tool": "도구", + "PhiLength": "회전 경도", + "Plant Trees": "배치 심기 나무", + "Please click the map in the Map Panel.": "텍스처 패널에서 스테레오 맵을 클릭하십시오!", + "PhiStart": "경도 시작", + "Helpers": "도우미", + "Data Source Manage": "데이터 소스 관리", + "Torus": "타이어", + "AlphaMap": "투명한 질감", + "Blur": "흐림", + "Create empty scene successfully.": "빈 장면이 성공적으로 만들어졌습니다!", + "Are you sure to export the editor?": "편집기를 내보내시겠습니까?", + "Set Rotation": "회전 설정", + "NegY": "Y 축 음수", + "Audio": "오디오", + "Time Disk": "타임 디스크", + "RawShaderMaterial": "생 셰이더 재질", + "Set Geometry": "형상 설정", + "Examples": "예", + "KernalRadius": "코어 반경", + "TubeArc": "긴 호", + "Vertex Color": "정점 색상", + "ScreenSpacePanning": "화면 좌표", + "EnvMap": "환경 질감", + "Configure Animation": "애니메이션 구성", + "Please select the animation target": "애니메이션 대상을 선택하십시오.", + "Are you sure you want to delete this animation?": "이 애니메이션을 삭제하시겠습니까?", + "Animation added successfully": "애니메이션이 성공적으로 추가되었습니다.", + "Animation modification successful": "애니메이션 수정 성공", + "The maximum animation duration is 1 hour": "최장 1시간 애니메이션" +} diff --git a/web/locales/ru-RU.json b/web/locales/ru-RU.json index aa0ae27e734224d8edf03640e228ef0e290fecae..608b521bb7566864deda744a70099ce075322637 100644 --- a/web/locales/ru-RU.json +++ b/web/locales/ru-RU.json @@ -1,652 +1,658 @@ { - "8 Samples": "8 образцов", - "AnimLayer3": "Анимационный слой 3", - "Bump Scale": "Коэффициент текстуры неровностей", - "AutoForward": "Автоматическое продвижение", - "LookVertical": "Посмотрите вверх", - "Fire": "пламя", - "CameraLeft": "Камера слева", - "Label": "тег", - "Time": "время", - "Ease Func": "Функция интерполяции", - "Please select texture first.": "Пожалуйста, сначала выберите текстуру для этого объекта!", - "The object you selected is not geometry.": "Выбранный объект не имеет свойства Geometry.", - "Please save scene first.": "Пожалуйста, сначала сохраните сцену!", - "MapSize": "Размер текстуры", - "TubeArc": "Длинная дуга", - "Name": "имя", - "Dig": "рытье", - "Character": "фигура", - "Cannot deserialize scene data.": "Невозможно проанализировать данные сцены!", - "MaxPolarAngle": "Максимальный угол возвышения", - "ActiveLock": "Включи жди и посмотри", - "Decay": "ослабление", - "MaxAzimuthAngle": "Максимальная ориентация", - "AfterimageEffect": "Эффекты остаточного изображения", - "Basic Information": "Основная информация", - "Shape": "форма", - "GIS Component": "ГИС компонент", - "Point": "точка", - "AlphaMap": "Прозрачная текстура", - "FogNear": "Туман возле точки", - "Shadow Component": "Затененный компонент", - "Light": "Источник света", - "Export Geometry": "Экспорт геометрии", - "Remove Object": "Удалить объект", - "PhiLength": "Поворотная долгота", - "NoZoom": "Не масштабируется", - "Camera Component": "Компонент камеры", - "EmissiveMap": "Светящаяся текстура", - "Decal": "аппликация", - "Camera": "камера", - "Panel": "панель", - "MeshStandardMaterial": "Стандартный материал", - "Orbit Controls": "Трек контроллер", - "Renderer": "Renderer", - "New Material": "Новый материал", - "Double Side": "Двухсторонний", - "EnableState": "Включенное состояние", - "Upload": "Загрузить", - "No Type": "Нет типа", - "BackgroundColor": "Цвет фона", - "MaxAge": "продолжительность", - "Back Side": "отрицательный", - "Scene": "сцена", - "CameraFar": "Камера далеко", - "Sprite": "гениальность", - "Light Component": "Сборка источника света", - "PixelEffect": "Пиксельный эффект", - "PixelSize": "Размер пикселя", - "Pointer Lock Controls": "Контроллер блокировки указателя", - "Quadratic Bezier Curve": "Квадратичная кривая Безье", - "SAO": "Масштабируемая Окружающая Окклюзия (SAO)", - "Geometry": "геометрия", - "Animation Object": "Движущийся объект", - "VerticalMin": "Минимальный угол возвышения", - "Substractive Blending": "Плохая смесь", - "MieDirectionalG": " направление ", - "History": "история", - "CameraRight": "Камера справа", - "Tension": "напряжение", - "Line": "линия", - "Tianditu Map": "Дневная карта", - "AoMap": "Текстура окклюзии", - "OpenEnded": "Открыть на обоих концах", - "ParticleEmitter": "Излучатель частиц", - "Export Static Website": "Опубликовать статический сайт", - "Polygon": "поверхность", - "Ao Scale": "Коэффициент текстуры окклюзии", - "Halftone Effect": "Полутоновый эффект", - "PCF Soft Shadow": "PCF мягкая тень", - "Listen to dblclick event": "Мониторинг события двойного щелчка мышью", - "Language": "язык", - "Closed": "закрытие", - "Add physics cloth successfully": "Добавьте физическую ткань успешно!", - "WildMode": "Безумный режим", - "Data Source Manage": "Управление источником данных", - "Lid": "Крышка горшка", - "Time Disk": "Диск времени", - "Save": "Сохранить", - "Grayscale": "серый", - "Component": "пакет", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "Завершение текстуры удалит номер и подчеркивание после имени, восстановит таблицу данных и каталог текстур, удалит пустую папку и файл текстуры без ссылок, система автоматически создаст резервную копию таблицы данных и каталога текстур, организовано ли это?", - "Export Editor": "Редактор экспорта", - "Unbiased": "Нет отклонений", - "Box": "куб", - "Listen to mousemove event": "Отслеживать события движения мыши", - "Shader Program Info": "Информация о шейдерной программе", - "SizeSpread": "Размерная дивергенция", - "Sone Words": "Некоторый текст", - "Play": "Broadcast", - "Execute after program stopped": "Выполните один раз после завершения программы", - "Saved into indexDB.": "Сохранить в IndexedDB.", - "Directional Light": "Параллельный свет", - "Water Component": "Водный компонент", - "You should select Cube Texture.": "Разрешить только стерео карты!", - "Set Scale": "Установить зум", - "Multiply": "Умножить", - "Directional": "Параллельный свет", - "is not available.": "Не доступно", - "Export STL": "Экспорт файла STL", - "Torus Knot": "перегиб", - "New Script": "Новый скрипт", - "Category Edit": "Редактирование категории", - "Gamma Output": "Гамма-выход", - "Listen to click event": "Слушайте события щелчка мыши", - "Particle Animation": "Анимация частиц", - "Create": "добавлять", - "Position": "расположение", - "ThrowBall": "Брось маленький шарик", - "Occlusion": "блокировка", - "Top View": "Вид сверху", - "LMesh Component": "ЛМеш компонент", - "Preview": "предварительный просмотр", - "Contrast": "контрастировать", - "Please select object!": "Пожалуйста, выберите объект!", - "Scale(R)": "Увеличить (R)", - "Gravity": "сила тяжести", - "Lisense": "санкционировать", - "Script": "скрипт", - "Emissive": "свет", - "Record": "запись", - "Clamp To Edge": "растяжимый", - "Grid": "сетка", - "Plant Trees": "Пакетная посадка деревьев", - "Delete this category?": "Вы хотите удалить эту категорию?", - "Listen to mousedown event": "Мониторинг события щелчка мышью", - "Cloth": "ткань", - "BackSide": "назад", - "Arrange Map": "Отделочная карта", - "Solid Color": "Сплошной цвет", - "MinAzimuthAngle": "Минимальная ориентация", - "NoPan": "Не панорамирование", - "Arrange Mesh": "Организовать модель", - "Encoding": "кодирование", - "Object": "Количество объектов", - "HeightCoef": "Фактор роста", - "Waiting...": "Пожалуйста, подождите ...", - "Geometry Component": "Геометрическая составляющая", - "WireWidth": "Толщина каркаса", - "maxAgeSpread": "Расхождение по длительности", - "Side": "исключающий", - "Bar Chart": "Гистограмма", - "Map": "Карты", - "Rect Area Light": "Прямоугольный свет", - "Scale Locked": "Блокировка зума", - "SphereShape": "мяч", - "Scatter Plot": "Точечный график", - "Front View": "Вид спереди", - "SmokeComponent": "Дымовой компонент", - "No Image": "Нет изображения", - "Image upload successfully!": "Изображение было успешно загружено!", - "Please select MMD audio.": "Пожалуйста, нажмите на аудио, соответствующее анимации MMD!", - "Total {{totalPage}} Pages": "Всего {{totalPage}} страница", - "MagFilter": "Фильтр увеличения", - "Options": "опции", - "TextureSize": "Размер текстуры", - "BlurStdDev": "Стандартное отклонение", - "Key Value Label": "Тег значения ключа", - "Empty Scene": "Пустая сцена", - "Export PLY": "Экспорт файла сгиба", - "Smoke": "дым", - "BoxShape": "куб", - "First Person Controls": "Контроллер первого вида", - "GreyScale": "Серая шкала", - "No Blending": "Не смешанный", - "Near": "Ближайшая точка", - "CubicBezier Curve": "Кубическая кривая Безье", - "Volume": "Loop play", - "Icosahedron": "Икосаэдр", - "Export Scene": "Экспортировать сцену", - "Model": "модель", - "Vertex": "Количество вершин", - "Save Successfully.": "Сохранено успешно.", - "Particle": "частица", - "Vertex Colors": "Цвет вершины", - "Rotate(E)": "Вращение (E)", - "Ellipse Curve": "Эллиптическая кривая", - "Please click the audio in the Audio Panel.": "Пожалуйста, нажмите на аудио в аудио панели!", - "ClearCoat": "прозрачность", - "CameraNear": "Камера рядом", - "Message": "новости", - "Damp": "сырость", - "Face Colors": "Цвет лица", - "FogFar": "Туман далеко", - "Histogram": "Гистограмма", - "Confirm": "подтвердить", - "ShaderInfo": "Шейдерная информация", - "Bokeh Effect": "Эффект размытия фона", - "Arrange Thumbnail": "Организовать миниатюры", - "HeightMax": "Максимальная высота", - "Export Object": "Экспорт объекта", - "Set Scene": "Настройка сцены", - "Occlusion&Blur": "", - "Tween Animation": "Анимация анимации", - "DistortedArc": "Искаженная кривизна", - "FogDensity": "Концентрация тумана", - "BeginTime": "Время начала", - "Please click the map in the map panel.": "Пожалуйста, нажмите на карту в панели карты!", - "Clone": "копия", - "Current Status": "Текущее состояние", - "WidthSegments": "Сегментация ширины", - "Are you sure to export the current scene?": "Хотите экспортировать текущую сцену?", - "Cluster Diagram": "Кластерная диаграмма", - "EndTime": "Время окончания", - "TubelarSegments": "Трубчатый сегмент", - "PositionSpread": "Расположение дивергенции", - "StaticMoving": "Статическое движение", - "EndStatus": "Конечное состояние", - "FrontSide": "фронт", - "GIS Scene": "ГИС сцена", - "Roughness": "неровность", - "VelocitySpread": "Расхождение скорости", - "SSAO": "Затенение окружающего света на экране (SSAO)", - "material has no coordinates.": "Материал не имеет текстурных координат!", - "Cube texture has already been uploaded.": "Стерео текстуры уже существуют на стороне сервера и не требуют многократной загрузки.", - "Centripetal Force": "Центростремительная сила", - "Upload failed.": "Загрузка не удалась!", - "FlipY": "Обратный Y", - "Additive Blending": "И смешивание", - "Line Chart": "Линейный график", - "Side View": "Вид сбоку", - "Furface": "экстерьер", - "Level": "рейтинг", - "HueRotate": "тон", - "Sphere": "мяч", - "Edit": "редактировать", - "Image upload failed!": "Загрузка изображения не удалась!", - "CatmullRom curve should have at least 3 points.": "Кривая Catmull Rom должна иметь как минимум три точки!", - "Anisotropy": "анизотропность", - "BlurDepthCutoff": "Глубина раздела", - "Quality": "качество", - "Auto Play": "Автоматическая игра", - "Publish Scene": "Сцена релиза", - "ScreenSpacePanning": "Координаты экрана", - "Are you sure to export the editor?": "Вы хотите экспортировать редактор?", - "Information": "информация", - "Pie Chart": "Круговая диаграмма", - "IsLocked": "Ли блокировать", - "MeshNormalMaterial": "Нормальный векторный материал", - "Intensity": "прочность", - "MMD Model": "Модель MMD", - "Detail": "подробность", - "ThetaLength": "Переверните широту", - "32 Samples": "32 образца", - "ClothComponent": "Ткань в сборе", - "MeshDepthMaterial": "Глубина материала", - "Far": "Далеко", - "Dragging animation on other animation is not allowed.": "Перетаскивание анимации в другие анимации не допускается.", - "RadialSegments": "Радиальная сегментация", - "All unsaved data will be lost. Are you sure?": "Все несохраненные данные будут потеряны. Вы уверены, что хотите создать новую сцену?", - "Stop": "остановить", - "Horizontal Line": "Горизонтальная линия", - "Clear": "ясно", - "Please select camera animation.": "Разрешены только анимации MMD камеры!", - "Spot Light": "прожектор", - "Normal Blending": "Общее смешивание", - "Undo/Redo history will be cleared. Are you sure?": "История отмен / повторов будет очищена. ", - "Fragment": "источники", - "2 Samples": "2 образца", - "New": "новый", - "No Colors": "Нет цвета", - "Cannot set texture": "Невозможно установить текстуру,", - "Audio": "аудиочастота", - "NegX": "Ось X отрицательная", - "Bing Map": "Карта Бинга", - "AnimLayer": "Анимационный слой", - "Author": "автор", - "PosY": "Ось Y положительная", - "AudioListener": "Аудио слушатель", - "Category Add": "Добавление категории", - "Rotate Center": "Центр ротации", - "Visible": "видимость", - "RepeatNum": "Количество заливок", - "ThetaStart": "Начальная широта", - "Size": "размер", - "ZoomSpeed": "Скорость увеличения", - "Physics Cloth": "Добавьте физическую ткань", - "Normal": "нормативы", - "Animation": "анимация", - "Shader cannot be parsed.": "Информация шейдера не может быть десериализована.", - "Frag Shader": "Исходный шейдер", - "Spline": "кривая", - "Create Script": "Создать скрипт", - "Set Position": "Установить местоположение", - "Output": "экспорт", - "Cylinder": "цилиндр", - "Penumbra": "Полутень", - "Save Scene": "Сохранить сцену", - "Texture": "зерна", - "Exporting...": "Экспорт ...", - "SkyColor": "Цвет неба", - "PhysicsType": "Физический тип", - "AccelerationSpread": "Дивергенция ускорения", - "Category List": "Список категорий", - "Draw Pologon": "изображение", - "Listen to keydown event": "Мониторинг события нажатия клавиатуры", - "Loop": "Loop play", - "Amount": "количество", - "Debug Mode": "Режим отладки", - "HeightSegments": "Сегментация по высоте", - "Focus": "Фокусное расстояние", - "SpecularMap": "Зеркальная текстура", - "Fire Component": "Пламя в сборе", - "PointCloudMaterial": "Материал облака точек", - "DefaultCamera": "Камера по умолчанию", - "Beauty&Occlusion": "", - "Shader Program": "Программа затенения", - "Texture Settings": "Настройка текстуры", - "Logs": "журнал", - "Reflect": "отражающий", - "Delete layer will delete all the anims on the layer. Are you sure?": "Удаление слоя удаляет все анимации на слое. ", - "Are you sure to publish all scenes and assets?": "Публикуете ли вы все сценарии и ресурсы как статические сайты?", - "Export STL Binary": "Экспорт двоичного файла stl", - "is not existed in the scene.": "Не существует на сцене.", - "EnablePan": "Включить панорамирование", - "Helpers": "помощник", - "Clear Logs": "Очистить журнал", - "Traceball Controls": "Контроллер трекбола", - "Draw Line": "Нарисуйте линию", - "MeshPhongMaterial": "Материал Фенга", - "RigidBody": "Твердое тело", - "Vertex Shader": "Вершинный шейдер", - "GenerateMipmaps": "Открытый уровень", - "Tool": "инструмент", - "DragToLook": "Перетащите для просмотра", - "Radius": "радиус", - "Pack Diagram": "Схема упаковки", - "ClipBias": "Смещение урожая", - "RadiusTop": "Верхний радиус", - "Blinn": "Брин", - "Repeat": "повторение", - "DefaultCollisionConfig": "Конфигурация столкновения по умолчанию", - "Please select camera animation only.": "Разрешены только анимации MMD камеры!", - "RawShaderMaterial": "Сырой шейдерный материал", - "Filter": "фильтр", - "Thumbnail": "Эскизы", - "Undo": "расстегивать", - "Recursion": "Рекурсия", - "CollisionConfig": "Конфигурация столкновения", - "Sky": "небо", - "Triangle": "Количество треугольников", - "Error": "ошибка", - "Text": "текст", - "OK": "определить", - "Transparent": "прозрачный", - "Play Fullscreen": "Полноэкранное воспроизведение", - "MetalnessMap": "Металлическая текстура", - "Export GLTF": "Экспорт файла GLTF", - "HeightMin": "Минимальная высота", - "Opacity": "помутнение", - "Group": "группа", - "Saturate": "насыщение", - "Settings": "устанавливать", - "CameraTop": "На камеру", - "1 Sample": "1 образец", - "Please open scene first.": "Пожалуйста, сначала откройте сцену!", - "RadiusBottom": "Нижний радиус", - "Button": "кнопка", - "PremultiplyAlpha": "Оставленный прозрачным", - "Vertex Color": "Цвет вершины", - "Linear": "линейный", - "Skin": "кожа", - "Perlin Terrain": "Берлинская местность", - "Bottom": "дно", - "Partition Diagram": "Карта разделов", - "Dark Color": "Насыщенный цвет", - "Visual": "визуализация", - "Add Object": "Добавить объекты:", - "MeshPhysicalMaterial": "Физический материал", - "MinFilter": "Уменьшить фильтрацию", - "None": "нет", - "Please click the animation in the animation panel.": "Пожалуйста, нажмите на анимацию в панели анимации!", - "Set Geometry": "Установить геометрию", - "Max Volume": "Мастер громкости", - "Please click the map in the Map Panel.": "Пожалуйста, нажмите на стерео карту в панели текстур!", - "SpriteMaterial": "Эльф материал", - "Please check the layer.": "Пожалуйста, отметьте слой, который вы хотите удалить!", - "Update UUID": "Обновить UUID", - "Date": "дата", - "Halo": "ореол", - "Shader Terrain": "Шейдерная местность", - "Flat Shading": "гладкий", - "Shadow": "тень", - "DotScreenEffect": "Эффект решетки", - "Collapse": "складка", - "Turbidity": "мутность", - "Publish website": "Издательский сайт", - "Gamma Input": "Гамма-вход", - "RotateBlue": "Синий прогиб", - "SliceSpacing": "Толщина среза", - "RoughnessMap": "Грубая текстура", - "Multiply Blending": "Ассортимент продукции", - "Clear indexedDB.": "Пустой IndexedDB.", - "WrapS": "Боковое наполнение", - "MeshBasicMaterial": "Основной материал", - "Set Material": "Установить материал", - "Circle": "круглый", - "Model Animation": "Модельная анимация", - "NegZ": "Ось Z отрицательная", - "Not Set": "Не установлено", - "PosX": "Ось X положительная", - "Draw Point": "Нарисуйте точку", - "Depth": "глубина", - "TimeSpan": "продолжительность", - "Please upload all the textures before save.": "Пожалуйста, загрузите все стереокарты и нажмите Сохранить!", - "Cube Texture fetch failed.": "Получение стерео текстуры не удалось!", - "Force Directed Graph": "Сила-ориентированная карта", - "LookSpeed": "Смотреть скорость", - "WrapT": "Вертикальная заливка", - "LineDashedMaterial": "Пунктирный материал", - "Loading...": "Loading ...", - "Format": "формат", - "DampingFactor": "Коэффициент демпфирования", - "Invert": "Изменение цвета", - "Form Panel": "формы", - "AutoRotateSpeed": "Скорость вращения", - "Wireframe": "Каркасный", - "EnvMap": "Экологическая текстура", - "Please enter material name": "Пожалуйста, введите название материала", - "Lathe": "Бокал", - "PhysicsEnvironment": "Физическая среда", - "Displace Scale": "Коэффициент текстуры смещения", - "Close": "близко", - "AlphaTest": "Альфа-тест", - "EnableKeys": "Кнопка включения", - "Remove Script": "Удалить скрипт", - "DisplacementMap": "Текстура смещения", - "Angle": "угол", - "SoftBodyRigidBodyCollisionConfig": "Конфигурация столкновения мягкого тела", - "LightMap": "Легкая текстура", - "Property": "собственности", - "Cast": "производить", - "Material": "материал", - "CatmullRom Curve": "Кривая Catmull Rom ", - "Reflector Component": "Светоотражающий компонент", - "EnableRotate": "Включить вращение", - "Hemisphere Light": "Полусферический свет", - "MetalNess": "металлические св`ойства", - "ParticleCount": "Количество частиц", - "Enabled": "Включить", - "Square": "площадь", - "Remove Point": "Точка удаления", - "Plane": "самолет", - "RotateGreen": "Зеленый прогиб", - "MinResolution": "Самое низкое разрешение", - "Program stoped.": "Программа успешно остановлена.", - "Brightness": "яркость", - "Inertia": "инертность", - "Camera Animation": "Анимация камеры", - "Line Curve": "Линейный сегмент", - "Listen to keyup event": "Мониторинг события подъема клавиатуры", - "Category": "категория", - "Cube Texture": "Стерео карта", - "FogColor": "Цвет тумана", - "Google Map": "Google Maps", - "Delete": "удалять", - "Exponential": "экспоненциальный", - "Velocity": "скорость", - "MovementSpeed": "Скорость движения", - "Ambient": "Окружающий свет", - "Delete Script": "Удалить скрипт", - "Reduce Terrain": "Уменьшить местность", - "Terrain": "местность", - "BlendingMode": "Смешанный режим", - "Glitch Effect": "Глюк эффект", - "ConstrainVertical": "Предельный угол возвышения", - "SoftVolume": "Мягкое тело", - "Create empty scene successfully.": "Пустая сцена была успешно создана!", - "Luminance": "яркость", - "Shininess": "яркость", - "Arc": "радиан", - "Please select MMD animation only.": "Разрешены только анимации модели MMD!", - "Set": "устанавливать", - "Custom Status": "изготовленный на заказ", - "Acceleration": "ускорение", - "FitLid": "Подходит для крышки", - "Chord Graph": "Аккордовая диаграмма", - "Skeleton": "остов", - "Skeletal Animation": "Скелетная анимация", - "Assets": "ресурсы", - "2D": "Двумерный", - "MinPolarAngle": "Минимальный угол возвышения", - "Add": "Добавить вместе", - "Enable": "Включить", - "Bias": "отклонение", - "MaxDistance": "Максимальное расстояние", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "При организации миниатюр будет восстановлен каталог миниатюр, изменена сцена, модель, текстура, материал, аудио, анимация, частицы, заданное тело и путь миниатюр символов. Сначала выполните резервное копирование базы данных вручную.", - "Listen to mouseup event": "Монитор мыши поднять событие", - "Specular": "Зеркальная степень", - "Fly Controls": "Диспетчер полета", - "Basic Shadow": "Основная тень", - "GroundColor": "Основной цвет", - "has no physics helper.": "Нет соответствующего помощника по физической форме.", - "Fov": "Поле зрения", - "Search Content": "Поиск контента", - "Segments": "раздел", - "MinDistance": "Минимальное расстояние", - "AnimLayer2": "Анимационный слой 2", - "Gauge": "метр", - "Aperture": "апертура", - "Listen to mousewheel event": "Мониторинг событий колеса мыши", - "4 Samples": "4 образца", - "Clear History": "Очистить историю", - "Color": "цвет", - "BeginStatus": "Начальное состояние", - "PCF Shadow": "PCF тень", - "PanSpeed": "Скорость перевода", - "Translate(W)": "Пан (W)", - "Set Script": "Настройка скрипта", - "Ambient Light": "Окружающий свет", - "Darker": "темнеть", - "Export OBJ": "Экспорт файла obj", - "QuadraticBezier Curve": "Квадратичная кривая Безье", - "KeyPanSpeed": "Скорость кнопки", - "Query": "спросить", - "Illustrate: Double-click the area below the timeline to add an animation.": "Описание. Дважды щелкните область под временной шкалой, чтобы добавить анимацию.", - "Lighter": "просиять", - "Move Object": "Движущийся объект", - "Save As": "Сохранить как", - "Mirrored Repeat": "Зеркальное повторение", - "Custom Blending": "Пользовательская смесь", - "No Name": "неназванный", - "Script name existed.": "Название скрипта продублировано!", - "CameraBottom": "Под камерой", - "Perspective View": "перспективы", - "Offset": "офсет", - "EnableDamping": "Включить амортизацию", - "Vertical Line": "Вертикальная линия", - "Set Rotation": "Установить вращение", - "Basic Info": "Основная информация", - "New Scene": "Новая сцена", - "DepthSegments": "Глубокая сегментация", - "Add Script": "Добавить скрипт", - "Beauty": "украшать", - "Body": "тело", - "Reflectivity": "отражательная способность", - "Translate": "перевод", - "Blur": "пятно", - "Redo": "переделывать", - "Width": "ширина", - "RotateRed": "Красный прогиб", - "Scene Controller": "Контроллер сцены", - "Please input": "Пожалуйста, введите", - "Type": "тип", - "Teapot": "чайник", - "Scene data of string type is needed.": "Нужны параметры типа сцены типа string!", - "MeshLambertMaterial": "Ламберт материал", - "SMAA": "Сглаживание нескольких образцов (SMAA)", - "Target": "цель", - "Disable": "запрещать", - "Mass": "качество", - "Chord": "хорда", - "Listen to resize event": "Событие изменения размера экрана монитора", - "SSAA": "Полноэкранное сглаживание (SSAA)", - "MaxBlur": "Максимальное размытие", - "Spray": "впрыскивание", - "About": "на", - "NegY": "Ось Y отрицательная", - "Set Geometry.": "Установите геометрию.", - "Select": "выбрать", - "Background Music": "Фоновая музыка", - "RotateSpeed": "Скорость вращения", - "Distance": "расстояние", - "Background Image": "Фоновое изображение", - "Gamma Factor": "Гамма фактор", - "Front Side": "фронт", - "PosZ": "Ось Z положительная", - "Cancel": "отменен", - "Material Component": "Материальная составляющая", - "Sidebar": "Боковая панель", - "Execute after scene render": "Выполнить один раз после рендеринга сцены", - "16 Samples": "16 образцов", - "Fog": "туман", - "Play Audio": "Играть музыку", - "Options Window": "Окно настроек", - "Transform Component": "Компонент смещения", - "Globe": "земля", - "NoRotate": "Не вращается", - "Tree Diagram": "Древовидная диаграмма", - "Background": "фон", - "TAA": "Time сглаживание (TAA)", - "Execute before scene render": "Выполните один раз перед визуализацией сцены", - "Source": "Исходный код", - "HeightSpeed": "Высота скорость", - "Point Light": "Точечный источник", - "Scatter": "рассеивание", - "Multi Modify": "Несколько изменений", - "BlurRadius": "Нечеткий радиус", - "Delete successfully!": "Удалено успешно!", - "Execute each frame during running": "Каждый кадр должен быть выполнен во время работы программы.", - "Please select a record.": "Пожалуйста, выберите данные", - "RGB Shift Effect": "Эффект сдвига цвета", - "ClearCoatRoughness": "Прозрачная шероховатость", - "SceneComponent": "Компонент сцены", - "Script saved successfully!": "Сценарий был успешно сохранен!", - "Filter Animation": "Фильтровать анимацию", - "UnpackAlignment": "Распаковать выравнивание", - "Prefab": "Предустановленное тело", - "EnableZoom": "Включить зум", - "Hierachy": "сцена", - "Torus": "покрышка", - "Help": "помощь", - "Please select category.": "Пожалуйста, выберите категорию!", - "LineBasicMaterial": "Линия материала", - "MieCofficient": "коэффициент off ", - "Documents": "файл", - "Disabled": "запрещать", - "Height": "высота", - "BumpMap": "Рельефная текстура", - "Pressure": "давление", - "Receive": "прием", - "Raise Terrain": "Поднять рельеф", - "Play New Window": "Новое окно воспроизведения", - "Ellipse": "эллипс", - "Please click material on material panel.": "Нажмите на материал в панели материалов!", - "Program started.": "Программа началась успешно.", - "Rotate": "вращение", - "Sepia": "ретро", - "Curve Type": "Тип линии", - "NormalMap": "Нормальная текстура", - "VerticalMax": "Максимальный угол возвышения", - "Add Point": "Добавить точку", - "Default": "дефолт", - "Scale": "пересчет", - "Water": "воды", - "Tube": "Сегмент трубы", - "Examples": "примеров", - "Light Color": "Светлый цвет", - "Mapping": "картографирование", - "AnimLayer1": "Анимационный слой 1", - "Theme": "тема", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "Сортировка модели приведет к удалению номера и подчеркивания после имени, восстановлению таблицы данных, каталога моделей, удалению пустых папок и файлов моделей без ссылок, система автоматически создаст резервную копию таблицы данных, каталога моделей, нужно ли выполнять сортировку?", - "Rayleigh": "Рэлея", - "Edit Script": "Редактировать скрипт", - "PhiStart": "Начальная долгота", - "Load Successfully!": "Загрузка успешно!", - "AutoRotate": "Автоматическое вращение", - "Blending": "микшировать", - "ShaderMaterial": "Шейдерный материал", - "FXAA Component": "Быстрое приближение сглаживания (FXAA)", - "KernalRadius": "Радиус ядра" -} \ No newline at end of file + "8 Samples": "8 образцов", + "AnimLayer3": "Анимационный слой 3", + "Bump Scale": "Коэффициент текстуры неровностей", + "AutoForward": "Автоматическое продвижение", + "LookVertical": "Посмотрите вверх", + "Fire": "пламя", + "CameraLeft": "Камера слева", + "Label": "тег", + "Time": "время", + "Ease Func": "Функция интерполяции", + "Please select texture first.": "Пожалуйста, сначала выберите текстуру для этого объекта!", + "The object you selected is not geometry.": "Выбранный объект не имеет свойства Geometry.", + "Please save scene first.": "Пожалуйста, сначала сохраните сцену!", + "MapSize": "Размер текстуры", + "TubeArc": "Длинная дуга", + "Name": "имя", + "Dig": "рытье", + "Character": "фигура", + "Cannot deserialize scene data.": "Невозможно проанализировать данные сцены!", + "MaxPolarAngle": "Максимальный угол возвышения", + "ActiveLock": "Включи жди и посмотри", + "Decay": "ослабление", + "MaxAzimuthAngle": "Максимальная ориентация", + "AfterimageEffect": "Эффекты остаточного изображения", + "Basic Information": "Основная информация", + "Shape": "форма", + "GIS Component": "ГИС компонент", + "Point": "точка", + "AlphaMap": "Прозрачная текстура", + "FogNear": "Туман возле точки", + "Shadow Component": "Затененный компонент", + "Light": "Источник света", + "Export Geometry": "Экспорт геометрии", + "Remove Object": "Удалить объект", + "PhiLength": "Поворотная долгота", + "NoZoom": "Не масштабируется", + "Camera Component": "Компонент камеры", + "EmissiveMap": "Светящаяся текстура", + "Decal": "аппликация", + "Camera": "камера", + "Panel": "панель", + "MeshStandardMaterial": "Стандартный материал", + "Orbit Controls": "Трек контроллер", + "Renderer": "Renderer", + "New Material": "Новый материал", + "Double Side": "Двухсторонний", + "EnableState": "Включенное состояние", + "Upload": "Загрузить", + "No Type": "Нет типа", + "BackgroundColor": "Цвет фона", + "MaxAge": "продолжительность", + "Back Side": "отрицательный", + "Scene": "сцена", + "CameraFar": "Камера далеко", + "Sprite": "гениальность", + "Light Component": "Сборка источника света", + "PixelEffect": "Пиксельный эффект", + "PixelSize": "Размер пикселя", + "Pointer Lock Controls": "Контроллер блокировки указателя", + "Quadratic Bezier Curve": "Квадратичная кривая Безье", + "SAO": "Масштабируемая Окружающая Окклюзия (SAO)", + "Geometry": "геометрия", + "Animation Object": "Движущийся объект", + "VerticalMin": "Минимальный угол возвышения", + "Substractive Blending": "Плохая смесь", + "MieDirectionalG": " направление ", + "History": "история", + "CameraRight": "Камера справа", + "Tension": "напряжение", + "Line": "линия", + "Tianditu Map": "Дневная карта", + "AoMap": "Текстура окклюзии", + "OpenEnded": "Открыть на обоих концах", + "ParticleEmitter": "Излучатель частиц", + "Export Static Website": "Опубликовать статический сайт", + "Polygon": "поверхность", + "Ao Scale": "Коэффициент текстуры окклюзии", + "Halftone Effect": "Полутоновый эффект", + "PCF Soft Shadow": "PCF мягкая тень", + "Listen to dblclick event": "Мониторинг события двойного щелчка мышью", + "Language": "язык", + "Closed": "закрытие", + "Add physics cloth successfully": "Добавьте физическую ткань успешно!", + "WildMode": "Безумный режим", + "Data Source Manage": "Управление источником данных", + "Lid": "Крышка горшка", + "Time Disk": "Диск времени", + "Save": "Сохранить", + "Grayscale": "серый", + "Component": "пакет", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "Завершение текстуры удалит номер и подчеркивание после имени, восстановит таблицу данных и каталог текстур, удалит пустую папку и файл текстуры без ссылок, система автоматически создаст резервную копию таблицы данных и каталога текстур, организовано ли это?", + "Export Editor": "Редактор экспорта", + "Unbiased": "Нет отклонений", + "Box": "куб", + "Listen to mousemove event": "Отслеживать события движения мыши", + "Shader Program Info": "Информация о шейдерной программе", + "SizeSpread": "Размерная дивергенция", + "Sone Words": "Некоторый текст", + "Play": "Broadcast", + "Execute after program stopped": "Выполните один раз после завершения программы", + "Saved into indexDB.": "Сохранить в IndexedDB.", + "Directional Light": "Параллельный свет", + "Water Component": "Водный компонент", + "You should select Cube Texture.": "Разрешить только стерео карты!", + "Set Scale": "Установить зум", + "Multiply": "Умножить", + "Directional": "Параллельный свет", + "is not available.": "Не доступно", + "Export STL": "Экспорт файла STL", + "Torus Knot": "перегиб", + "New Script": "Новый скрипт", + "Category Edit": "Редактирование категории", + "Gamma Output": "Гамма-выход", + "Listen to click event": "Слушайте события щелчка мыши", + "Particle Animation": "Анимация частиц", + "Create": "добавлять", + "Position": "расположение", + "ThrowBall": "Брось маленький шарик", + "Occlusion": "блокировка", + "Top View": "Вид сверху", + "LMesh Component": "ЛМеш компонент", + "Preview": "предварительный просмотр", + "Contrast": "контрастировать", + "Please select object!": "Пожалуйста, выберите объект!", + "Scale(R)": "Увеличить (R)", + "Gravity": "сила тяжести", + "Lisense": "санкционировать", + "Script": "скрипт", + "Emissive": "свет", + "Record": "запись", + "Clamp To Edge": "растяжимый", + "Grid": "сетка", + "Plant Trees": "Пакетная посадка деревьев", + "Delete this category?": "Вы хотите удалить эту категорию?", + "Listen to mousedown event": "Мониторинг события щелчка мышью", + "Cloth": "ткань", + "BackSide": "назад", + "Arrange Map": "Отделочная карта", + "Solid Color": "Сплошной цвет", + "MinAzimuthAngle": "Минимальная ориентация", + "NoPan": "Не панорамирование", + "Arrange Mesh": "Организовать модель", + "Encoding": "кодирование", + "Object": "Количество объектов", + "HeightCoef": "Фактор роста", + "Waiting...": "Пожалуйста, подождите ...", + "Geometry Component": "Геометрическая составляющая", + "WireWidth": "Толщина каркаса", + "maxAgeSpread": "Расхождение по длительности", + "Side": "исключающий", + "Bar Chart": "Гистограмма", + "Map": "Карты", + "Rect Area Light": "Прямоугольный свет", + "Scale Locked": "Блокировка зума", + "SphereShape": "мяч", + "Scatter Plot": "Точечный график", + "Front View": "Вид спереди", + "SmokeComponent": "Дымовой компонент", + "No Image": "Нет изображения", + "Image upload successfully!": "Изображение было успешно загружено!", + "Please select MMD audio.": "Пожалуйста, нажмите на аудио, соответствующее анимации MMD!", + "Total {{totalPage}} Pages": "Всего {{totalPage}} страница", + "MagFilter": "Фильтр увеличения", + "Options": "опции", + "TextureSize": "Размер текстуры", + "BlurStdDev": "Стандартное отклонение", + "Key Value Label": "Тег значения ключа", + "Empty Scene": "Пустая сцена", + "Export PLY": "Экспорт файла сгиба", + "Smoke": "дым", + "BoxShape": "куб", + "First Person Controls": "Контроллер первого вида", + "GreyScale": "Серая шкала", + "No Blending": "Не смешанный", + "Near": "Ближайшая точка", + "CubicBezier Curve": "Кубическая кривая Безье", + "Volume": "Loop play", + "Icosahedron": "Икосаэдр", + "Export Scene": "Экспортировать сцену", + "Model": "модель", + "Vertex": "Количество вершин", + "Save Successfully.": "Сохранено успешно.", + "Particle": "частица", + "Vertex Colors": "Цвет вершины", + "Rotate(E)": "Вращение (E)", + "Ellipse Curve": "Эллиптическая кривая", + "Please click the audio in the Audio Panel.": "Пожалуйста, нажмите на аудио в аудио панели!", + "ClearCoat": "прозрачность", + "CameraNear": "Камера рядом", + "Message": "новости", + "Damp": "сырость", + "Face Colors": "Цвет лица", + "FogFar": "Туман далеко", + "Histogram": "Гистограмма", + "Confirm": "подтвердить", + "ShaderInfo": "Шейдерная информация", + "Bokeh Effect": "Эффект размытия фона", + "Arrange Thumbnail": "Организовать миниатюры", + "HeightMax": "Максимальная высота", + "Export Object": "Экспорт объекта", + "Set Scene": "Настройка сцены", + "Occlusion&Blur": "", + "Tween Animation": "Анимация анимации", + "DistortedArc": "Искаженная кривизна", + "FogDensity": "Концентрация тумана", + "BeginTime": "Время начала", + "Please click the map in the map panel.": "Пожалуйста, нажмите на карту в панели карты!", + "Clone": "копия", + "Current Status": "Текущее состояние", + "WidthSegments": "Сегментация ширины", + "Are you sure to export the current scene?": "Хотите экспортировать текущую сцену?", + "Cluster Diagram": "Кластерная диаграмма", + "EndTime": "Время окончания", + "TubelarSegments": "Трубчатый сегмент", + "PositionSpread": "Расположение дивергенции", + "StaticMoving": "Статическое движение", + "EndStatus": "Конечное состояние", + "FrontSide": "фронт", + "GIS Scene": "ГИС сцена", + "Roughness": "неровность", + "VelocitySpread": "Расхождение скорости", + "SSAO": "Затенение окружающего света на экране (SSAO)", + "material has no coordinates.": "Материал не имеет текстурных координат!", + "Cube texture has already been uploaded.": "Стерео текстуры уже существуют на стороне сервера и не требуют многократной загрузки.", + "Centripetal Force": "Центростремительная сила", + "Upload failed.": "Загрузка не удалась!", + "FlipY": "Обратный Y", + "Additive Blending": "И смешивание", + "Line Chart": "Линейный график", + "Side View": "Вид сбоку", + "Furface": "экстерьер", + "Level": "рейтинг", + "HueRotate": "тон", + "Sphere": "мяч", + "Edit": "редактировать", + "Image upload failed!": "Загрузка изображения не удалась!", + "CatmullRom curve should have at least 3 points.": "Кривая Catmull Rom должна иметь как минимум три точки!", + "Anisotropy": "анизотропность", + "BlurDepthCutoff": "Глубина раздела", + "Quality": "качество", + "Auto Play": "Автоматическая игра", + "Publish Scene": "Сцена релиза", + "ScreenSpacePanning": "Координаты экрана", + "Are you sure to export the editor?": "Вы хотите экспортировать редактор?", + "Information": "информация", + "Pie Chart": "Круговая диаграмма", + "IsLocked": "Ли блокировать", + "MeshNormalMaterial": "Нормальный векторный материал", + "Intensity": "прочность", + "MMD Model": "Модель MMD", + "Detail": "подробность", + "ThetaLength": "Переверните широту", + "32 Samples": "32 образца", + "ClothComponent": "Ткань в сборе", + "MeshDepthMaterial": "Глубина материала", + "Far": "Далеко", + "Dragging animation on other animation is not allowed.": "Перетаскивание анимации в другие анимации не допускается.", + "RadialSegments": "Радиальная сегментация", + "All unsaved data will be lost. Are you sure?": "Все несохраненные данные будут потеряны. Вы уверены, что хотите создать новую сцену?", + "Stop": "остановить", + "Horizontal Line": "Горизонтальная линия", + "Clear": "ясно", + "Please select camera animation.": "Разрешены только анимации MMD камеры!", + "Spot Light": "прожектор", + "Normal Blending": "Общее смешивание", + "Undo/Redo history will be cleared. Are you sure?": "История отмен / повторов будет очищена. ", + "Fragment": "источники", + "2 Samples": "2 образца", + "New": "новый", + "No Colors": "Нет цвета", + "Cannot set texture": "Невозможно установить текстуру,", + "Audio": "аудиочастота", + "NegX": "Ось X отрицательная", + "Bing Map": "Карта Бинга", + "AnimLayer": "Анимационный слой", + "Author": "автор", + "PosY": "Ось Y положительная", + "AudioListener": "Аудио слушатель", + "Category Add": "Добавление категории", + "Rotate Center": "Центр ротации", + "Visible": "видимость", + "RepeatNum": "Количество заливок", + "ThetaStart": "Начальная широта", + "Size": "размер", + "ZoomSpeed": "Скорость увеличения", + "Physics Cloth": "Добавьте физическую ткань", + "Normal": "нормативы", + "Animation": "анимация", + "Shader cannot be parsed.": "Информация шейдера не может быть десериализована.", + "Frag Shader": "Исходный шейдер", + "Spline": "кривая", + "Create Script": "Создать скрипт", + "Set Position": "Установить местоположение", + "Output": "экспорт", + "Cylinder": "цилиндр", + "Penumbra": "Полутень", + "Save Scene": "Сохранить сцену", + "Texture": "зерна", + "Exporting...": "Экспорт ...", + "SkyColor": "Цвет неба", + "PhysicsType": "Физический тип", + "AccelerationSpread": "Дивергенция ускорения", + "Category List": "Список категорий", + "Draw Pologon": "изображение", + "Listen to keydown event": "Мониторинг события нажатия клавиатуры", + "Loop": "Loop play", + "Amount": "количество", + "Debug Mode": "Режим отладки", + "HeightSegments": "Сегментация по высоте", + "Focus": "Фокусное расстояние", + "SpecularMap": "Зеркальная текстура", + "Fire Component": "Пламя в сборе", + "PointCloudMaterial": "Материал облака точек", + "DefaultCamera": "Камера по умолчанию", + "Beauty&Occlusion": "", + "Shader Program": "Программа затенения", + "Texture Settings": "Настройка текстуры", + "Logs": "журнал", + "Reflect": "отражающий", + "Delete layer will delete all the anims on the layer. Are you sure?": "Удаление слоя удаляет все анимации на слое. ", + "Are you sure to publish all scenes and assets?": "Публикуете ли вы все сценарии и ресурсы как статические сайты?", + "Export STL Binary": "Экспорт двоичного файла stl", + "is not existed in the scene.": "Не существует на сцене.", + "EnablePan": "Включить панорамирование", + "Helpers": "помощник", + "Clear Logs": "Очистить журнал", + "Traceball Controls": "Контроллер трекбола", + "Draw Line": "Нарисуйте линию", + "MeshPhongMaterial": "Материал Фенга", + "RigidBody": "Твердое тело", + "Vertex Shader": "Вершинный шейдер", + "GenerateMipmaps": "Открытый уровень", + "Tool": "инструмент", + "DragToLook": "Перетащите для просмотра", + "Radius": "радиус", + "Pack Diagram": "Схема упаковки", + "ClipBias": "Смещение урожая", + "RadiusTop": "Верхний радиус", + "Blinn": "Брин", + "Repeat": "повторение", + "DefaultCollisionConfig": "Конфигурация столкновения по умолчанию", + "Please select camera animation only.": "Разрешены только анимации MMD камеры!", + "RawShaderMaterial": "Сырой шейдерный материал", + "Filter": "фильтр", + "Thumbnail": "Эскизы", + "Undo": "расстегивать", + "Recursion": "Рекурсия", + "CollisionConfig": "Конфигурация столкновения", + "Sky": "небо", + "Triangle": "Количество треугольников", + "Error": "ошибка", + "Text": "текст", + "OK": "определить", + "Transparent": "прозрачный", + "Play Fullscreen": "Полноэкранное воспроизведение", + "MetalnessMap": "Металлическая текстура", + "Export GLTF": "Экспорт файла GLTF", + "HeightMin": "Минимальная высота", + "Opacity": "помутнение", + "Group": "группа", + "Saturate": "насыщение", + "Settings": "устанавливать", + "CameraTop": "На камеру", + "1 Sample": "1 образец", + "Please open scene first.": "Пожалуйста, сначала откройте сцену!", + "RadiusBottom": "Нижний радиус", + "Button": "кнопка", + "PremultiplyAlpha": "Оставленный прозрачным", + "Vertex Color": "Цвет вершины", + "Linear": "линейный", + "Skin": "кожа", + "Perlin Terrain": "Берлинская местность", + "Bottom": "дно", + "Partition Diagram": "Карта разделов", + "Dark Color": "Насыщенный цвет", + "Visual": "визуализация", + "Add Object": "Добавить объекты:", + "MeshPhysicalMaterial": "Физический материал", + "MinFilter": "Уменьшить фильтрацию", + "None": "нет", + "Please click the animation in the animation panel.": "Пожалуйста, нажмите на анимацию в панели анимации!", + "Set Geometry": "Установить геометрию", + "Max Volume": "Мастер громкости", + "Please click the map in the Map Panel.": "Пожалуйста, нажмите на стерео карту в панели текстур!", + "SpriteMaterial": "Эльф материал", + "Please check the layer.": "Пожалуйста, отметьте слой, который вы хотите удалить!", + "Update UUID": "Обновить UUID", + "Date": "дата", + "Halo": "ореол", + "Shader Terrain": "Шейдерная местность", + "Flat Shading": "гладкий", + "Shadow": "тень", + "DotScreenEffect": "Эффект решетки", + "Collapse": "складка", + "Turbidity": "мутность", + "Publish website": "Издательский сайт", + "Gamma Input": "Гамма-вход", + "RotateBlue": "Синий прогиб", + "SliceSpacing": "Толщина среза", + "RoughnessMap": "Грубая текстура", + "Multiply Blending": "Ассортимент продукции", + "Clear indexedDB.": "Пустой IndexedDB.", + "WrapS": "Боковое наполнение", + "MeshBasicMaterial": "Основной материал", + "Set Material": "Установить материал", + "Circle": "круглый", + "Model Animation": "Модельная анимация", + "NegZ": "Ось Z отрицательная", + "Not Set": "Не установлено", + "PosX": "Ось X положительная", + "Draw Point": "Нарисуйте точку", + "Depth": "глубина", + "TimeSpan": "продолжительность", + "Please upload all the textures before save.": "Пожалуйста, загрузите все стереокарты и нажмите Сохранить!", + "Cube Texture fetch failed.": "Получение стерео текстуры не удалось!", + "Force Directed Graph": "Сила-ориентированная карта", + "LookSpeed": "Смотреть скорость", + "WrapT": "Вертикальная заливка", + "LineDashedMaterial": "Пунктирный материал", + "Loading...": "Loading ...", + "Format": "формат", + "DampingFactor": "Коэффициент демпфирования", + "Invert": "Изменение цвета", + "Form Panel": "формы", + "AutoRotateSpeed": "Скорость вращения", + "Wireframe": "Каркасный", + "EnvMap": "Экологическая текстура", + "Please enter material name": "Пожалуйста, введите название материала", + "Lathe": "Бокал", + "PhysicsEnvironment": "Физическая среда", + "Displace Scale": "Коэффициент текстуры смещения", + "Close": "близко", + "AlphaTest": "Альфа-тест", + "EnableKeys": "Кнопка включения", + "Remove Script": "Удалить скрипт", + "DisplacementMap": "Текстура смещения", + "Angle": "угол", + "SoftBodyRigidBodyCollisionConfig": "Конфигурация столкновения мягкого тела", + "LightMap": "Легкая текстура", + "Property": "собственности", + "Cast": "производить", + "Material": "материал", + "CatmullRom Curve": "Кривая Catmull Rom ", + "Reflector Component": "Светоотражающий компонент", + "EnableRotate": "Включить вращение", + "Hemisphere Light": "Полусферический свет", + "MetalNess": "металлические св`ойства", + "ParticleCount": "Количество частиц", + "Enabled": "Включить", + "Square": "площадь", + "Remove Point": "Точка удаления", + "Plane": "самолет", + "RotateGreen": "Зеленый прогиб", + "MinResolution": "Самое низкое разрешение", + "Program stoped.": "Программа успешно остановлена.", + "Brightness": "яркость", + "Inertia": "инертность", + "Camera Animation": "Анимация камеры", + "Line Curve": "Линейный сегмент", + "Listen to keyup event": "Мониторинг события подъема клавиатуры", + "Category": "категория", + "Cube Texture": "Стерео карта", + "FogColor": "Цвет тумана", + "Google Map": "Google Maps", + "Delete": "удалять", + "Exponential": "экспоненциальный", + "Velocity": "скорость", + "MovementSpeed": "Скорость движения", + "Ambient": "Окружающий свет", + "Delete Script": "Удалить скрипт", + "Reduce Terrain": "Уменьшить местность", + "Terrain": "местность", + "BlendingMode": "Смешанный режим", + "Glitch Effect": "Глюк эффект", + "ConstrainVertical": "Предельный угол возвышения", + "SoftVolume": "Мягкое тело", + "Create empty scene successfully.": "Пустая сцена была успешно создана!", + "Luminance": "яркость", + "Shininess": "яркость", + "Arc": "радиан", + "Please select MMD animation only.": "Разрешены только анимации модели MMD!", + "Set": "устанавливать", + "Custom Status": "изготовленный на заказ", + "Acceleration": "ускорение", + "FitLid": "Подходит для крышки", + "Chord Graph": "Аккордовая диаграмма", + "Skeleton": "остов", + "Skeletal Animation": "Скелетная анимация", + "Assets": "ресурсы", + "2D": "Двумерный", + "MinPolarAngle": "Минимальный угол возвышения", + "Add": "Добавить вместе", + "Enable": "Включить", + "Bias": "отклонение", + "MaxDistance": "Максимальное расстояние", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "При организации миниатюр будет восстановлен каталог миниатюр, изменена сцена, модель, текстура, материал, аудио, анимация, частицы, заданное тело и путь миниатюр символов. Сначала выполните резервное копирование базы данных вручную.", + "Listen to mouseup event": "Монитор мыши поднять событие", + "Specular": "Зеркальная степень", + "Fly Controls": "Диспетчер полета", + "Basic Shadow": "Основная тень", + "GroundColor": "Основной цвет", + "has no physics helper.": "Нет соответствующего помощника по физической форме.", + "Fov": "Поле зрения", + "Search Content": "Поиск контента", + "Segments": "раздел", + "MinDistance": "Минимальное расстояние", + "AnimLayer2": "Анимационный слой 2", + "Gauge": "метр", + "Aperture": "апертура", + "Listen to mousewheel event": "Мониторинг событий колеса мыши", + "4 Samples": "4 образца", + "Clear History": "Очистить историю", + "Color": "цвет", + "BeginStatus": "Начальное состояние", + "PCF Shadow": "PCF тень", + "PanSpeed": "Скорость перевода", + "Translate(W)": "Пан (W)", + "Set Script": "Настройка скрипта", + "Ambient Light": "Окружающий свет", + "Darker": "темнеть", + "Export OBJ": "Экспорт файла obj", + "QuadraticBezier Curve": "Квадратичная кривая Безье", + "KeyPanSpeed": "Скорость кнопки", + "Query": "спросить", + "Illustrate: Double-click the area below the timeline to add an animation.": "Описание. Дважды щелкните область под временной шкалой, чтобы добавить анимацию.", + "Lighter": "просиять", + "Move Object": "Движущийся объект", + "Save As": "Сохранить как", + "Mirrored Repeat": "Зеркальное повторение", + "Custom Blending": "Пользовательская смесь", + "No Name": "Iimt_Digital_Twin", + "Script name existed.": "Название скрипта продублировано!", + "CameraBottom": "Под камерой", + "Perspective View": "перспективы", + "Offset": "офсет", + "EnableDamping": "Включить амортизацию", + "Vertical Line": "Вертикальная линия", + "Set Rotation": "Установить вращение", + "Basic Info": "Основная информация", + "New Scene": "Новая сцена", + "DepthSegments": "Глубокая сегментация", + "Add Script": "Добавить скрипт", + "Beauty": "украшать", + "Body": "тело", + "Reflectivity": "отражательная способность", + "Translate": "перевод", + "Blur": "пятно", + "Redo": "переделывать", + "Width": "ширина", + "RotateRed": "Красный прогиб", + "Scene Controller": "Контроллер сцены", + "Please input": "Пожалуйста, введите", + "Type": "тип", + "Teapot": "чайник", + "Scene data of string type is needed.": "Нужны параметры типа сцены типа string!", + "MeshLambertMaterial": "Ламберт материал", + "SMAA": "Сглаживание нескольких образцов (SMAA)", + "Target": "цель", + "Disable": "запрещать", + "Mass": "качество", + "Chord": "хорда", + "Listen to resize event": "Событие изменения размера экрана монитора", + "SSAA": "Полноэкранное сглаживание (SSAA)", + "MaxBlur": "Максимальное размытие", + "Spray": "впрыскивание", + "About": "на", + "NegY": "Ось Y отрицательная", + "Set Geometry.": "Установите геометрию.", + "Select": "выбрать", + "Background Music": "Фоновая музыка", + "RotateSpeed": "Скорость вращения", + "Distance": "расстояние", + "Background Image": "Фоновое изображение", + "Gamma Factor": "Гамма фактор", + "Front Side": "фронт", + "PosZ": "Ось Z положительная", + "Cancel": "отменен", + "Material Component": "Материальная составляющая", + "Sidebar": "Боковая панель", + "Execute after scene render": "Выполнить один раз после рендеринга сцены", + "16 Samples": "16 образцов", + "Fog": "туман", + "Play Audio": "Играть музыку", + "Options Window": "Окно настроек", + "Transform Component": "Компонент смещения", + "Globe": "земля", + "NoRotate": "Не вращается", + "Tree Diagram": "Древовидная диаграмма", + "Background": "фон", + "TAA": "Time сглаживание (TAA)", + "Execute before scene render": "Выполните один раз перед визуализацией сцены", + "Source": "Исходный код", + "HeightSpeed": "Высота скорость", + "Point Light": "Точечный источник", + "Scatter": "рассеивание", + "Multi Modify": "Несколько изменений", + "BlurRadius": "Нечеткий радиус", + "Delete successfully!": "Удалено успешно!", + "Execute each frame during running": "Каждый кадр должен быть выполнен во время работы программы.", + "Please select a record.": "Пожалуйста, выберите данные", + "RGB Shift Effect": "Эффект сдвига цвета", + "ClearCoatRoughness": "Прозрачная шероховатость", + "SceneComponent": "Компонент сцены", + "Script saved successfully!": "Сценарий был успешно сохранен!", + "Filter Animation": "Фильтровать анимацию", + "UnpackAlignment": "Распаковать выравнивание", + "Prefab": "Предустановленное тело", + "EnableZoom": "Включить зум", + "Hierachy": "сцена", + "Torus": "покрышка", + "Help": "помощь", + "Please select category.": "Пожалуйста, выберите категорию!", + "LineBasicMaterial": "Линия материала", + "MieCofficient": "коэффициент off ", + "Documents": "файл", + "Disabled": "запрещать", + "Height": "высота", + "BumpMap": "Рельефная текстура", + "Pressure": "давление", + "Receive": "прием", + "Raise Terrain": "Поднять рельеф", + "Play New Window": "Новое окно воспроизведения", + "Ellipse": "эллипс", + "Please click material on material panel.": "Нажмите на материал в панели материалов!", + "Program started.": "Программа началась успешно.", + "Rotate": "вращение", + "Sepia": "ретро", + "Curve Type": "Тип линии", + "NormalMap": "Нормальная текстура", + "VerticalMax": "Максимальный угол возвышения", + "Add Point": "Добавить точку", + "Default": "дефолт", + "Scale": "пересчет", + "Water": "воды", + "Tube": "Сегмент трубы", + "Examples": "примеров", + "Light Color": "Светлый цвет", + "Mapping": "картографирование", + "AnimLayer1": "Анимационный слой 1", + "Theme": "тема", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "Сортировка модели приведет к удалению номера и подчеркивания после имени, восстановлению таблицы данных, каталога моделей, удалению пустых папок и файлов моделей без ссылок, система автоматически создаст резервную копию таблицы данных, каталога моделей, нужно ли выполнять сортировку?", + "Rayleigh": "Рэлея", + "Edit Script": "Редактировать скрипт", + "PhiStart": "Начальная долгота", + "Load Successfully!": "Загрузка успешно!", + "AutoRotate": "Автоматическое вращение", + "Blending": "микшировать", + "ShaderMaterial": "Шейдерный материал", + "FXAA Component": "Быстрое приближение сглаживания (FXAA)", + "KernalRadius": "Радиус ядра", + "Configure Animation": "Настроить анимацию", + "Please select the animation target": "Выберите цель анимации", + "Are you sure you want to delete this animation?": "Вы точно удалили эту анимацию?", + "Animation added successfully": "Анимация Добавить успех", + "Animation modification successful": "Анимация успешно изменена", + "The maximum animation duration is 1 hour": "Максимальная продолжительность анимации 1 час." +} diff --git a/web/locales/zh-CN.json b/web/locales/zh-CN.json index 01b2accb51d9093db1e760dabcd451e0c14ba9bf..26e0acea57d304621b6300cae3d6d7db0257adf9 100644 --- a/web/locales/zh-CN.json +++ b/web/locales/zh-CN.json @@ -1,1046 +1,1052 @@ { - "Remove Object": "移除物体", - "Wireframe": "线框", - "Torus Knot": "扭结", - "Spot Light": "聚光灯", - "Language": "语言", - "Cylinder": "圆柱体", - "Delete": "删除", - "FitLid": "适合壶盖", - "is not existed in the scene.": "在场景中不存在。", - "No Colors": "无颜色", - "Background": "背景", - "Add": "添加", - "PhysicsEnvironment": "物理环境", - "Penumbra": "半阴影", - "Rotate(E)": "旋转(E)", - "Target": "目标", - "CameraNear": "相机近", - "HeightMin": "最小高度", - "SphereShape": "球体", - "CollisionConfig": "碰撞配置", - "RoughnessMap": "粗糙纹理", - "Set Rotation": "设置旋转", - "Export OBJ": "导出obj文件", - "Information": "信息", - "Please select category.": "请选择类别!", - "Globe": "地球", - "Transparent": "透明", - "Line Chart": "折线图", - "Helpers": "帮助器", - "Confirm": "确认", - "SMAA": "多重采样抗锯齿(SMAA)", - "Saturate": "饱和度", - "DefaultCollisionConfig": "默认碰撞配置", - "Please check the layer.": "请勾选需要删除的层!", - "Scatter": "分散", - "Material Component": "材质组件", - "Sprite": "精灵", - "BackgroundColor": "背景颜色", - "Disabled": "禁用", - "Scale Locked": "锁定缩放", - "Tween Animation": "补间动画", - "Camera Component": "相机组件", - "Handle keyup event": "监听键盘抬起事件", - "Bump Scale": "凹凸纹理比例", - "Audio": "音频", - "Lathe": "酒杯", - "MinPolarAngle": "最小仰角", - "8 Samples": "8个样本", - "Ellipse": "椭圆", - "Add Script": "添加脚本", - "Edit Script": "编辑脚本", - "Fog": "雾", - "DragToLook": "拖动查看", - "WrapS": "横向填充", - "PixelEffect": "像素特效", - "Set Geometry.": "设置几何体.", - "AlphaMap": "透明纹理", - "Record": "录制", - "Cannot set texture": "无法设置纹理,", - "Force Directed Graph": "力导向图", - "Please upload all the textures before save.": "请上传所有立体贴图后再点击保存!", - "Amount": "量", - "Opacity": "不透明度", - "Please select texture first.": "请先为该物体选择纹理!", - "Geometry": "几何体", - "Solid Color": "纯色", - "Collapse": "折叠", - "Transform Component": "位移组件", - "Horizontal Line": "水平线", - "Rotate": "旋转", - "BlurDepthCutoff": "深度隔断", - "NoPan": "不平移", - "Light Component": "光源组件", - "CameraFar": "相机远", - "Preview": "预览", - "Ambient Light": "环境光", - "Handle dblclick event": "监听鼠标双击事件", - "MeshPhongMaterial": "冯氏材质", - "Export Scene": "导出场景", - "Set Material": "设置材质", - "Substractive Blending": "差混合", - "SpriteMaterial": "精灵材质", - "Turbidity": "浑浊度", - "Category List": "类别列表", - "Ease Func": "插值函数", - "MaxAzimuthAngle": "最大方位", - "AoMap": "遮挡纹理", - "NegY": "y轴负向", - "New Script": "新脚本", - "Flat Shading": "平坦着色", - "NegZ": "z轴负向", - "Side View": "侧视图", - "TextureSize": "贴图尺寸", - "Custom Status": "自定义", - "material has no coordinates.": "的材质没有纹理坐标!", - "Arrange Map": "整理贴图", - "CameraRight": "相机右", - "Clamp To Edge": "拉伸", - "Skeletal Animation": "骨骼动画", - "Fire Component": "火焰组件", - "ShaderMaterial": "着色器材质", - "HueRotate": "色调", - "Hierachy": "场景", - "Offset": "偏移", - "Decal": "贴花", - "Please click material on material panel.": "请点击材质面板中的材质!", - "Please select object!": "请选择物体!", - "AnimLayer": "动画层", - "Encoding": "编码", - "Level": "等级", - "Set Scale": "设置缩放", - "LookVertical": "朝上看", - "PhysicsType": "物理类型", - "is not available.": "不可用。", - "UnpackAlignment": "解压对齐", - "RadiusTop": "顶部半径", - "Theme": "主题", - "GIS Scene (Test)": "GIS场景(测试)", - "Form Panel": "表单", - "Front Side": "正面", - "MMD Model": "MMD模型", - "EndStatus": "结束状态", - "EnableKeys": "启用按键", - "Shininess": "光亮度", - "Lid": "壶盖", - "Publish website": "发布网站", - "HeightCoef": "高度系数", - "Vertex Colors": "顶点颜色", - "Camera": "相机", - "Object": "物体", - "PosX": "x轴正向", - "MaxAge": "持续时长", - "Visual": "可视化", - "Vertex Shader": "顶点着色器", - "Please click the audio in the Audio Panel.": "请点击音频面板中的音频!", - "Filter": "滤镜", - "Vertex": "顶点", - "ThetaLength": "转过纬度", - "Handle mousewheel event": "监听鼠标滚轮事件", - "ShaderInfo": "着色器信息", - "FogFar": "雾远点", - "Max Volume": "主音量", - "Angle": "角度", - "LookSpeed": "观望速度", - "Play New Window": "新窗口播放", - "Cluster Diagram": "集群图", - "Sky": "天空", - "Model": "模型", - "Sphere": "球体", - "Grayscale": "灰度", - "Animation Object": "动作物体", - "Camera Animation": "相机动画", - "PositionSpread": "位置发散", - "Background Image": "背景图片", - "Lisense": "授权", - "Directional": "平行光", - "Tree Diagram": "树状图", - "Component": "组件", - "Displace Scale": "位移纹理比例", - "2 Samples": "2个样本", - "Empty Scene": "空场景", - "New Scene": "新场景", - "Clone": "复制", - "BlendingMode": "混合模式", - "Arc": "弧度", - "Property": "属性", - "Play Fullscreen": "全屏播放", - "MinAzimuthAngle": "最小方位", - "Author": "作者", - "IsLocked": "是否锁定", - "Scatter Plot": "散点图", - "Rotate Center": "旋转中心", - "Recursion": "递归", - "Particle Animation": "粒子动画", - "Smoke": "烟", - "Directional Light": "平行光", - "Mirrored Repeat": "镜像重复", - "WireWidth": "线框粗细", - "Furface": "外观", - "TAA": "时间抗锯齿(TAA)", - "Shadow": "阴影", - "BoxShape": "正方体", - "Radius": "半径", - "Date": "日期", - "Shape": "形状", - "Brightness": "亮度", - "Renderer": "渲染器", - "PointCloudMaterial": "点云材质", - "Group": "组", - "FXAA Component": "快速近似抗锯齿(FXAA)", - "Gauge": "仪表", - "Illustrate: Double-click the area below the timeline to add an animation.": "说明:双击时间轴下方区域添加动画。", - "TubeArc": "管长弧度", - "Map": "贴图", - "Decay": "衰减", - "Bokeh Effect": "背景虚化特效", - "ClothComponent": "布料组件", - "Set Scene": "设置场景", - "Please click the map in the Map Panel.": "请点击贴图面板中的立体贴图!", - "Specular": "镜面度", - "FrontSide": "正面", - "Image upload successfully!": "图片上传成功!", - "MaxDistance": "最大距离", - "MetalNess": "金属度", - "maxAgeSpread": "持续时长发散", - "SmokeComponent": "烟组件", - "Shadow Component": "阴影组件", - "First Person Controls": "第一视角控制器", - "Type": "类型", - "EmissiveMap": "发光纹理", - "Histogram": "柱状图", - "Export Editor": "导出编辑器", - "Occlusion": "遮挡", - "MinDistance": "最小距离", - "Export Object JSON File": "导出物体JSON文件", - "Side": "剔除", - "Detail": "细节", - "Blinn": "布林", - "No Name": "未命名", - "ParticleCount": "粒子数量", - "Execute after program stopped": "程序结束运行后执行一次", - "Double Side": "双面", - "Clear indexedDB.": "清空IndexedDB。", - "Name": "名称", - "Front View": "正视图", - "Face Colors": "面颜色", - "Button": "按钮", - "ParticleEmitter": "粒子发射器", - "Current Status": "当前状态", - "Delete layer will delete all the anims on the layer. Are you sure?": "删除层会删除层上的所有动画。是否删除?", - "Script saved successfully!": "脚本保存成功!", - "GIS Component": "GIS组件", - "History": "历史", - "Loading...": "加载中...", - "TubelarSegments": "管状分段", - "CatmullRom Curve": "CatmullRom曲线", - "MeshPhysicalMaterial": "物理材质", - "Inertia": "惯性", - "KeyPanSpeed": "按键速度", - "Damp": "阻尼", - "MieCofficient": "Mie系数", - "Prefab": "预设体", - "Cube Texture fetch failed.": "立体贴图获取失败!", - "Please input": "请输入", - "LMesh Component": "LMesh组件", - "PCF Soft Shadow": "PCF软阴影", - "Teapot": "茶壶", - "MeshDepthMaterial": "深度材质", - "Stop": "停止", - "Roughness": "粗糙度", - "Select": "选择", - "Pointer Lock Controls": "指针锁定控制器", - "Text": "文字", - "Beauty&Occlusion": "美化+遮挡", - "Set Script": "设置脚本", - "Distance": "距离", - "Set Position": "设置位置", - "Throw Ball": "扔小球", - "Skin": "皮肤", - "Rect Area Light": "矩形光", - "Hemisphere Light": "半球光", - "Save Scene": "保存场景", - "Execute after scene render": "场景渲染后执行一次", - "Bar Chart": "条形图", - "Position": "位置", - "Play": "播放", - "NoZoom": "不缩放", - "Background Music": "背景音乐", - "Export STL": "导出stl文件", - "Mass": "质量", - "Sidebar": "侧边栏", - "Quality": "质量", - "Please select MMD animation only.": "只允许选择MMD模型动画!", - "Top View": "顶视图", - "EnableState": "启用状态", - "Rayleigh": "瑞利", - "None": "无", - "EnableRotate": "启用旋转", - "Arrange Thumbnail": "整理缩略图", - "AnimLayer3": "动画层3", - "Orbit Controls": "轨道控制器", - "Shader Program": "着色程序", - "Translate(W)": "平移(W)", - "Plant Trees": "批量种树", - "SizeSpread": "尺寸发散", - "MeshBasicMaterial": "基本材质", - "Clear History": "清空历史记录", - "Cloth": "布", - "CubicBezier Curve": "三次贝塞尔曲线", - "Physics Cloth": "添加物理布料", - "Reflectivity": "反射率", - "Format": "格式", - "MapSize": "贴图尺寸", - "Category Edit": "类别编辑", - "Category Add": "类别添加", - "Options Window": "选项窗口", - "Shader cannot be parsed.": "着色器信息 无法反序列化。", - "Perspective View": "透视图", - "Time": "时间", - "Scale": "缩放", - "Handle keydown event": "监听键盘按下事件", - "WrapT": "纵向填充", - "GenerateMipmaps": "开启层级", - "Fly Controls": "飞行控制器", - "DisplacementMap": "位移纹理", - "2D": "二维", - "Reflect": "反光", - "ClipBias": "裁剪偏移", - "OpenEnded": "两端开口", - "Clear": "清空", - "Set": "设置", - "32 Samples": "32个样本", - "Circle": "圆", - "AlphaTest": "α测试", - "SpecularMap": "镜面纹理", - "MaxBlur": "最大模糊", - "SoftBodyRigidBodyCollisionConfig": "软体刚体碰撞配置", - "Anisotropy": "各向异性", - "AccelerationSpread": "加速度发散", - "Exponential": "指数型", - "Fov": "视场", - "SkyColor": "天空颜色", - "Far": "远点", - "New": "新建", - "Ambient": "环境光", - "EnvMap": "环境纹理", - "Height": "高度", - "Loop": "循环播放", - "ClearCoat": "透明度", - "VerticalMin": "最小仰角", - "Please select camera animation only.": "只允许选择MMD相机动画!", - "Handle mousedown event": "监听鼠标按下事件", - "RadialSegments": "径向分段", - "Icosahedron": "二十面体", - "Geometry Component": "几何组件", - "Undo": "撤销", - "Visible": "可见性", - "Logs": "日志", - "Segments": "分段", - "has no physics helper.": "暂无对应物理形状帮助器。", - "Saved into indexDB.": "保存到IndexedDB中。", - "PCF Shadow": "PCF阴影", - "Acceleration": "加速度", - "Box": "正方体", - "Occlusion&Blur": "遮挡+模糊", - "Output": "输出", - "Aperture": "光圈", - "SSAO": "屏幕空间环境光遮蔽(SSAO)", - "DistortedArc": "扭曲弧度", - "Multiply": "相乘", - "Multiply Blending": "积混合", - "Draw Pologon": "画面", - "Line": "线条", - "Texture": "纹理", - "Triangle": "三角形", - "AudioListener": "音频监听器", - "GroundColor": "地面颜色", - "Scale(R)": "缩放(R)", - "CameraBottom": "相机下", - "PhiStart": "开始经度", - "Velocity": "速度", - "SliceSpacing": "切片厚度", - "QuadraticBezier Curve": "二次贝塞尔曲线", - "PixelSize": "像素尺寸", - "BeginTime": "开始时间", - "Gravity": "重力", - "Save As": "另存为", - "CameraLeft": "相机左", - "Move Object": "移动物体", - "Plane": "平面", - "Repeat": "重复", - "HeightMax": "最大高度", - "Halftone Effect": "半色调特效", - "SceneComponent": "场景组件", - "Basic Info": "基本信息", - "Sepia": "复古", - "NegX": "x轴负向", - "AutoForward": "自动前进", - "MovementSpeed": "移动速度", - "Gamma Output": "γ输出", - "Source": "源码", - "Script": "脚本", - "Enabled": "启用", - "Cube texture has already been uploaded.": "立体贴图已经存在于服务端,无需重复上传。", - "Tianditu Map": "天地图", - "AnimLayer2": "动画层2", - "AfterimageEffect": "残影特效", - "Not Set": "未设置", - "Are you sure to publish all scenes and assets?": "是否把所有场景、资源发布为静态网站?", - "Cube Texture": "立体贴图", - "Dig": "挖坑", - "Particle": "粒子", - "Waiting...": "请稍后...", - "Contrast": "对比度", - "ZoomSpeed": "缩放速度", - "Lighter": "变亮", - "BlurRadius": "模糊半径", - "BackSide": "背面", - "Spray": "喷射", - "No Blending": "不混合", - "FogNear": "雾近点", - "ThetaStart": "开始纬度", - "No Image": "无图片", - "Volume": "音量", - "EnableZoom": "启用缩放", - "RawShaderMaterial": "原始着色器材质", - "SSAA": "全屏抗锯齿(SSAA)", - "Add Object": "添加物体:", - "ScreenSpacePanning": "屏幕坐标", - "Dark Color": "深色", - "Settings": "设置", - "Basic Shadow": "基本阴影", - "Fire": "火焰", - "MeshStandardMaterial": "标准材质", - "FogColor": "雾颜色", - "MagFilter": "放大过滤", - "Additive Blending": "和混合", - "Bottom": "底部", - "Please click the animation in the animation panel.": "请点击动画面板中的动画!", - "Handle click event": "监听鼠标点击事件", - "BumpMap": "凹凸纹理", - "Polygon": "面", - "Options": "选项", - "FlipY": "反转Y", - "MetalnessMap": "金属纹理", - "Label": "标签", - "Darker": "变暗", - "DefaultCamera": "默认相机", - "Some Words": "一些文字", - "Body": "身体", - "Pie Chart": "饼状图", - "Gamma Input": "γ输入", - "Halo": "光晕", - "1 Sample": "1个样本", - "Water": "水", - "Clear Logs": "清空日志", - "Update UUID": "更新UUID", - "Normal": "法线", - "Texture Settings": "纹理设置", - "MinFilter": "缩小过滤", - "FogDensity": "雾浓度", - "Color": "颜色", - "Ellipse Curve": "椭圆曲线", - "Partition Diagram": "分区图", - "Play Audio": "播放音乐", - "Cancel": "取消", - "4 Samples": "4个样本", - "OK": "确定", - "Light": "光源", - "DotScreenEffect": "点阵化特效", - "New Material": "新材质", - "Size": "尺寸", - "ConstrainVertical": "限制仰角", - "Please enter material name": "请输入材质名称", - "RigidBody": "刚体", - "PanSpeed": "平移速度", - "Please click the map in the map panel.": "请点击贴图面板中的贴图!", - "EnableDamping": "启用惯性", - "Vertex Color": "顶点颜色", - "Scene": "场景", - "Export STL Binary": "导出stl二进制文件", - "Save": "保存", - "PhiLength": "转过经度", - "Basic Information": "基本信息", - "Panel": "面板", - "Fragment": "片源", - "Category": "类别", - "Image upload failed!": "图片上传失败!", - "GreyScale": "灰阶", - "RotateBlue": "蓝色偏转", - "Please select camera animation.": "只允许选择MMD相机动画!", - "RotateGreen": "绿色偏转", - "Unbiased": "无偏差", - "Execute each frame during running": "程序运行过程中,每帧都要执行", - "Mapping": "映射", - "VelocitySpread": "速度发散", - "Normal Blending": "一般混合", - "Shader Program Info": "着色器程序信息", - "Pressure": "压力", - "Close": "关闭", - "Upload": "上传", - "Message": "消息", - "Save Successfully.": "保存成功。", - "Focus": "焦距", - "Thumbnail": "缩略图", - "Handle mousemove event": "监听鼠标移动事件", - "LineDashedMaterial": "虚线材质", - "Luminance": "亮度", - "Time Disk": "时间圆盘", - "Square": "正方形", - "Create Script": "新建脚本", - "Near": "近点", - "Export Geometry JSON File": "导出几何体JSON文件", - "Invert": "颜色反转", - "MeshLambertMaterial": "兰伯特材质", - "Export GLTF": "导出gltf文件", - "NormalMap": "法线纹理", - "Documents": "文档", - "Model Animation": "模型动画", - "Upload failed.": "上传失败!", - "Shader Terrain": "着色器地形", - "Reflector Component": "反光组件", - "Vertical Line": "竖直线", - "MaxPolarAngle": "最大仰角", - "LineBasicMaterial": "线条材质", - "ActiveLock": "启用观望", - "SAO": "可扩展环境光遮挡(SAO)", - "Add physics cloth successfully": "添加物理布料成功!", - "Key Value Label": "键值标签", - "Search Content": "搜索内容", - "Custom Blending": "自定义混合", - "RepeatNum": "填充次数", - "Linear": "线性", - "Draw Line": "画线", - "Translate": "平移", - "Examples": "示例", - "Reduce Terrain": "降低地形", - "PosZ": "z轴正向", - "LightMap": "光照纹理", - "Arrange Mesh": "整理模型", - "Perlin Terrain": "柏林地形", - "VerticalMax": "最大仰角", - "Spline": "曲线", - "Point Light": "点光源", - "HeightSpeed": "高度速度", - "Draw Point": "画点", - "Chord Graph": "弦图", - "RadiusBottom": "底部半径", - "Bing Map": "必应地图", - "Ao Scale": "遮挡纹理比例", - "MinResolution": "最低分辨", - "Bias": "偏差", - "MeshNormalMaterial": "法向量材质", - "Intensity": "强度", - "Remove Script": "移除脚本", - "Raise Terrain": "升高地形", - "Emissive": "发光", - "Assets": "资源", - "StaticMoving": "静态移动", - "CameraTop": "相机上", - "ClearCoatRoughness": "透明粗糙度", - "WidthSegments": "宽度分段", - "Cast": "产生", - "Animation": "动画", - "Back Side": "反面", - "Blending": "混合", - "Delete Script": "删除脚本", - "Publish Scene": "发布场景", - "You should select Cube Texture.": "只允许选择立体贴图!", - "EndTime": "结束时间", - "Tube": "管段", - "Handle resize event": "监听屏幕大小改变事件", - "Google Map": "谷歌地图", - "BeginStatus": "开始状态", - "Export Static Website": "发布静态网站", - "RotateSpeed": "旋转速度", - "Terrain": "地形", - "PremultiplyAlpha": "左乘透明", - "Multi Modify": "多种改变", - "Error": "错误", - "KernalRadius": "核心半径", - "Scene Controller": "场景控制器", - "Set Geometry": "设置几何体", - "HeightSegments": "高度分段", - "NoRotate": "不旋转", - "Receive": "接收", - "DampingFactor": "惯性系数", - "Auto Play": "自动播放", - "The object you selected is not geometry.": "选中的对象不具有Geometry属性。", - "RGB Shift Effect": "颜色偏移特效", - "Blur": "模糊", - "Pack Diagram": "包图", - "Torus": "轮胎", - "All unsaved data will be lost. Are you sure?": "所有未保存数据将丢失,确定要新建场景吗?", - "Default": "默认", - "Depth": "深度", - "Edit": "编辑", - "Traceball Controls": "轨迹球控制器", - "Line Curve": "线段", - "Create empty scene successfully.": "空场景创建成功!", - "16 Samples": "16个样本", - "Grid": "网格", - "Redo": "重做", - "MieDirectionalG": "Mie方向", - "Export PLY": "导出ply文件", - "Load Successfully!": "载入成功!", - "DepthSegments": "深度分段", - "Character": "人物", - "About": "关于", - "Data Source Manage": "数据源管理", - "Script name existed.": "脚本名称重复!", - "Width": "宽度", - "Tool": "工具", - "BlurStdDev": "标准差", - "Execute before scene render": "场景渲染前执行一次", - "AutoRotate": "自动旋转", - "Filter Animation": "滤镜动画", - "Material": "材质", - "Glitch Effect": "毛刺特效", - "Help": "帮助", - "SoftVolume": "柔软体", - "Beauty": "美化", - "Handle mouseup event": "监听鼠标抬起事件", - "Please select MMD audio.": "请点击MMD动画对应的音频!", - "RotateRed": "红色偏转", - "Undo/Redo history will be cleared. Are you sure?": "撤销/重做历史记录将被清空。确定吗?", - "AutoRotateSpeed": "旋转速度", - "AnimLayer1": "动画层1", - "Point": "点", - "WildMode": "疯狂模式", - "Frag Shader": "片源着色器", - "PosY": "y轴正向", - "Publishing...": "发布中...", - "Gamma Factor": "γ因子", - "EnablePan": "启用平移", - "Skeleton": "骨骼", - "Light Color": "浅色", - "Program started.": "程序启动成功。", - "Program stoped.": "程序停止成功。", - "TimeSpan": "时长", - "Centripetal Force": "向心力", - "Chord": "弦线", - "Add Point": "添加点", - "Remove Point": "移除点", - "Closed": "闭合", - "Curve Type": "线型", - "Tension": "张力", - "CatmullRom curve should have at least 3 points.": "CatmullRom曲线至少应该有三个点!", - "Water Component": "水组件", - "Please save scene first.": "请先保存场景!", - "Please open scene first.": "请先打开场景!", - "Query": "询问", - "Are you sure to publish the current scene?": "是否发布当前场景?", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "整理贴图会去除名称后的数字和下划线,重新生成数据表和贴图目录,移除空文件夹和未引用贴图文件,系统会自动备份数据表和贴图目录,是否整理?", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "整理模型会去除名称后的数字和下划线,重新生成数据表、模型目录,移除空文件夹和未引用模型文件,系统会自动备份数据表、模型目录,是否整理?", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "整理缩略图会重新生成缩略图目录,修改场景、模型、贴图、材质、音频、动画、粒子、预设体、人物的缩略图路径,请先手动备份数据库,是否整理?", - "Are you sure to export the editor?": "是否导出编辑器?", - "Dragging animation on other animation is not allowed.": "不允许将动画拖动到其他动画上。", - "Quadratic Bezier Curve": "二次贝塞尔曲线", - "Scene data of string type is needed.": "需要字符串类型的场景数据参数!", - "Cannot deserialize scene data.": "无法解析场景数据!", - "Total {{totalPage}} Pages": "共{{totalPage}}页", - "Create": "添加", - "Please select a record.": "请选择数据", - "Delete this category?": "是否删除该类别?", - "No Type": "无类型", - "Debug Mode": "调试模式", - "Enable": "启用", - "Disable": "禁用", - "Add Layer": "添加层", - "Edit Layer": "编辑层", - "Delete Layer": "删除层", - "Slower": "减速", - "Pause": "暂停", - "Faster": "加速", - "Input Layer Name": "请输入层名", - "Layer Name": "层名", - "New Layer": "新层", - "Texture Generator": "纹理生成器", - "Please select an animation layer.": "请选择一个动画层。", - "Delete animation layer {{layerName}}?": "删除动画层 {{layerName}}?", - "Edit Layer Name": "编辑层名", - "New Animation": "新动画", - "Set Target": "设置目标", - "Show Stats": "性能监视器", - "View Helper": "视角帮助器", - "Begin Status": "开始状态", - "Begin Position": "开始位置", - "Begin Rotation": "开始旋转", - "Begin Scale Lock": "开始缩放锁定", - "Begin Scale": "开始缩放", - "End Status": "结束状态", - "End Position": "结束位置", - "End Rotation": "结束旋转", - "End Scale Lock": "结束缩放锁定", - "End Scale": "结束缩放", - "Export Collada": "导出Collada文件", - "Export DRACO": "导出DRACO文件", - "Please select a mesh.": "请选择一个模型", - "Scene Editor": "场景编辑器", - "Mesh Editor": "模型编辑器", - "Texture Editor": "纹理编辑器", - "Material Editor": "材质编辑器", - "Terrain Editor": "地形编辑器", - "AI Editor": "AI编辑器", - "Renderer Attributes": "渲染器属性", - "alpha": "透明", - "antialias": "抗锯齿", - "depth": "深度", - "desynchronized": "不同步", - "failIfMajorPerformanceCaveat": "警告报错", - "powerPreference": "电源选项", - "premultipliedAlpha": "左乘透明", - "preserveDrawingBuffer": "保留绘制缓冲区", - "stencil": "模板", - "Screenshot": "截图", - "Video": "视频", - "Clean Up Scenes": "清理场景", - "Are you sure to clean up all the deleted scenes and scene histories?": "确定要清理所有已经删除的场景和场景历史记录?", - "Please click the image in the MapPanel.": "请点击贴图面板中的图片", - "Only zip file is allowed!": "只允许上传zip格式文件!", - "Unknown file type!": "未知文件类型!", - "Upload successfully!": "上传成功!", - "ID is not allowed.": "ID不合法。", - "Name is not allowed to be empty.": "名称不允许为空。", - "Saved successfully!": "保存成功!", - "The asset is not existed!": "该资源不存在!", - "Get Successfully!": "获取成功!", - "Only mp3, wav, ogg format is allowed!": "只允许上传mp3、wav或ogg格式文件!", - "Type is not allowed to be empty!": "类型不允许为空!", - "The character is not existed.": "该角色不存在!", - "Delete successfully!": "删除成功!", - "Only one or six files is allowed to upload!": "只允许上传1个或6个文件!", - "Only jpg, png, mp4 file is allowed to upload!": "只允许上传jpg、png或mp4格式文件!", - "The material is not existed!": "该材质不存在!", - "lanim file is not uploaded!": "未上传动画(.lanim)文件!", - "png file is not uploaded!": "未上传贴图(.png)文件!", - "The particle is not existed!": "该粒子不存在!", - "The prefab is not existed!": "该预设体不存在!", - "The scene is not existed!": "该场景不存在!", - "Name is not allowed to start with _.": "名称不允许以下划线开头。", - "Only one file is allowed to upload!": "只允许上传1个文件!", - "Only jpg, png, gif format is allowed to upload!": "只允许上传jpg、png或gif格式文件!", - "Only mp4 or webm format is allowed to upload!": "只允许上传mp4或webm格式文件!", - "Export successfully!": "导出成功!", - "Execute sucessfully!": "执行成功!", - "Export Examples": "导出示例", - "Are you sure to export all the examples?": "确定要导出所有示例?", - "Grid Mode": "网格模式", - "Three.js Information": "Three.js信息", - "Version": "版本", - "Upload Image": "上传图片", - "Upload Sky Box": "上传天空盒", - "Upload Video": "上传视频", - "Login": "登录", - "Login successfully!": "登录成功!", - "Logout Successfully!": "注销成功!", - "Username": "用户名", - "Password": "密码", - "System": "系统", - "Department Management": "组织机构管理", - "User Management": "用户管理", - "Role Management": "角色管理", - "Authority Management": "权限管理", - "The name is already existed.": "该名称已经存在。", - "Create Date": "创建日期", - "Update Date": "更新日期", - "Status": "状态", - "First Page": "第一页", - "Previous Page": "上一页", - "Current Page": "当前页", - "Next Page": "下一页", - "Last Page": "最后一页", - "{{total}} Records": "{{total}}条记录", - "Delete the selected record?": "是否要删除选中的数据?", - "Refresh": "刷新", - "{{pageSize}} per page, total {{total}} records.": "每页{{pageSize}}条,共{{total}}条记录。", - "User Name": "用户名", - "NickName": "姓名", - "Username is not allowed to be empty.": "用户名不允许为空。", - "Password is not allowed to be empty.": "密码不允许为空。", - "Nick name is not allowed to be empty.": "姓名不允许为空", - "The username is already existed.": "用户名已经存在。", - "Edit Role": "编辑角色", - "Edit User": "编辑用户", - "Register": "注册", - "Disable Authority": "禁用权限", - "Enable Authority": "启用权限", - "The username or password is wrong.": "用户名或密码错误", - "Server configuration acquisition failed.": "服务器配置获取失败", - "To GLTF File": "到GLTF文件", - "Scene{{Time}}": "场景{{Time}}", - "Input File Name": "请输入文件名称", - "ScriptComponent": "脚本组件", - "Selected Color": "选中颜色", - "Selected Thickness": "选中粗细", - "Selected Effect": "选中效果", - "Border Thickness": "边框粗细", - "Confirm password is not allowed to be empty.": "确认密码不允许为空。", - "Password and confirm password is not the same.": "密码和确认密码不相同。", - "Register successfully!": "注册成功!", - "Confirm Password": "确认密码", - "Authority": "权限", - "List Animation": "获取动画列表", - "Add Animation": "添加动画", - "Edit Animation": "编辑动画", - "Delete Animation": "删除动画", - "List Audio": "获取音频列表", - "Add Audio": "添加音频", - "Edit Audio": "编辑音频", - "Delete Audio": "删除音频", - "List Category": "获取分类列表", - "Save Category": "保存分类", - "Delete Category": "删除分类", - "List Character": "获取人物列表", - "Edit Character": "编辑人物", - "Save Character": "保存人物", - "Delete Character": "删除人物", - "List Map": "获取贴图列表", - "Add Map": "添加贴图", - "Edit Map": "编辑贴图", - "Delete Map": "删除贴图", - "List Material": "获取材质列表", - "Edit Material": "编辑材质", - "Save Material": "保存材质", - "Delete Material": "删除材质", - "List Mesh": "获取模型列表", - "Add Mesh": "添加模型", - "Edit Mesh": "编辑模型", - "Delete Mesh": "删除模型", - "List Particle": "获取粒子列表", - "Edit Particle": "编辑粒子", - "Save Particle": "保存粒子", - "Delete Particle": "删除粒子", - "List Prefab": "获取预设体列表", - "Edit Prefab": "编辑预设体", - "Save prefab": "保存预设体", - "Delete Prefab": "删除预设体", - "List Scene": "获取场景列表", - "Edit Scene": "编辑场景", - "Delete Scene": "删除场景", - "List Screenshot": "获取截图列表", - "Add Screenshot": "添加截图", - "Edit Screenshot": "编辑截图", - "Delete Screenshot": "删除截图", - "Upload Thumbnail": "上传缩略图", - "List Video": "获取视频列表", - "Add Video": "添加视频", - "Edit Video": "编辑视频", - "Delete Video": "删除视频", - "List Operating Authority": "获取操作权限列表", - "Save Operating Authority": "保存操作权限", - "List Role": "获取角色列表", - "Add Role": "添加角色", - "Delete Role": "删除角色", - "List User": "获取用户列表", - "Add User": "添加用户", - "Delete User": "删除用户", - "RoleID is not defined.": "RoleID未定义。", - "Authorities is not defined.": "Authorities未定义。", - "Role": "角色", - "Initialize": "初始化", - "Are you sure to initialize the roles and users?": "确定要初始化角色和用户?", - "Authority is not enabled.": "权限未开启", - "System has already initialized.": "系统已经初始化完成", - "Initialize successfully!": "初始化成功!", - "Press OK To refresh.": "点击确定刷新页面。", - "The role is not existed.": "该角色不存在。", - "Modifying system built-in roles is not allowed.": "不允许修改系统内置角色。", - "It is not allowed to delete system built-in roles.": "不允许删除系统内置角色。", - "Description": "简介", - "Administrator": "管理员", - "User": "用户", - "Guest": "游客", - "The user is not existed.": "该用户不存在", - "Modifying system built-in users is not allowed.": "不允许修改系统内置用户。", - "It is not allowed to delete system built-in users.": "不允许删除系统内置用户。", - "The selected object is not a point light.": "选中的物体不是点光源。", - "Point Light Helper": "点光源帮助器", - "Helper": "帮助器", - "Hemisphere Light Helper": "半球光帮助器", - "The selected object is not a hemisphere light.": "选中的物体不是半球光。", - "Rect Area Light Helper": "矩形光帮助器", - "The selected object is not a rect area light.": "选中的物体不是矩形光。", - "Logout": "注销", - "Welcome, {{Name}}": "欢迎您,{{Name}}", - "Are you sure to log out?": "确定要注销吗?", - "Change Password": "修改密码", - "Old password is not allowed to be empty.": "原密码不允许为空。", - "New password is not allowed to be empty.": "新密码不允许为空。", - "New password and confirm password is not the same.": "新密码和确认密码不相同", - "Old password is not correct.": "旧密码不正确。", - "Password changed successfully!": "密码修改成功!", - "Old Password": "原密码", - "New Password": "新密码", - "Please Select": "请选择", - "The system has not been initialized.": "系统尚未被初始化。", - "All roles and users will be deleted and the pre-initial state will be restored. Is it reset?": "将删除所有角色和用户,恢复初始化前状态。是否重置?", - "Reset successfully!": "重置成功!", - "Reset System": "重置系统", - "Add together": "相加", - "Add Child Department": "添加子机构", - "Add Department": "添加组织机构", - "Edit Department": "编辑组织机构", - "Pleast select a department.": "请选择机构。", - "Delete this department?": "删除这个机构?", - "PDept Name": "父机构名称", - "Not allowed.": "不允许。", - "System Setting": "系统设置", - "Register Default Role": "注册默认角色", - "Is Public": "是否公开", - "The scene is not existed.": "该场景不存在。", - "Permission denied.": "没有权限", - "Reset Password": "重置密码", - "Password reset successfully.": "密码重置成功。", - "Reset": "重置", - "Select User": "选择用户", - "Department": "组织机构", - "Select Department Window": "组织机构选择窗口", - "Please select a department.": "请选择机构。", - "Select Mode": "选择模式", - "Select Whole": "选择整体", - "Select Part": "选择部分", - "Please select a role.": "请选择角色", - "3D Campus": "三维园区", - "General Tools": "常用工具", - "Edit Tools": "编辑工具", - "Terrain Tools": "地形工具", - "Mark Tools": "标注工具", - "Measure Tools": "测量工具", - "Add Mode": "添加模式", - "Add To Center": "添加到中心", - "Click Scene To Add": "点击场景添加", - "Please click an plane in the scene.": "请点击场景中的一个平面。", - "Physics Engine": "物理引擎", - "Display": "显示", - "Draw Tools": "绘制工具", - "BufferGeometry Component": "BufferGeometry组件", - "Position Count": "顶点数量", - "Normal Count": "法线数量", - "UV Count": "UV数量", - "Index Count": "索引数量", - "Compute Vertex Normals": "计算顶点法线", - "Compute Face Normals": "计算面法线", - "MultiMaterial Component": "多材质组件", - "Count": "数量", - "Plugins": "插件", - "The plugin is not existed.": "该插件不存在", - "Modifying admin rights is not allowed.": "不允许修改管理员权限。", - "EnvMapIntensity": "环境贴图强度", - "Please select an file.": "请选择文件。", - "Point Mark": "点标注", - "Line Mark": "线标注", - "Polygon Mark": "面标注", - "Measure Distance": "测量距离", - "Measure Area": "测量面积", - "Measure Angle": "测量角度", - "Start distance measurement.": "开始距离测量。", - "Please click on the marked position.": "请点击放标注的位置。", - "Input marker name:": "输入标注名称", - "Marker name": "标注名称", - "Enable Hover": "启用高亮", - "Hover Color": "高亮颜色", - "Basic Shape": "基础图形", - "Example": "示例", - "Arkanoid": "打砖块", - "Ping Pong": "乒乓球", - "Shader": "着色器", - "Weather": "天气", - "Rain": "下雨", - "Snow": "下雪", - "Start Point": "起点", - "{{dist}}m": "{{dist}}米", - "To JSON File": "到JSON文件", - "To Collada File": "到Collada文件", - "To OBJ File": "到OBJ文件", - "To PLY File": "到PLY文件", - "To STL File": "到STL文件", - "Historic Version": "历史版本", - "Update Time": "更新时间", - "Load": "载入", - "Backup Database": "备份数据库", - "Backup database successfully!": "备份数据库成功!", - "mongodump.exe is not existed.": "mongodump.exe不存在。", - "Backing up, please wait.": "正在备份,请稍后。", - "Start area measurement.": "开始面积测量。", - "Save Child": "保存子组件", - "Optimization": "优化", - "Typeface Converter": "字体转换器", - "Font File": "字体文件", - "Reverse direction": "反转方向", - "Character set": "字符集", - ".ttc to .ttf": ".ttc转.ttf", - "Convert successfully!": "转换成功!", - "Unscaled Text": "不缩放文字", - "3D Text": "三维文字", - "Basic Geometry": "基本几何体", - "Curve": "曲线", - "Mark": "标注", - "Add 3D Text": "添加3D文字", - "Font": "字体", - "Thickness": "厚度", - "Enable Bevel": "启用倒角", - "Bevel Size": "倒角尺寸", - "Bevel Thickness": "倒角厚度", - "Typeface Management": "字体管理器", - "Only font file (.ttf) is allowed to upload.": "只允许上传字体文件(.ttf)。", - "The file is already existed.": "文件已经存在。", - "Create Time": "创建时间", - "Pleast upload typeface first.": "请先上传字体。", - "Download": "下载", - "Control Mode": "控制器模式", - "Editor Controls": "编辑器控制器", - "Free Controls": "自由控制器", - "First Perspective": "第一视角", - "Orthographic Camera": "正交相机", - "Perspective Camera": "透视相机", - "Arrow Helper": "箭头帮助器", - "Axes Helper": "坐标轴帮助器", - "District (Test)": "小区(测试)", - "Create district successfully.": "创建小区成功。", - "Ground": "地面", - "Download Mesh": "下载模型", - "Upload Sky Ball": "上传天空球", - "Please click the sky ball in the MapPanel.": "请点击贴图面板中的天空球。", - "Sky Ball": "天空球", - "The map you clicked is not sky ball.": "你点击的贴图不是天空球。", - "Clear Tools": "清空工具", - "View": "视图", - "Stats": "性能监视器", - "Assets Panel": "资源面板", - "Toolbar": "工具栏", - "Timeline Panel": "时间轴面板", - "Status Bar": "状态栏", - "Hide": "隐藏", - "Show": "显示", - "Add Folder": "添加文件夹", - "Input Folder Name": "输入文件夹名称", - "Folder Name": "文件夹名称", - "New folder": "新文件夹", - "Create Folder": "新建文件夹", - "Input New Name": "输入新名称", - "It is not allowed to drop on another script.": "不允许拖动到另一个脚本上。", - "Auto Save": "自动保存", - "Load Scene": "加载场景", - "An auto-save scene was detected. Load?": "检测到有自动保存的场景。是否加载?", - "Auto-save scene is cleared.": "自动保存场景已被清空。", - "WebGL Extensions": "WebGL扩展", - "Clear tools successfully": "清空工具成功", - "VR": "虚拟现实", - "VR Setting": "虚拟现实设置", - "Camera Pos": "相机位置", - "Camera Rotate": "相机旋转", - "Copy Camera Params": "拷贝相机参数", - "Handle touchstart event": "监听touchstart事件", - "Handle touchend event": "监听touchend事件", - "Handle touchmove event": "监听touchmove事件", - "Handle VR connected event": "监听VR connected事件", - "Handle VR disconnected event": "监听VR disconnected事件", - "Handle VR selectstart event": "监听VR selectstart事件", - "Handle VR selectend event": "监听VR selectend事件", - "PolygonOffset": "面偏移", - "polygonOffsetFactor": "面偏移参数", - "polygonOffsetUnits": "面偏移单位" -} \ No newline at end of file + "Remove Object": "移除物体", + "Wireframe": "线框", + "Torus Knot": "扭结", + "Spot Light": "聚光灯", + "Language": "语言", + "Cylinder": "圆柱体", + "Delete": "删除", + "FitLid": "适合壶盖", + "is not existed in the scene.": "在场景中不存在。", + "No Colors": "无颜色", + "Background": "背景", + "Add": "添加", + "PhysicsEnvironment": "物理环境", + "Penumbra": "半阴影", + "Rotate(E)": "旋转(E)", + "Target": "目标", + "CameraNear": "相机近", + "HeightMin": "最小高度", + "SphereShape": "球体", + "CollisionConfig": "碰撞配置", + "RoughnessMap": "粗糙纹理", + "Set Rotation": "设置旋转", + "Export OBJ": "导出obj文件", + "Information": "信息", + "Please select category.": "请选择类别!", + "Globe": "地球", + "Transparent": "透明", + "Line Chart": "折线图", + "Helpers": "帮助器", + "Confirm": "确认", + "SMAA": "多重采样抗锯齿(SMAA)", + "Saturate": "饱和度", + "DefaultCollisionConfig": "默认碰撞配置", + "Please check the layer.": "请勾选需要删除的层!", + "Scatter": "分散", + "Material Component": "材质组件", + "Sprite": "精灵", + "BackgroundColor": "背景颜色", + "Disabled": "禁用", + "Scale Locked": "锁定缩放", + "Tween Animation": "补间动画", + "Camera Component": "相机组件", + "Handle keyup event": "监听键盘抬起事件", + "Bump Scale": "凹凸纹理比例", + "Audio": "音频", + "Lathe": "酒杯", + "MinPolarAngle": "最小仰角", + "8 Samples": "8个样本", + "Ellipse": "椭圆", + "Add Script": "添加脚本", + "Edit Script": "编辑脚本", + "Fog": "雾", + "DragToLook": "拖动查看", + "WrapS": "横向填充", + "PixelEffect": "像素特效", + "Set Geometry.": "设置几何体.", + "AlphaMap": "透明纹理", + "Record": "录制", + "Cannot set texture": "无法设置纹理,", + "Force Directed Graph": "力导向图", + "Please upload all the textures before save.": "请上传所有立体贴图后再点击保存!", + "Amount": "量", + "Opacity": "不透明度", + "Please select texture first.": "请先为该物体选择纹理!", + "Geometry": "几何体", + "Solid Color": "纯色", + "Collapse": "折叠", + "Transform Component": "位移组件", + "Horizontal Line": "水平线", + "Rotate": "旋转", + "BlurDepthCutoff": "深度隔断", + "NoPan": "不平移", + "Light Component": "光源组件", + "CameraFar": "相机远", + "Preview": "预览", + "Ambient Light": "环境光", + "Handle dblclick event": "监听鼠标双击事件", + "MeshPhongMaterial": "冯氏材质", + "Export Scene": "导出场景", + "Set Material": "设置材质", + "Substractive Blending": "差混合", + "SpriteMaterial": "精灵材质", + "Turbidity": "浑浊度", + "Category List": "类别列表", + "Ease Func": "插值函数", + "MaxAzimuthAngle": "最大方位", + "AoMap": "遮挡纹理", + "NegY": "y轴负向", + "New Script": "新脚本", + "Flat Shading": "平坦着色", + "NegZ": "z轴负向", + "Side View": "侧视图", + "TextureSize": "贴图尺寸", + "Custom Status": "自定义", + "material has no coordinates.": "的材质没有纹理坐标!", + "Arrange Map": "整理贴图", + "CameraRight": "相机右", + "Clamp To Edge": "拉伸", + "Skeletal Animation": "骨骼动画", + "Fire Component": "火焰组件", + "ShaderMaterial": "着色器材质", + "HueRotate": "色调", + "Hierachy": "场景", + "Offset": "偏移", + "Decal": "贴花", + "Please click material on material panel.": "请点击材质面板中的材质!", + "Please select object!": "请选择物体!", + "AnimLayer": "动画层", + "Encoding": "编码", + "Level": "等级", + "Set Scale": "设置缩放", + "LookVertical": "朝上看", + "PhysicsType": "物理类型", + "is not available.": "不可用。", + "UnpackAlignment": "解压对齐", + "RadiusTop": "顶部半径", + "Theme": "主题", + "GIS Scene (Test)": "GIS场景(测试)", + "Form Panel": "表单", + "Front Side": "正面", + "MMD Model": "MMD模型", + "EndStatus": "结束状态", + "EnableKeys": "启用按键", + "Shininess": "光亮度", + "Lid": "壶盖", + "Publish website": "发布网站", + "HeightCoef": "高度系数", + "Vertex Colors": "顶点颜色", + "Camera": "相机", + "Object": "物体", + "PosX": "x轴正向", + "MaxAge": "持续时长", + "Visual": "可视化", + "Vertex Shader": "顶点着色器", + "Please click the audio in the Audio Panel.": "请点击音频面板中的音频!", + "Filter": "滤镜", + "Vertex": "顶点", + "ThetaLength": "转过纬度", + "Handle mousewheel event": "监听鼠标滚轮事件", + "ShaderInfo": "着色器信息", + "FogFar": "雾远点", + "Max Volume": "主音量", + "Angle": "角度", + "LookSpeed": "观望速度", + "Play New Window": "新窗口播放", + "Cluster Diagram": "集群图", + "Sky": "天空", + "Model": "模型", + "Sphere": "球体", + "Grayscale": "灰度", + "Animation Object": "动作物体", + "Camera Animation": "相机动画", + "PositionSpread": "位置发散", + "Background Image": "背景图片", + "Lisense": "授权", + "Directional": "平行光", + "Tree Diagram": "树状图", + "Component": "组件", + "Displace Scale": "位移纹理比例", + "2 Samples": "2个样本", + "Empty Scene": "空场景", + "New Scene": "新场景", + "Clone": "复制", + "BlendingMode": "混合模式", + "Arc": "弧度", + "Property": "属性", + "Play Fullscreen": "全屏播放", + "MinAzimuthAngle": "最小方位", + "Author": "作者", + "IsLocked": "是否锁定", + "Scatter Plot": "散点图", + "Rotate Center": "旋转中心", + "Recursion": "递归", + "Particle Animation": "粒子动画", + "Smoke": "烟", + "Directional Light": "平行光", + "Mirrored Repeat": "镜像重复", + "WireWidth": "线框粗细", + "Furface": "外观", + "TAA": "时间抗锯齿(TAA)", + "Shadow": "阴影", + "BoxShape": "正方体", + "Radius": "半径", + "Date": "日期", + "Shape": "形状", + "Brightness": "亮度", + "Renderer": "渲染器", + "PointCloudMaterial": "点云材质", + "Group": "组", + "FXAA Component": "快速近似抗锯齿(FXAA)", + "Gauge": "仪表", + "Illustrate: Double-click the area below the timeline to add an animation.": "说明:双击时间轴下方区域添加动画。", + "TubeArc": "管长弧度", + "Map": "贴图", + "Decay": "衰减", + "Bokeh Effect": "背景虚化特效", + "ClothComponent": "布料组件", + "Set Scene": "设置场景", + "Please click the map in the Map Panel.": "请点击贴图面板中的立体贴图!", + "Specular": "镜面度", + "FrontSide": "正面", + "Image upload successfully!": "图片上传成功!", + "MaxDistance": "最大距离", + "MetalNess": "金属度", + "maxAgeSpread": "持续时长发散", + "SmokeComponent": "烟组件", + "Shadow Component": "阴影组件", + "First Person Controls": "第一视角控制器", + "Type": "类型", + "EmissiveMap": "发光纹理", + "Histogram": "柱状图", + "Export Editor": "导出编辑器", + "Occlusion": "遮挡", + "MinDistance": "最小距离", + "Export Object JSON File": "导出物体JSON文件", + "Side": "剔除", + "Detail": "细节", + "Blinn": "布林", + "No Name": "No Name", + "ParticleCount": "粒子数量", + "Execute after program stopped": "程序结束运行后执行一次", + "Double Side": "双面", + "Clear indexedDB.": "清空IndexedDB。", + "Name": "名称", + "Front View": "正视图", + "Face Colors": "面颜色", + "Button": "按钮", + "ParticleEmitter": "粒子发射器", + "Current Status": "当前状态", + "Delete layer will delete all the anims on the layer. Are you sure?": "删除层会删除层上的所有动画。是否删除?", + "Script saved successfully!": "脚本保存成功!", + "GIS Component": "GIS组件", + "History": "历史", + "Loading...": "加载中...", + "TubelarSegments": "管状分段", + "CatmullRom Curve": "CatmullRom曲线", + "MeshPhysicalMaterial": "物理材质", + "Inertia": "惯性", + "KeyPanSpeed": "按键速度", + "Damp": "阻尼", + "MieCofficient": "Mie系数", + "Prefab": "预设体", + "Cube Texture fetch failed.": "立体贴图获取失败!", + "Please input": "请输入", + "LMesh Component": "LMesh组件", + "PCF Soft Shadow": "PCF软阴影", + "Teapot": "茶壶", + "MeshDepthMaterial": "深度材质", + "Stop": "停止", + "Roughness": "粗糙度", + "Select": "选择", + "Pointer Lock Controls": "指针锁定控制器", + "Text": "文字", + "Beauty&Occlusion": "美化+遮挡", + "Set Script": "设置脚本", + "Distance": "距离", + "Set Position": "设置位置", + "Throw Ball": "扔小球", + "Skin": "皮肤", + "Rect Area Light": "矩形光", + "Hemisphere Light": "半球光", + "Save Scene": "保存场景", + "Execute after scene render": "场景渲染后执行一次", + "Bar Chart": "条形图", + "Position": "位置", + "Play": "播放", + "NoZoom": "不缩放", + "Background Music": "背景音乐", + "Export STL": "导出stl文件", + "Mass": "质量", + "Sidebar": "侧边栏", + "Quality": "质量", + "Please select MMD animation only.": "只允许选择MMD模型动画!", + "Top View": "顶视图", + "EnableState": "启用状态", + "Rayleigh": "瑞利", + "None": "无", + "EnableRotate": "启用旋转", + "Arrange Thumbnail": "整理缩略图", + "AnimLayer3": "动画层3", + "Orbit Controls": "轨道控制器", + "Shader Program": "着色程序", + "Translate(W)": "平移(W)", + "Plant Trees": "批量种树", + "SizeSpread": "尺寸发散", + "MeshBasicMaterial": "基本材质", + "Clear History": "清空历史记录", + "Cloth": "布", + "CubicBezier Curve": "三次贝塞尔曲线", + "Physics Cloth": "添加物理布料", + "Reflectivity": "反射率", + "Format": "格式", + "MapSize": "贴图尺寸", + "Category Edit": "类别编辑", + "Category Add": "类别添加", + "Options Window": "选项窗口", + "Shader cannot be parsed.": "着色器信息 无法反序列化。", + "Perspective View": "透视图", + "Time": "时间", + "Scale": "缩放", + "Handle keydown event": "监听键盘按下事件", + "WrapT": "纵向填充", + "GenerateMipmaps": "开启层级", + "Fly Controls": "飞行控制器", + "DisplacementMap": "位移纹理", + "2D": "二维", + "Reflect": "反光", + "ClipBias": "裁剪偏移", + "OpenEnded": "两端开口", + "Clear": "清空", + "Set": "设置", + "32 Samples": "32个样本", + "Circle": "圆", + "AlphaTest": "α测试", + "SpecularMap": "镜面纹理", + "MaxBlur": "最大模糊", + "SoftBodyRigidBodyCollisionConfig": "软体刚体碰撞配置", + "Anisotropy": "各向异性", + "AccelerationSpread": "加速度发散", + "Exponential": "指数型", + "Fov": "视场", + "SkyColor": "天空颜色", + "Far": "远点", + "New": "新建", + "Ambient": "环境光", + "EnvMap": "环境纹理", + "Height": "高度", + "Loop": "循环播放", + "ClearCoat": "透明度", + "VerticalMin": "最小仰角", + "Please select camera animation only.": "只允许选择MMD相机动画!", + "Handle mousedown event": "监听鼠标按下事件", + "RadialSegments": "径向分段", + "Icosahedron": "二十面体", + "Geometry Component": "几何组件", + "Undo": "撤销", + "Visible": "可见性", + "Logs": "日志", + "Segments": "分段", + "has no physics helper.": "暂无对应物理形状帮助器。", + "Saved into indexDB.": "保存到IndexedDB中。", + "PCF Shadow": "PCF阴影", + "Acceleration": "加速度", + "Box": "正方体", + "Occlusion&Blur": "遮挡+模糊", + "Output": "输出", + "Aperture": "光圈", + "SSAO": "屏幕空间环境光遮蔽(SSAO)", + "DistortedArc": "扭曲弧度", + "Multiply": "相乘", + "Multiply Blending": "积混合", + "Draw Pologon": "画面", + "Line": "线条", + "Texture": "纹理", + "Triangle": "三角形", + "AudioListener": "音频监听器", + "GroundColor": "地面颜色", + "Scale(R)": "缩放(R)", + "CameraBottom": "相机下", + "PhiStart": "开始经度", + "Velocity": "速度", + "SliceSpacing": "切片厚度", + "QuadraticBezier Curve": "二次贝塞尔曲线", + "PixelSize": "像素尺寸", + "BeginTime": "开始时间", + "Gravity": "重力", + "Save As": "另存为", + "CameraLeft": "相机左", + "Move Object": "移动物体", + "Plane": "平面", + "Repeat": "重复", + "HeightMax": "最大高度", + "Halftone Effect": "半色调特效", + "SceneComponent": "场景组件", + "Basic Info": "基本信息", + "Sepia": "复古", + "NegX": "x轴负向", + "AutoForward": "自动前进", + "MovementSpeed": "移动速度", + "Gamma Output": "γ输出", + "Source": "源码", + "Script": "脚本", + "Enabled": "启用", + "Cube texture has already been uploaded.": "立体贴图已经存在于服务端,无需重复上传。", + "Tianditu Map": "天地图", + "AnimLayer2": "动画层2", + "AfterimageEffect": "残影特效", + "Not Set": "未设置", + "Are you sure to publish all scenes and assets?": "是否把所有场景、资源发布为静态网站?", + "Cube Texture": "立体贴图", + "Dig": "挖坑", + "Particle": "粒子", + "Waiting...": "请稍后...", + "Contrast": "对比度", + "ZoomSpeed": "缩放速度", + "Lighter": "变亮", + "BlurRadius": "模糊半径", + "BackSide": "背面", + "Spray": "喷射", + "No Blending": "不混合", + "FogNear": "雾近点", + "ThetaStart": "开始纬度", + "No Image": "无图片", + "Volume": "音量", + "EnableZoom": "启用缩放", + "RawShaderMaterial": "原始着色器材质", + "SSAA": "全屏抗锯齿(SSAA)", + "Add Object": "添加物体:", + "ScreenSpacePanning": "屏幕坐标", + "Dark Color": "深色", + "Settings": "设置", + "Basic Shadow": "基本阴影", + "Fire": "火焰", + "MeshStandardMaterial": "标准材质", + "FogColor": "雾颜色", + "MagFilter": "放大过滤", + "Additive Blending": "和混合", + "Bottom": "底部", + "Please click the animation in the animation panel.": "请点击动画面板中的动画!", + "Handle click event": "监听鼠标点击事件", + "BumpMap": "凹凸纹理", + "Polygon": "面", + "Options": "选项", + "FlipY": "反转Y", + "MetalnessMap": "金属纹理", + "Label": "标签", + "Darker": "变暗", + "DefaultCamera": "默认相机", + "Some Words": "一些文字", + "Body": "身体", + "Pie Chart": "饼状图", + "Gamma Input": "γ输入", + "Halo": "光晕", + "1 Sample": "1个样本", + "Water": "水", + "Clear Logs": "清空日志", + "Update UUID": "更新UUID", + "Normal": "法线", + "Texture Settings": "纹理设置", + "MinFilter": "缩小过滤", + "FogDensity": "雾浓度", + "Color": "颜色", + "Ellipse Curve": "椭圆曲线", + "Partition Diagram": "分区图", + "Play Audio": "播放音乐", + "Cancel": "取消", + "4 Samples": "4个样本", + "OK": "确定", + "Light": "光源", + "DotScreenEffect": "点阵化特效", + "New Material": "新材质", + "Size": "尺寸", + "ConstrainVertical": "限制仰角", + "Please enter material name": "请输入材质名称", + "RigidBody": "刚体", + "PanSpeed": "平移速度", + "Please click the map in the map panel.": "请点击贴图面板中的贴图!", + "EnableDamping": "启用惯性", + "Vertex Color": "顶点颜色", + "Scene": "场景", + "Export STL Binary": "导出stl二进制文件", + "Save": "保存", + "PhiLength": "转过经度", + "Basic Information": "基本信息", + "Panel": "面板", + "Fragment": "片源", + "Category": "类别", + "Image upload failed!": "图片上传失败!", + "GreyScale": "灰阶", + "RotateBlue": "蓝色偏转", + "Please select camera animation.": "只允许选择MMD相机动画!", + "RotateGreen": "绿色偏转", + "Unbiased": "无偏差", + "Execute each frame during running": "程序运行过程中,每帧都要执行", + "Mapping": "映射", + "VelocitySpread": "速度发散", + "Normal Blending": "一般混合", + "Shader Program Info": "着色器程序信息", + "Pressure": "压力", + "Close": "关闭", + "Upload": "上传", + "Message": "消息", + "Save Successfully.": "保存成功。", + "Focus": "焦距", + "Thumbnail": "缩略图", + "Handle mousemove event": "监听鼠标移动事件", + "LineDashedMaterial": "虚线材质", + "Luminance": "亮度", + "Time Disk": "时间圆盘", + "Square": "正方形", + "Create Script": "新建脚本", + "Near": "近点", + "Export Geometry JSON File": "导出几何体JSON文件", + "Invert": "颜色反转", + "MeshLambertMaterial": "兰伯特材质", + "Export GLTF": "导出gltf文件", + "NormalMap": "法线纹理", + "Documents": "文档", + "Model Animation": "模型动画", + "Upload failed.": "上传失败!", + "Shader Terrain": "着色器地形", + "Reflector Component": "反光组件", + "Vertical Line": "竖直线", + "MaxPolarAngle": "最大仰角", + "LineBasicMaterial": "线条材质", + "ActiveLock": "启用观望", + "SAO": "可扩展环境光遮挡(SAO)", + "Add physics cloth successfully": "添加物理布料成功!", + "Key Value Label": "键值标签", + "Search Content": "搜索内容", + "Custom Blending": "自定义混合", + "RepeatNum": "填充次数", + "Linear": "线性", + "Draw Line": "画线", + "Translate": "平移", + "Examples": "示例", + "Reduce Terrain": "降低地形", + "PosZ": "z轴正向", + "LightMap": "光照纹理", + "Arrange Mesh": "整理模型", + "Perlin Terrain": "柏林地形", + "VerticalMax": "最大仰角", + "Spline": "曲线", + "Point Light": "点光源", + "HeightSpeed": "高度速度", + "Draw Point": "画点", + "Chord Graph": "弦图", + "RadiusBottom": "底部半径", + "Bing Map": "必应地图", + "Ao Scale": "遮挡纹理比例", + "MinResolution": "最低分辨", + "Bias": "偏差", + "MeshNormalMaterial": "法向量材质", + "Intensity": "强度", + "Remove Script": "移除脚本", + "Raise Terrain": "升高地形", + "Emissive": "发光", + "Assets": "资源", + "StaticMoving": "静态移动", + "CameraTop": "相机上", + "ClearCoatRoughness": "透明粗糙度", + "WidthSegments": "宽度分段", + "Cast": "产生", + "Animation": "动画", + "Back Side": "反面", + "Blending": "混合", + "Delete Script": "删除脚本", + "Publish Scene": "发布场景", + "You should select Cube Texture.": "只允许选择立体贴图!", + "EndTime": "结束时间", + "Tube": "管段", + "Handle resize event": "监听屏幕大小改变事件", + "Google Map": "谷歌地图", + "BeginStatus": "开始状态", + "Export Static Website": "发布静态网站", + "RotateSpeed": "旋转速度", + "Terrain": "地形", + "PremultiplyAlpha": "左乘透明", + "Multi Modify": "多种改变", + "Error": "错误", + "KernalRadius": "核心半径", + "Scene Controller": "场景控制器", + "Set Geometry": "设置几何体", + "HeightSegments": "高度分段", + "NoRotate": "不旋转", + "Receive": "接收", + "DampingFactor": "惯性系数", + "Auto Play": "自动播放", + "The object you selected is not geometry.": "选中的对象不具有Geometry属性。", + "RGB Shift Effect": "颜色偏移特效", + "Blur": "模糊", + "Pack Diagram": "包图", + "Torus": "轮胎", + "All unsaved data will be lost. Are you sure?": "所有未保存数据将丢失,确定要新建场景吗?", + "Default": "默认", + "Depth": "深度", + "Edit": "编辑", + "Traceball Controls": "轨迹球控制器", + "Line Curve": "线段", + "Create empty scene successfully.": "空场景创建成功!", + "16 Samples": "16个样本", + "Grid": "网格", + "Redo": "重做", + "MieDirectionalG": "Mie方向", + "Export PLY": "导出ply文件", + "Load Successfully!": "载入成功!", + "DepthSegments": "深度分段", + "Character": "人物", + "About": "关于", + "Data Source Manage": "数据源管理", + "Script name existed.": "脚本名称重复!", + "Width": "宽度", + "Tool": "工具", + "BlurStdDev": "标准差", + "Execute before scene render": "场景渲染前执行一次", + "AutoRotate": "自动旋转", + "Filter Animation": "滤镜动画", + "Material": "材质", + "Glitch Effect": "毛刺特效", + "Help": "帮助", + "SoftVolume": "柔软体", + "Beauty": "美化", + "Handle mouseup event": "监听鼠标抬起事件", + "Please select MMD audio.": "请点击MMD动画对应的音频!", + "RotateRed": "红色偏转", + "Undo/Redo history will be cleared. Are you sure?": "撤销/重做历史记录将被清空。确定吗?", + "AutoRotateSpeed": "旋转速度", + "AnimLayer1": "动画层1", + "Point": "点", + "WildMode": "疯狂模式", + "Frag Shader": "片源着色器", + "PosY": "y轴正向", + "Publishing...": "发布中...", + "Gamma Factor": "γ因子", + "EnablePan": "启用平移", + "Skeleton": "骨骼", + "Light Color": "浅色", + "Program started.": "程序启动成功。", + "Program stoped.": "程序停止成功。", + "TimeSpan": "时长", + "Centripetal Force": "向心力", + "Chord": "弦线", + "Add Point": "添加点", + "Remove Point": "移除点", + "Closed": "闭合", + "Curve Type": "线型", + "Tension": "张力", + "CatmullRom curve should have at least 3 points.": "CatmullRom曲线至少应该有三个点!", + "Water Component": "水组件", + "Please save scene first.": "请先保存场景!", + "Please open scene first.": "请先打开场景!", + "Query": "询问", + "Are you sure to publish the current scene?": "是否发布当前场景?", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "整理贴图会去除名称后的数字和下划线,重新生成数据表和贴图目录,移除空文件夹和未引用贴图文件,系统会自动备份数据表和贴图目录,是否整理?", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "整理模型会去除名称后的数字和下划线,重新生成数据表、模型目录,移除空文件夹和未引用模型文件,系统会自动备份数据表、模型目录,是否整理?", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "整理缩略图会重新生成缩略图目录,修改场景、模型、贴图、材质、音频、动画、粒子、预设体、人物的缩略图路径,请先手动备份数据库,是否整理?", + "Are you sure to export the editor?": "是否导出编辑器?", + "Dragging animation on other animation is not allowed.": "不允许将动画拖动到其他动画上。", + "Quadratic Bezier Curve": "二次贝塞尔曲线", + "Scene data of string type is needed.": "需要字符串类型的场景数据参数!", + "Cannot deserialize scene data.": "无法解析场景数据!", + "Total {{totalPage}} Pages": "共{{totalPage}}页", + "Create": "添加", + "Please select a record.": "请选择数据", + "Delete this category?": "是否删除该类别?", + "No Type": "无类型", + "Debug Mode": "调试模式", + "Enable": "启用", + "Disable": "禁用", + "Add Layer": "添加层", + "Edit Layer": "编辑层", + "Delete Layer": "删除层", + "Slower": "减速", + "Pause": "暂停", + "Faster": "加速", + "Input Layer Name": "请输入层名", + "Layer Name": "层名", + "New Layer": "新层", + "Texture Generator": "纹理生成器", + "Please select an animation layer.": "请选择一个动画层。", + "Delete animation layer {{layerName}}?": "删除动画层 {{layerName}}?", + "Edit Layer Name": "编辑层名", + "New Animation": "新动画", + "Set Target": "设置目标", + "Show Stats": "性能监视器", + "View Helper": "视角帮助器", + "Begin Status": "开始状态", + "Begin Position": "开始位置", + "Begin Rotation": "开始旋转", + "Begin Scale Lock": "开始缩放锁定", + "Begin Scale": "开始缩放", + "End Status": "结束状态", + "End Position": "结束位置", + "End Rotation": "结束旋转", + "End Scale Lock": "结束缩放锁定", + "End Scale": "结束缩放", + "Export Collada": "导出Collada文件", + "Export DRACO": "导出DRACO文件", + "Please select a mesh.": "请选择一个模型", + "Scene Editor": "场景编辑器", + "Mesh Editor": "模型编辑器", + "Texture Editor": "纹理编辑器", + "Material Editor": "材质编辑器", + "Terrain Editor": "地形编辑器", + "AI Editor": "AI编辑器", + "Renderer Attributes": "渲染器属性", + "alpha": "透明", + "antialias": "抗锯齿", + "depth": "深度", + "desynchronized": "不同步", + "failIfMajorPerformanceCaveat": "警告报错", + "powerPreference": "电源选项", + "premultipliedAlpha": "左乘透明", + "preserveDrawingBuffer": "保留绘制缓冲区", + "stencil": "模板", + "Screenshot": "截图", + "Video": "视频", + "Clean Up Scenes": "清理场景", + "Are you sure to clean up all the deleted scenes and scene histories?": "确定要清理所有已经删除的场景和场景历史记录?", + "Please click the image in the MapPanel.": "请点击贴图面板中的图片", + "Only zip file is allowed!": "只允许上传zip格式文件!", + "Unknown file type!": "未知文件类型!", + "Upload successfully!": "上传成功!", + "ID is not allowed.": "ID不合法。", + "Name is not allowed to be empty.": "名称不允许为空。", + "Saved successfully!": "保存成功!", + "The asset is not existed!": "该资源不存在!", + "Get Successfully!": "获取成功!", + "Only mp3, wav, ogg format is allowed!": "只允许上传mp3、wav或ogg格式文件!", + "Type is not allowed to be empty!": "类型不允许为空!", + "The character is not existed.": "该角色不存在!", + "Delete successfully!": "删除成功!", + "Only one or six files is allowed to upload!": "只允许上传1个或6个文件!", + "Only jpg, png, mp4 file is allowed to upload!": "只允许上传jpg、png或mp4格式文件!", + "The material is not existed!": "该材质不存在!", + "lanim file is not uploaded!": "未上传动画(.lanim)文件!", + "png file is not uploaded!": "未上传贴图(.png)文件!", + "The particle is not existed!": "该粒子不存在!", + "The prefab is not existed!": "该预设体不存在!", + "The scene is not existed!": "该场景不存在!", + "Name is not allowed to start with _.": "名称不允许以下划线开头。", + "Only one file is allowed to upload!": "只允许上传1个文件!", + "Only jpg, png, gif format is allowed to upload!": "只允许上传jpg、png或gif格式文件!", + "Only mp4 or webm format is allowed to upload!": "只允许上传mp4或webm格式文件!", + "Export successfully!": "导出成功!", + "Execute sucessfully!": "执行成功!", + "Export Examples": "导出示例", + "Are you sure to export all the examples?": "确定要导出所有示例?", + "Grid Mode": "网格模式", + "Three.js Information": "Three.js信息", + "Version": "版本", + "Upload Image": "上传图片", + "Upload Sky Box": "上传天空盒", + "Upload Video": "上传视频", + "Login": "登录", + "Login successfully!": "登录成功!", + "Logout Successfully!": "注销成功!", + "Username": "用户名", + "Password": "密码", + "System": "系统", + "Department Management": "组织机构管理", + "User Management": "用户管理", + "Role Management": "角色管理", + "Authority Management": "权限管理", + "The name is already existed.": "该名称已经存在。", + "Create Date": "创建日期", + "Update Date": "更新日期", + "Status": "状态", + "First Page": "第一页", + "Previous Page": "上一页", + "Current Page": "当前页", + "Next Page": "下一页", + "Last Page": "最后一页", + "{{total}} Records": "{{total}}条记录", + "Delete the selected record?": "是否要删除选中的数据?", + "Refresh": "刷新", + "{{pageSize}} per page, total {{total}} records.": "每页{{pageSize}}条,共{{total}}条记录。", + "User Name": "用户名", + "NickName": "姓名", + "Username is not allowed to be empty.": "用户名不允许为空。", + "Password is not allowed to be empty.": "密码不允许为空。", + "Nick name is not allowed to be empty.": "姓名不允许为空", + "The username is already existed.": "用户名已经存在。", + "Edit Role": "编辑角色", + "Edit User": "编辑用户", + "Register": "注册", + "Disable Authority": "禁用权限", + "Enable Authority": "启用权限", + "The username or password is wrong.": "用户名或密码错误", + "Server configuration acquisition failed.": "服务器配置获取失败", + "To GLTF File": "到GLTF文件", + "Scene{{Time}}": "场景{{Time}}", + "Input File Name": "请输入文件名称", + "ScriptComponent": "脚本组件", + "Selected Color": "选中颜色", + "Selected Thickness": "选中粗细", + "Selected Effect": "选中效果", + "Border Thickness": "边框粗细", + "Confirm password is not allowed to be empty.": "确认密码不允许为空。", + "Password and confirm password is not the same.": "密码和确认密码不相同。", + "Register successfully!": "注册成功!", + "Confirm Password": "确认密码", + "Authority": "权限", + "List Animation": "获取动画列表", + "Add Animation": "添加动画", + "Edit Animation": "编辑动画", + "Delete Animation": "删除动画", + "List Audio": "获取音频列表", + "Add Audio": "添加音频", + "Edit Audio": "编辑音频", + "Delete Audio": "删除音频", + "List Category": "获取分类列表", + "Save Category": "保存分类", + "Delete Category": "删除分类", + "List Character": "获取人物列表", + "Edit Character": "编辑人物", + "Save Character": "保存人物", + "Delete Character": "删除人物", + "List Map": "获取贴图列表", + "Add Map": "添加贴图", + "Edit Map": "编辑贴图", + "Delete Map": "删除贴图", + "List Material": "获取材质列表", + "Edit Material": "编辑材质", + "Save Material": "保存材质", + "Delete Material": "删除材质", + "List Mesh": "获取模型列表", + "Add Mesh": "添加模型", + "Edit Mesh": "编辑模型", + "Delete Mesh": "删除模型", + "List Particle": "获取粒子列表", + "Edit Particle": "编辑粒子", + "Save Particle": "保存粒子", + "Delete Particle": "删除粒子", + "List Prefab": "获取预设体列表", + "Edit Prefab": "编辑预设体", + "Save prefab": "保存预设体", + "Delete Prefab": "删除预设体", + "List Scene": "获取场景列表", + "Edit Scene": "编辑场景", + "Delete Scene": "删除场景", + "List Screenshot": "获取截图列表", + "Add Screenshot": "添加截图", + "Edit Screenshot": "编辑截图", + "Delete Screenshot": "删除截图", + "Upload Thumbnail": "上传缩略图", + "List Video": "获取视频列表", + "Add Video": "添加视频", + "Edit Video": "编辑视频", + "Delete Video": "删除视频", + "List Operating Authority": "获取操作权限列表", + "Save Operating Authority": "保存操作权限", + "List Role": "获取角色列表", + "Add Role": "添加角色", + "Delete Role": "删除角色", + "List User": "获取用户列表", + "Add User": "添加用户", + "Delete User": "删除用户", + "RoleID is not defined.": "RoleID未定义。", + "Authorities is not defined.": "Authorities未定义。", + "Role": "角色", + "Initialize": "初始化", + "Are you sure to initialize the roles and users?": "确定要初始化角色和用户?", + "Authority is not enabled.": "权限未开启", + "System has already initialized.": "系统已经初始化完成", + "Initialize successfully!": "初始化成功!", + "Press OK To refresh.": "点击确定刷新页面。", + "The role is not existed.": "该角色不存在。", + "Modifying system built-in roles is not allowed.": "不允许修改系统内置角色。", + "It is not allowed to delete system built-in roles.": "不允许删除系统内置角色。", + "Description": "简介", + "Administrator": "管理员", + "User": "用户", + "Guest": "游客", + "The user is not existed.": "该用户不存在", + "Modifying system built-in users is not allowed.": "不允许修改系统内置用户。", + "It is not allowed to delete system built-in users.": "不允许删除系统内置用户。", + "The selected object is not a point light.": "选中的物体不是点光源。", + "Point Light Helper": "点光源帮助器", + "Helper": "帮助器", + "Hemisphere Light Helper": "半球光帮助器", + "The selected object is not a hemisphere light.": "选中的物体不是半球光。", + "Rect Area Light Helper": "矩形光帮助器", + "The selected object is not a rect area light.": "选中的物体不是矩形光。", + "Logout": "注销", + "Welcome, {{Name}}": "欢迎您,{{Name}}", + "Are you sure to log out?": "确定要注销吗?", + "Change Password": "修改密码", + "Old password is not allowed to be empty.": "原密码不允许为空。", + "New password is not allowed to be empty.": "新密码不允许为空。", + "New password and confirm password is not the same.": "新密码和确认密码不相同", + "Old password is not correct.": "旧密码不正确。", + "Password changed successfully!": "密码修改成功!", + "Old Password": "原密码", + "New Password": "新密码", + "Please Select": "请选择", + "The system has not been initialized.": "系统尚未被初始化。", + "All roles and users will be deleted and the pre-initial state will be restored. Is it reset?": "将删除所有角色和用户,恢复初始化前状态。是否重置?", + "Reset successfully!": "重置成功!", + "Reset System": "重置系统", + "Add together": "相加", + "Add Child Department": "添加子机构", + "Add Department": "添加组织机构", + "Edit Department": "编辑组织机构", + "Pleast select a department.": "请选择机构。", + "Delete this department?": "删除这个机构?", + "PDept Name": "父机构名称", + "Not allowed.": "不允许。", + "System Setting": "系统设置", + "Register Default Role": "注册默认角色", + "Is Public": "是否公开", + "The scene is not existed.": "该场景不存在。", + "Permission denied.": "没有权限", + "Reset Password": "重置密码", + "Password reset successfully.": "密码重置成功。", + "Reset": "重置", + "Select User": "选择用户", + "Department": "组织机构", + "Select Department Window": "组织机构选择窗口", + "Please select a department.": "请选择机构。", + "Select Mode": "选择模式", + "Select Whole": "选择整体", + "Select Part": "选择部分", + "Please select a role.": "请选择角色", + "3D Campus": "三维园区", + "General Tools": "常用工具", + "Edit Tools": "编辑工具", + "Terrain Tools": "地形工具", + "Mark Tools": "标注工具", + "Measure Tools": "测量工具", + "Add Mode": "添加模式", + "Add To Center": "添加到中心", + "Click Scene To Add": "点击场景添加", + "Please click an plane in the scene.": "请点击场景中的一个平面。", + "Physics Engine": "物理引擎", + "Display": "显示", + "Draw Tools": "绘制工具", + "BufferGeometry Component": "BufferGeometry组件", + "Position Count": "顶点数量", + "Normal Count": "法线数量", + "UV Count": "UV数量", + "Index Count": "索引数量", + "Compute Vertex Normals": "计算顶点法线", + "Compute Face Normals": "计算面法线", + "MultiMaterial Component": "多材质组件", + "Count": "数量", + "Plugins": "插件", + "The plugin is not existed.": "该插件不存在", + "Modifying admin rights is not allowed.": "不允许修改管理员权限。", + "EnvMapIntensity": "环境贴图强度", + "Please select an file.": "请选择文件。", + "Point Mark": "点标注", + "Line Mark": "线标注", + "Polygon Mark": "面标注", + "Measure Distance": "测量距离", + "Measure Area": "测量面积", + "Measure Angle": "测量角度", + "Start distance measurement.": "开始距离测量。", + "Please click on the marked position.": "请点击放标注的位置。", + "Input marker name:": "输入标注名称", + "Marker name": "标注名称", + "Enable Hover": "启用高亮", + "Hover Color": "高亮颜色", + "Basic Shape": "基础图形", + "Example": "示例", + "Arkanoid": "打砖块", + "Ping Pong": "乒乓球", + "Shader": "着色器", + "Weather": "天气", + "Rain": "下雨", + "Snow": "下雪", + "Start Point": "起点", + "{{dist}}m": "{{dist}}米", + "To JSON File": "到JSON文件", + "To Collada File": "到Collada文件", + "To OBJ File": "到OBJ文件", + "To PLY File": "到PLY文件", + "To STL File": "到STL文件", + "Historic Version": "历史版本", + "Update Time": "更新时间", + "Load": "载入", + "Backup Database": "备份数据库", + "Backup database successfully!": "备份数据库成功!", + "mongodump.exe is not existed.": "mongodump.exe不存在。", + "Backing up, please wait.": "正在备份,请稍后。", + "Start area measurement.": "开始面积测量。", + "Save Child": "保存子组件", + "Optimization": "优化", + "Typeface Converter": "字体转换器", + "Font File": "字体文件", + "Reverse direction": "反转方向", + "Character set": "字符集", + ".ttc to .ttf": ".ttc转.ttf", + "Convert successfully!": "转换成功!", + "Unscaled Text": "不缩放文字", + "3D Text": "三维文字", + "Basic Geometry": "基本几何体", + "Curve": "曲线", + "Mark": "标注", + "Add 3D Text": "添加3D文字", + "Font": "字体", + "Thickness": "厚度", + "Enable Bevel": "启用倒角", + "Bevel Size": "倒角尺寸", + "Bevel Thickness": "倒角厚度", + "Typeface Management": "字体管理器", + "Only font file (.ttf) is allowed to upload.": "只允许上传字体文件(.ttf)。", + "The file is already existed.": "文件已经存在。", + "Create Time": "创建时间", + "Pleast upload typeface first.": "请先上传字体。", + "Download": "下载", + "Control Mode": "控制器模式", + "Editor Controls": "编辑器控制器", + "Free Controls": "自由控制器", + "First Perspective": "第一视角", + "Orthographic Camera": "正交相机", + "Perspective Camera": "透视相机", + "Arrow Helper": "箭头帮助器", + "Axes Helper": "坐标轴帮助器", + "District (Test)": "小区(测试)", + "Create district successfully.": "创建小区成功。", + "Ground": "地面", + "Download Mesh": "下载模型", + "Upload Sky Ball": "上传天空球", + "Please click the sky ball in the MapPanel.": "请点击贴图面板中的天空球。", + "Sky Ball": "天空球", + "The map you clicked is not sky ball.": "你点击的贴图不是天空球。", + "Clear Tools": "清空工具", + "View": "视图", + "Stats": "性能监视器", + "Assets Panel": "资源面板", + "Toolbar": "工具栏", + "Timeline Panel": "时间轴面板", + "Status Bar": "状态栏", + "Hide": "隐藏", + "Show": "显示", + "Add Folder": "添加文件夹", + "Input Folder Name": "输入文件夹名称", + "Folder Name": "文件夹名称", + "New folder": "新文件夹", + "Create Folder": "新建文件夹", + "Input New Name": "输入新名称", + "It is not allowed to drop on another script.": "不允许拖动到另一个脚本上。", + "Auto Save": "自动保存", + "Load Scene": "加载场景", + "An auto-save scene was detected. Load?": "检测到有自动保存的场景。是否加载?", + "Auto-save scene is cleared.": "自动保存场景已被清空。", + "WebGL Extensions": "WebGL扩展", + "Clear tools successfully": "清空工具成功", + "VR": "虚拟现实", + "VR Setting": "虚拟现实设置", + "Camera Pos": "相机位置", + "Camera Rotate": "相机旋转", + "Copy Camera Params": "拷贝相机参数", + "Handle touchstart event": "监听touchstart事件", + "Handle touchend event": "监听touchend事件", + "Handle touchmove event": "监听touchmove事件", + "Handle VR connected event": "监听VR connected事件", + "Handle VR disconnected event": "监听VR disconnected事件", + "Handle VR selectstart event": "监听VR selectstart事件", + "Handle VR selectend event": "监听VR selectend事件", + "PolygonOffset": "面偏移", + "polygonOffsetFactor": "面偏移参数", + "polygonOffsetUnits": "面偏移单位", + "Configure Animation": "配置动画", + "Please select the animation target": "请选择动画目标", + "Are you sure you want to delete this animation?": "您确定删除此动画吗?", + "Animation added successfully": "动画添加成功", + "Animation modification successful": "动画修改成功", + "The maximum animation duration is 1 hour": "最长动画时长为1个小时" +} diff --git a/web/locales/zh-TW.json b/web/locales/zh-TW.json index a79b148c914321cc2275dfbe6929798eaa3364f6..7a2ac71de818cbae673ebe298d651d376d64b2a0 100644 --- a/web/locales/zh-TW.json +++ b/web/locales/zh-TW.json @@ -1,644 +1,650 @@ { - "Shadow": "陰影", - "Current Status": "當前狀態", - "Scatter": "分散", - "Clear indexedDB.": "清空IndexedDB。", - "DampingFactor": "減震係數", - "Listen to mousemove event": "監聽鼠標移動事件", - "Set Scene": "設置場景", - "BackSide": "背面", - "VerticalMax": "最大仰角", - "Preview": "預覽", - "Add Script": "添加腳本", - "Edit Script": "編輯腳本", - "Sone Words": "一些文字", - "Directional": "平行光", - "Reflector Component": "反光組件", - "No Name": "未命名", - "Prefab": "預設體", - "Box": "正方體", - "Cast": "產生", - "MinPolarAngle": "最小仰角", - "Tube": "管段", - "Please select MMD animation only.": "只允許選擇MMD模型動畫!", - "Publish website": "發佈網站", - "Help": "幫助", - "Arrange Mesh": "整理模型", - "Language": "語言", - "Fog": "霧", - "Please enter material name": "請輸入材質名稱", - "AutoForward": "自動前進", - "Execute after scene render": "場景渲染後執行一次", - "GenerateMipmaps": "開啟層級", - "SmokeComponent": "煙組件", - "Please select texture first.": "請先為該物體選擇紋理!", - "2 Samples": "2個樣本", - "Visible": "可見性", - "ShaderInfo": "著色器信息", - "Roughness": "粗糙度", - "Examples": "示例", - "Glitch Effect": "毛刺特效", - "Beauty&Occlusion": "", - "Delete": "刪除", - "Set Position": "設置位置", - "Width": "寬度", - "Remove Point": "移除點", - "Frag Shader": "片源著色器", - "BumpMap": "凹凸紋理", - "The object you selected is not geometry.": "選中的對像不具有Geometry屬性。", - "Execute after program stopped": "程序結束運行後執行一次", - "Translate(W)": "平移(W)", - "EnvMap": "環境紋理", - "32 Samples": "32個樣本", - "EnableRotate": "啟用旋轉", - "Velocity": "速度", - "Dark Color": "深色", - "Square": "正方形", - "Please select camera animation.": "只允許選擇MMD相機動畫!", - "AccelerationSpread": "加速度發散", - "RadiusTop": "頂部半徑", - "ZoomSpeed": "縮放速度", - "Undo/Redo history will be cleared. Are you sure?": "撤銷/重做歷史記錄將被清空。", - "No Blending": "不混合", - "Map": "貼圖", - "Occlusion&Blur": "", - "Multiply": "相乘", - "Tool": "工具", - "Google Map": "谷歌地圖", - "Visual": "可視化", - "PhiLength": "轉過經度", - "Basic Shadow": "基本陰影", - "Listen to mousedown event": "監聽鼠標按下事件", - "Panel": "面板", - "Author": "作者", - "ClearCoat": "透明度", - "Renderer": "渲染器", - "Category Edit": "類別編輯", - "SliceSpacing": "切片厚度", - "Background": "背景", - "StaticMoving": "靜態移動", - "Hemisphere Light": "半球光", - "Transparent": "透明", - "Orbit Controls": "軌道控制器", - "Shader cannot be parsed.": "著色器信息 無法反序列化。", - "SSAA": "全屏抗鋸齒(SSAA)", - "Saturate": "飽和度", - "Clear": "清空", - "Component": "組件", - "LightMap": "光照紋理", - "HeightSegments": "高度分段", - "Target": "目標", - "Lathe": "酒杯", - "Theme": "主題", - "Edit": "編輯", - "SphereShape": "球體", - "Cylinder": "圓柱體", - "NoRotate": "不旋轉", - "Exporting...": "正在導出...", - "Light Component": "光源組件", - "Settings": "設置", - "NoPan": "不平移", - "PointCloudMaterial": "點雲材質", - "Horizontal Line": "水平線", - "No Colors": "無顏色", - "Sky": "天空", - "Tree Diagram": "樹狀圖", - "Geometry Component": "幾何組件", - "Set Material": "設置材質", - "Mirrored Repeat": "鏡像重複", - "Line Curve": "線段", - "Listen to resize event": "監聽屏幕大小改變事件", - "Save As": "另存為", - "MinDistance": "最小距離", - "Set Geometry": "設置幾何體", - "Particle": "粒子", - "NegX": "x軸負向", - "SMAA": "多重採樣抗鋸齒(SMAA)", - "4 Samples": "4個樣本", - "Material Component": "材質組件", - "Raise Terrain": "升高地形", - "Time Disk": "時間圓盤", - "Clamp To Edge": "拉伸", - "Translate": "平移", - "Dragging animation on other animation is not allowed.": "不允許將動畫拖動到其他動畫上。", - "Please click material on material panel.": "請點擊材質面板中的材質!", - "Export OBJ": "導出obj文件", - "Model": "模型", - "Logs": "日誌", - "Custom Status": "自定義", - "Front View": "正視圖", - "Occlusion": "遮擋", - "Gamma Factor": "γ因子", - "Error": "錯誤", - "Execute before scene render": "場景渲染前執行一次", - "Lisense": "授權", - "Listen to dblclick event": "監聽鼠標雙擊事件", - "Line Chart": "折線圖", - "Shininess": "光亮度", - "RadialSegments": "徑向分段", - "Scale(R)": "縮放(R)", - "Script saved successfully!": "腳本保存成功!", - "Position": "位置", - "RoughnessMap": "粗糙紋理", - "Total {{totalPage}} Pages": "共{{totalPage}}頁", - "MapSize": "貼圖尺寸", - "Specular": "鏡面度", - "Reflectivity": "反射率", - "ClipBias": "裁剪偏移", - "AnimLayer3": "動畫層3", - "HeightCoef": "高度係數", - "Shadow Component": "陰影組件", - "Invert": "顏色反轉", - "Pointer Lock Controls": "指針鎖定控制器", - "Reflect": "反光", - "PhysicsEnvironment": "物理環境", - "Transform Component": "位移組件", - "First Person Controls": "第一視角控制器", - "Encoding": "編碼", - "Displace Scale": "位移紋理比例", - "Listen to keyup event": "監聽鍵盤抬起事件", - "NormalMap": "法線紋理", - "Gravity": "重力", - "Delete Script": "刪除腳本", - "BlurStdDev": "標準差", - "Cube texture has already been uploaded.": "立體貼圖已經存在於服務端,無需重複上傳。", - "ScreenSpacePanning": "屏幕坐標", - "Globe": "地球", - "Shader Program Info": "著色器程序信息", - "Body": "身體", - "KernalRadius": "核心半徑", - "MagFilter": "放大過濾", - "New Material": "新材質", - "UnpackAlignment": "解壓對齊", - "Partition Diagram": "分區圖", - "Decay": "衰減", - "Bing Map": "必應地圖", - "CameraBottom": "相機下", - "MaxPolarAngle": "最大仰角", - "Scene Controller": "場景控制器", - "Set": "設置", - "Wireframe": "線框", - "Export Object": "導出物體", - "Script name existed.": "腳本名稱重複!", - "Side View": "側視圖", - "Teapot": "茶壺", - "Cluster Diagram": "集群圖", - "Cube Texture fetch failed.": "立體貼圖獲取失敗!", - "Brightness": "亮度", - "SoftBodyRigidBodyCollisionConfig": "軟體剛體碰撞配置", - "Set Geometry.": "設置幾何體.", - "Information": "信息", - "MeshLambertMaterial": "蘭伯特材質", - "Loading...": "加載中...", - "CameraNear": "相機近", - "Create empty scene successfully.": "空場景創建成功!", - "Inertia": "慣性", - "CameraLeft": "相機左", - "SSAO": "屏幕空間環境光遮蔽(SSAO)", - "Recursion": "遞歸", - "Update UUID": "更新UUID", - "CatmullRom Curve": "CatmullRom曲線", - "CameraFar": "相機遠", - "Set Rotation": "設置旋轉", - "Please check the layer.": "請勾選需要刪除的層!", - "Record": "錄製", - "RotateRed": "紅色偏轉", - "Export STL Binary": "導出stl二進製文件", - "Light": "光源", - "RigidBody": "剛體", - "Draw Pologon": "畫面", - "RotateSpeed": "旋轉速度", - "Cannot deserialize scene data.": "無法解析場景數據!", - "PosX": "x軸正向", - "AnimLayer2": "動畫層2", - "EndStatus": "結束狀態", - "is not existed in the scene.": "在場景中不存在。", - "Linear": "線性", - "Physics Cloth": "添加物理布料", - "Smoke": "煙", - "Quadratic Bezier Curve": "二次貝塞爾曲線", - "New Script": "新建腳本", - "ParticleEmitter": "粒子發射器", - "QuadraticBezier Curve": "二次貝塞爾曲線", - "You should select Cube Texture.": "只允許選擇立體貼圖!", - "Close": "關閉", - "DepthSegments": "深度分段", - "Play Fullscreen": "全屏播放", - "MaxAzimuthAngle": "最大方位", - "Pressure": "壓力", - "Group": "組", - "Quality": "質量", - "material has no coordinates.": "的材質沒有紋理坐標!", - "ShaderMaterial": "著色器材質", - "Image upload successfully!": "圖片上傳成功!", - "PCF Soft Shadow": "PCF軟陰影", - "Gamma Output": "γ輸出", - "Skin": "皮膚", - "EnableDamping": "啟用減震", - "AlphaMap": "透明紋理", - "DisplacementMap": "位移紋理", - "Anisotropy": "各向異性", - "Not Set": "未設置", - "Please click the audio in the Audio Panel.": "請點擊音頻面板中的音頻!", - "Export Static Website": "發布靜態網站", - "Filter": "濾鏡", - "Fly Controls": "飛行控制器", - "8 Samples": "8個樣本", - "Blur": "模糊", - "Flat Shading": "平滑", - "Reduce Terrain": "降低地形", - "has no physics helper.": "暫無對應物理形狀幫助器。", - "Add physics cloth successfully": "添加物理布料成功!", - "Darker": "變暗", - "NoZoom": "不縮放", - "Max Volume": "主音量", - "Hierachy": "場景", - "Export STL": "導出stl文件", - "Are you sure to export the current scene?": "是否導出當前場景?", - "FogDensity": "霧濃度", - "Fragment": "片源", - "RawShaderMaterial": "原始著色器材質", - "Script": "腳本", - "Clear History": "清空歷史記錄", - "Stop": "停止", - "BoxShape": "正方體", - "16 Samples": "16個樣本", - "Bar Chart": "條形圖", - "Triangle": "三角形數", - "MinFilter": "縮小過濾", - "TAA": "時間抗鋸齒(TAA)", - "Tianditu Map": "天地圖", - "Blending": "混合", - "Gauge": "儀表", - "HueRotate": "色調", - "Time": "時間", - "Custom Blending": "自定義混合", - "Acceleration": "加速度", - "LineDashedMaterial": "虛線材質", - "Draw Point": "畫點", - "Background Image": "背景圖片", - "Receive": "接收", - "Thumbnail": "縮略圖", - "MeshPhysicalMaterial": "物理材質", - "MetalnessMap": "金屬紋理", - "Closed": "閉合", - "Are you sure to publish all scenes and assets?": "是否把所有場景、資源發佈為靜態網站?", - "Set Script": "設置腳本", - "MinAzimuthAngle": "最小方位", - "Please upload all the textures before save.": "請上傳所有立體貼圖後再點擊保存!", - "MeshPhongMaterial": "馮氏材質", - "HeightMin": "最小高度", - "SAO": "可擴展環境光遮擋(SAO)", - "Please click the animation in the animation panel.": "請點擊動畫面板中的動畫!", - "Histogram": "柱狀圖", - "ClothComponent": "布料組件", - "Property": "屬性", - "Illustrate: Double-click the area below the timeline to add an animation.": "說明:雙擊時間軸下方區域添加動畫。", - "Source": "源碼", - "Gamma Input": "γ輸入", - "MieDirectionalG": "滅方向", - "Clear Logs": "清空日誌", - "Please open scene first.": "請先打開場景!", - "Please select camera animation only.": "只允許選擇MMD相機動畫!", - "Plant Trees": "批量種樹", - "Create Script": "創建腳本", - "is not available.": "不可用。", - "Normal": "法線", - "Play Audio": "播放音樂", - "maxAgeSpread": "持續時長發散", - "Collapse": "折疊", - "Double Side": "雙面", - "Pie Chart": "餅狀圖", - "LookVertical": "朝上看", - "Contrast": "對比度", - "AutoRotateSpeed": "旋轉速度", - "BackgroundColor": "背景顏色", - "Export Editor": "導出編輯器", - "Camera Component": "相機組件", - "Helpers": "幫助器", - "MaxBlur": "最大模糊", - "LookSpeed": "觀望速度", - "Multiply Blending": "積混合", - "Object": "物體數", - "CameraTop": "相機上", - "VerticalMin": "最小仰角", - "Date": "日期", - "Scale Locked": "鎖定縮放", - "Tween Animation": "補間動畫", - "Disabled": "禁用", - "Format": "格式", - "Penumbra": "半陰影", - "Scene": "場景", - "Ease Func": "插值函數", - "New": "新建", - "Remove Object": "移除物體", - "Solid Color": "純色", - "Shader Program": "著色程序", - "Waiting...": "請稍後...", - "DragToLook": "拖動查看", - "Directional Light": "平行光", - "DistortedArc": "扭曲弧度", - "Animation Object": "動作物體", - "FXAA Component": "快速近似抗鋸齒(FXAA)", - "Scene data of string type is needed.": "需要字符串類型的場景數據參數!", - "Perlin Terrain": "柏林地形", - "Arrange Thumbnail": "整理縮略圖", - "CollisionConfig": "碰撞配置", - "Near": "近點", - "Listen to mouseup event": "監聽鼠標抬起事件", - "Grayscale": "灰度", - "Saved into indexDB.": "保存到IndexedDB中。", - "CubicBezier Curve": "三次貝塞爾曲線", - "Water Component": "水組件", - "GreyScale": "灰階", - "GIS Component": "GIS組件", - "RotateBlue": "藍色偏轉", - "Circle": "圓", - "Radius": "半徑", - "Clone": "複製", - "Spline": "曲線", - "Upload": "上傳", - "Add Object": "添加物體:", - "Vertex Shader": "頂點著色器", - "Rotate(E)": "旋轉(E)", - "Export PLY": "導出ply文件", - "SpecularMap": "鏡面紋理", - "Volume": "循環播放", - "MetalNess": "金屬度", - "Ellipse": "橢圓", - "Halo": "光暈", - "Exponential": "指數型", - "Output": "輸出", - "Color": "顏色", - "Assets": "資源", - "NegZ": "z軸負向", - "All unsaved data will be lost. Are you sure?": "所有未保存數據將丟失,確定要新建場景嗎?", - "Multi Modify": "多種改變", - "RGB Shift Effect": "顏色偏移特效", - "Ambient": "環境光", - "Tension": "張力", - "EnableKeys": "啟用按鍵", - "AoMap": "遮擋紋理", - "Point Light": "點光源", - "Upload failed.": "上傳失敗!", - "Category List": "類別列表", - "WireWidth": "線框粗細", - "Plane": "平面", - "Please click the map in the Map Panel.": "請點擊貼圖面板中的立體貼圖!", - "AudioListener": "音頻監聽器", - "AfterimageEffect": "殘影特效", - "LineBasicMaterial": "線條材質", - "No Image": "無圖片", - "Vertex": "頂點數", - "Pack Diagram": "包圖", - "BeginTime": "開始時間", - "Bottom": "底部", - "MovementSpeed": "移動速度", - "OK": "確定", - "Audio": "音頻", - "WidthSegments": "寬度分段", - "MieCofficient": "滅係數", - "Centripetal Force": "向心力", - "Scatter Plot": "散點圖", - "Character": "人物", - "Mass": "質量", - "Distance": "距離", - "Lighter": "變亮", - "Camera": "相機", - "Detail": "細節", - "PixelEffect": "像素特效", - "Face Colors": "面顏色", - "Material": "材質", - "Icosahedron": "二十面體", - "Dig": "挖坑", - "Water": "水", - "Ao Scale": "遮擋紋理比例", - "Normal Blending": "一般混合", - "KeyPanSpeed": "按鍵速度", - "Segments": "分段", - "Geometry": "幾何體", - "Amount": "量", - "Aperture": "光圈", - "Options": "選項", - "Form Panel": "表單", - "Opacity": "不透明度", - "ConstrainVertical": "限制仰角", - "1 Sample": "1個樣本", - "Cube Texture": "立體貼圖", - "WrapS": "橫向填充", - "Mapping": "映射", - "ThetaLength": "轉過緯度", - "Decal": "貼花", - "EndTime": "結束時間", - "Ellipse Curve": "橢圓曲線", - "Category": "類別", - "DefaultCamera": "默認相機", - "Please input": "請輸入", - "DefaultCollisionConfig": "默認碰撞配置", - "Remove Script": "移除腳本", - "PosY": "y軸正向", - "Program stoped.": "程序停止成功。", - "MeshDepthMaterial": "深度材質", - "Lid": "壺蓋", - "Skeleton": "骨骼", - "Bokeh Effect": "背景虛化特效", - "FitLid": "適合壺蓋", - "EmissiveMap": "發光紋理", - "Arc": "弧度", - "FogColor": "霧顏色", - "Polygon": "面", - "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "整理貼圖會去除名稱後的數字和下劃線,重新生成數據表和貼圖目錄,移除空文件夾和未引用貼圖文件,系統會自動備份數據表和貼圖目錄,是否整理?", - "Cancel": "取消", - "RepeatNum": "填充次數", - "MaxDistance": "最大距離", - "Beauty": "美化", - "Default": "默認", - "Button": "按鈕", - "SkyColor": "天空顏色", - "Save Successfully.": "保存成功。", - "Sepia": "復古", - "PhiStart": "開始經度", - "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "整理縮略圖會重新生成縮略圖目錄,修改場景、模型、貼圖、材質、音頻、動畫、粒子、預設體、人物的縮略圖路徑,請先手動備份數據庫,是否整理?", - "Export GLTF": "導出gltf文件", - "PosZ": "z軸正向", - "Camera Animation": "相機動畫", - "Angle": "角度", - "Force Directed Graph": "力導向圖", - "Vertex Color": "頂點顏色", - "Export Geometry": "導出幾何體", - "Substractive Blending": "差混合", - "Blinn": "布林", - "CameraRight": "相機右", - "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "整理模型會去除名稱後的數字和下劃線,重新生成數據表、模型目錄,移除空文件夾和未引用模型文件,系統會自動備份數據表、模型目錄,是否整理?", - "WrapT": "縱向填充", - "Add": "相加", - "Options Window": "選項窗口", - "PanSpeed": "平移速度", - "Save Scene": "保存場景", - "Top View": "頂視圖", - "MinResolution": "最低分辨", - "TubeArc": "管長弧度", - "Fire Component": "火焰組件", - "Shape": "形狀", - "Load Successfully!": "載入成功!", - "Draw Line": "畫線", - "MeshNormalMaterial": "法向量材質", - "Image upload failed!": "圖片上傳失敗!", - "Arrange Map": "整理貼圖", - "Add Point": "添加點", - "Data Source Manage": "數據源管理", - "Turbidity": "渾濁度", - "Cloth": "布", - "Offset": "偏移", - "Basic Info": "基本信息", - "Front Side": "正面", - "Torus": "輪胎", - "Bump Scale": "凹凸紋理比例", - "FogFar": "霧遠點", - "Unbiased": "無偏差", - "BlurDepthCutoff": "深度隔斷", - "Spot Light": "聚光燈", - "Listen to click event": "監聽鼠標點擊事件", - "Rotate Center": "旋轉中心", - "Fire": "火焰", - "Torus Knot": "扭結", - "MeshStandardMaterial": "標準材質", - "Vertical Line": "豎直線", - "Furface": "外觀", - "NegY": "y軸負向", - "Please select category.": "請選擇類別!", - "Far": "遠點", - "Message": "消息", - "WildMode": "瘋狂模式", - "Bias": "偏差", - "Depth": "深度", - "FrontSide": "正面", - "Undo": "撤銷", - "Please save scene first.": "請先保存場景!", - "Additive Blending": "和混合", - "TubelarSegments": "管狀分段", - "Particle Animation": "粒子動畫", - "Rect Area Light": "矩形光", - "MaxAge": "持續時長", - "Texture": "紋理", - "Are you sure to export the editor?": "是否導出編輯器?", - "Label": "標籤", - "Grid": "網格", - "Move Object": "移動物體", - "HeightMax": "最大高度", - "About": "關於", - "Query": "詢問", - "Auto Play": "自動播放", - "Listen to mousewheel event": "監聽鼠標滾輪事件", - "PhysicsType": "物理類型", - "Fov": "視場", - "TextureSize": "貼圖尺寸", - "EnableState": "啟用狀態", - "Repeat": "重複", - "ActiveLock": "啟用觀望", - "Key Value Label": "鍵值標籤", - "Level": "等級", - "Chord": "弦線", - "Type": "類型", - "Ambient Light": "環境光", - "History": "歷史", - "Save": "保存", - "RadiusBottom": "底部半徑", - "Program started.": "程序啟動成功。", - "Confirm": "確認", - "Halftone Effect": "半色調特效", - "Play": "播放", - "DotScreenEffect": "點陣化特效", - "Focus": "焦距", - "AnimLayer1": "動畫層1", - "BlendingMode": "混合模式", - "MeshBasicMaterial": "基本材質", - "Background Music": "背景音樂", - "Redo": "重做", - "Execute each frame during running": "程序運行過程中,每幀都要執行", - "CatmullRom curve should have at least 3 points.": "CatmullRom曲線至少應該有三個點!", - "PixelSize": "像素尺寸", - "Texture Settings": "紋理設置", - "Sprite": "精靈", - "SceneComponent": "場景組件", - "Emissive": "發光", - "Export Scene": "導出場景", - "Light Color": "淺色", - "SizeSpread": "尺寸發散", - "Rotate": "旋轉", - "ParticleCount": "粒子數量", - "Damp": "阻尼", - "Play New Window": "新窗口播放", - "Shader Terrain": "著色器地形", - "ClearCoatRoughness": "透明粗糙度", - "Please select MMD audio.": "請點擊MMD動畫對應的音頻!", - "LMesh Component": "LMesh組件", - "Select": "選擇", - "Documents": "文檔", - "Delete layer will delete all the anims on the layer. Are you sure?": "刪除層會刪除層上的所有動畫。", - "Basic Information": "基本信息", - "Delete successfully!": "刪除成功!", - "New Scene": "新場景", - "BlurRadius": "模糊半徑", - "Model Animation": "模型動畫", - "RotateGreen": "綠色偏轉", - "AnimLayer": "動畫層", - "Sidebar": "側邊欄", - "AutoRotate": "自動旋轉", - "BeginStatus": "開始狀態", - "ThetaStart": "開始緯度", - "EnableZoom": "啟用縮放", - "Cannot set texture": "無法設置紋理,", - "OpenEnded": "兩端開口", - "Side": "剔除", - "AlphaTest": "α測試", - "Point": "點", - "IsLocked": "是否鎖定", - "Curve Type": "線型", - "PositionSpread": "位置發散", - "Enabled": "啟用", - "TimeSpan": "時長", - "EnablePan": "啟用平移", - "Sphere": "球體", - "Vertex Colors": "頂點顏色", - "Text": "文本", - "Please select object!": "請選擇物體!", - "Filter Animation": "濾鏡動畫", - "Name": "名稱", - "Perspective View": "透視圖", - "PCF Shadow": "PCF陰影", - "Chord Graph": "弦圖", - "2D": "二維", - "Rayleigh": "瑞利", - "SpriteMaterial": "精靈材質", - "Luminance": "亮度", - "Skeletal Animation": "骨骼動畫", - "Please click the map in the map panel.": "請點擊貼圖面板中的貼圖!", - "Back Side": "反面", - "Traceball Controls": "軌跡球控制器", - "Size": "尺寸", - "ThrowBall": "扔小球", - "VelocitySpread": "速度發散", - "Empty Scene": "空場景", - "SoftVolume": "柔軟體", - "MMD Model": "MMD模型", - "Listen to keydown event": "監聽鍵盤按下事件", - "FogNear": "霧近點", - "GroundColor": "地面顏色", - "None": "無", - "Intensity": "強度", - "Set Scale": "設置縮放", - "Animation": "動畫", - "GIS Scene": "GIS場景", - "Line": "線條", - "Spray": "噴射", - "Search Content": "搜索內容", - "Height": "高度", - "PremultiplyAlpha": "左乘透明", - "Terrain": "地形", - "Publish Scene": "發布場景", - "Scale": "縮放", - "FlipY": "反轉Y", - "Loop": "循環播放", - "HeightSpeed": "高度速度" -} \ No newline at end of file + "Shadow": "陰影", + "Current Status": "當前狀態", + "Scatter": "分散", + "Clear indexedDB.": "清空IndexedDB。", + "DampingFactor": "減震係數", + "Listen to mousemove event": "監聽鼠標移動事件", + "Set Scene": "設置場景", + "BackSide": "背面", + "VerticalMax": "最大仰角", + "Preview": "預覽", + "Add Script": "添加腳本", + "Edit Script": "編輯腳本", + "Sone Words": "一些文字", + "Directional": "平行光", + "Reflector Component": "反光組件", + "No Name": "No Name", + "Prefab": "預設體", + "Box": "正方體", + "Cast": "產生", + "MinPolarAngle": "最小仰角", + "Tube": "管段", + "Please select MMD animation only.": "只允許選擇MMD模型動畫!", + "Publish website": "發佈網站", + "Help": "幫助", + "Arrange Mesh": "整理模型", + "Language": "語言", + "Fog": "霧", + "Please enter material name": "請輸入材質名稱", + "AutoForward": "自動前進", + "Execute after scene render": "場景渲染後執行一次", + "GenerateMipmaps": "開啟層級", + "SmokeComponent": "煙組件", + "Please select texture first.": "請先為該物體選擇紋理!", + "2 Samples": "2個樣本", + "Visible": "可見性", + "ShaderInfo": "著色器信息", + "Roughness": "粗糙度", + "Examples": "示例", + "Glitch Effect": "毛刺特效", + "Beauty&Occlusion": "", + "Delete": "刪除", + "Set Position": "設置位置", + "Width": "寬度", + "Remove Point": "移除點", + "Frag Shader": "片源著色器", + "BumpMap": "凹凸紋理", + "The object you selected is not geometry.": "選中的對像不具有Geometry屬性。", + "Execute after program stopped": "程序結束運行後執行一次", + "Translate(W)": "平移(W)", + "EnvMap": "環境紋理", + "32 Samples": "32個樣本", + "EnableRotate": "啟用旋轉", + "Velocity": "速度", + "Dark Color": "深色", + "Square": "正方形", + "Please select camera animation.": "只允許選擇MMD相機動畫!", + "AccelerationSpread": "加速度發散", + "RadiusTop": "頂部半徑", + "ZoomSpeed": "縮放速度", + "Undo/Redo history will be cleared. Are you sure?": "撤銷/重做歷史記錄將被清空。", + "No Blending": "不混合", + "Map": "貼圖", + "Occlusion&Blur": "", + "Multiply": "相乘", + "Tool": "工具", + "Google Map": "谷歌地圖", + "Visual": "可視化", + "PhiLength": "轉過經度", + "Basic Shadow": "基本陰影", + "Listen to mousedown event": "監聽鼠標按下事件", + "Panel": "面板", + "Author": "作者", + "ClearCoat": "透明度", + "Renderer": "渲染器", + "Category Edit": "類別編輯", + "SliceSpacing": "切片厚度", + "Background": "背景", + "StaticMoving": "靜態移動", + "Hemisphere Light": "半球光", + "Transparent": "透明", + "Orbit Controls": "軌道控制器", + "Shader cannot be parsed.": "著色器信息 無法反序列化。", + "SSAA": "全屏抗鋸齒(SSAA)", + "Saturate": "飽和度", + "Clear": "清空", + "Component": "組件", + "LightMap": "光照紋理", + "HeightSegments": "高度分段", + "Target": "目標", + "Lathe": "酒杯", + "Theme": "主題", + "Edit": "編輯", + "SphereShape": "球體", + "Cylinder": "圓柱體", + "NoRotate": "不旋轉", + "Exporting...": "正在導出...", + "Light Component": "光源組件", + "Settings": "設置", + "NoPan": "不平移", + "PointCloudMaterial": "點雲材質", + "Horizontal Line": "水平線", + "No Colors": "無顏色", + "Sky": "天空", + "Tree Diagram": "樹狀圖", + "Geometry Component": "幾何組件", + "Set Material": "設置材質", + "Mirrored Repeat": "鏡像重複", + "Line Curve": "線段", + "Listen to resize event": "監聽屏幕大小改變事件", + "Save As": "另存為", + "MinDistance": "最小距離", + "Set Geometry": "設置幾何體", + "Particle": "粒子", + "NegX": "x軸負向", + "SMAA": "多重採樣抗鋸齒(SMAA)", + "4 Samples": "4個樣本", + "Material Component": "材質組件", + "Raise Terrain": "升高地形", + "Time Disk": "時間圓盤", + "Clamp To Edge": "拉伸", + "Translate": "平移", + "Dragging animation on other animation is not allowed.": "不允許將動畫拖動到其他動畫上。", + "Please click material on material panel.": "請點擊材質面板中的材質!", + "Export OBJ": "導出obj文件", + "Model": "模型", + "Logs": "日誌", + "Custom Status": "自定義", + "Front View": "正視圖", + "Occlusion": "遮擋", + "Gamma Factor": "γ因子", + "Error": "錯誤", + "Execute before scene render": "場景渲染前執行一次", + "Lisense": "授權", + "Listen to dblclick event": "監聽鼠標雙擊事件", + "Line Chart": "折線圖", + "Shininess": "光亮度", + "RadialSegments": "徑向分段", + "Scale(R)": "縮放(R)", + "Script saved successfully!": "腳本保存成功!", + "Position": "位置", + "RoughnessMap": "粗糙紋理", + "Total {{totalPage}} Pages": "共{{totalPage}}頁", + "MapSize": "貼圖尺寸", + "Specular": "鏡面度", + "Reflectivity": "反射率", + "ClipBias": "裁剪偏移", + "AnimLayer3": "動畫層3", + "HeightCoef": "高度係數", + "Shadow Component": "陰影組件", + "Invert": "顏色反轉", + "Pointer Lock Controls": "指針鎖定控制器", + "Reflect": "反光", + "PhysicsEnvironment": "物理環境", + "Transform Component": "位移組件", + "First Person Controls": "第一視角控制器", + "Encoding": "編碼", + "Displace Scale": "位移紋理比例", + "Listen to keyup event": "監聽鍵盤抬起事件", + "NormalMap": "法線紋理", + "Gravity": "重力", + "Delete Script": "刪除腳本", + "BlurStdDev": "標準差", + "Cube texture has already been uploaded.": "立體貼圖已經存在於服務端,無需重複上傳。", + "ScreenSpacePanning": "屏幕坐標", + "Globe": "地球", + "Shader Program Info": "著色器程序信息", + "Body": "身體", + "KernalRadius": "核心半徑", + "MagFilter": "放大過濾", + "New Material": "新材質", + "UnpackAlignment": "解壓對齊", + "Partition Diagram": "分區圖", + "Decay": "衰減", + "Bing Map": "必應地圖", + "CameraBottom": "相機下", + "MaxPolarAngle": "最大仰角", + "Scene Controller": "場景控制器", + "Set": "設置", + "Wireframe": "線框", + "Export Object": "導出物體", + "Script name existed.": "腳本名稱重複!", + "Side View": "側視圖", + "Teapot": "茶壺", + "Cluster Diagram": "集群圖", + "Cube Texture fetch failed.": "立體貼圖獲取失敗!", + "Brightness": "亮度", + "SoftBodyRigidBodyCollisionConfig": "軟體剛體碰撞配置", + "Set Geometry.": "設置幾何體.", + "Information": "信息", + "MeshLambertMaterial": "蘭伯特材質", + "Loading...": "加載中...", + "CameraNear": "相機近", + "Create empty scene successfully.": "空場景創建成功!", + "Inertia": "慣性", + "CameraLeft": "相機左", + "SSAO": "屏幕空間環境光遮蔽(SSAO)", + "Recursion": "遞歸", + "Update UUID": "更新UUID", + "CatmullRom Curve": "CatmullRom曲線", + "CameraFar": "相機遠", + "Set Rotation": "設置旋轉", + "Please check the layer.": "請勾選需要刪除的層!", + "Record": "錄製", + "RotateRed": "紅色偏轉", + "Export STL Binary": "導出stl二進製文件", + "Light": "光源", + "RigidBody": "剛體", + "Draw Pologon": "畫面", + "RotateSpeed": "旋轉速度", + "Cannot deserialize scene data.": "無法解析場景數據!", + "PosX": "x軸正向", + "AnimLayer2": "動畫層2", + "EndStatus": "結束狀態", + "is not existed in the scene.": "在場景中不存在。", + "Linear": "線性", + "Physics Cloth": "添加物理布料", + "Smoke": "煙", + "Quadratic Bezier Curve": "二次貝塞爾曲線", + "New Script": "新建腳本", + "ParticleEmitter": "粒子發射器", + "QuadraticBezier Curve": "二次貝塞爾曲線", + "You should select Cube Texture.": "只允許選擇立體貼圖!", + "Close": "關閉", + "DepthSegments": "深度分段", + "Play Fullscreen": "全屏播放", + "MaxAzimuthAngle": "最大方位", + "Pressure": "壓力", + "Group": "組", + "Quality": "質量", + "material has no coordinates.": "的材質沒有紋理坐標!", + "ShaderMaterial": "著色器材質", + "Image upload successfully!": "圖片上傳成功!", + "PCF Soft Shadow": "PCF軟陰影", + "Gamma Output": "γ輸出", + "Skin": "皮膚", + "EnableDamping": "啟用減震", + "AlphaMap": "透明紋理", + "DisplacementMap": "位移紋理", + "Anisotropy": "各向異性", + "Not Set": "未設置", + "Please click the audio in the Audio Panel.": "請點擊音頻面板中的音頻!", + "Export Static Website": "發布靜態網站", + "Filter": "濾鏡", + "Fly Controls": "飛行控制器", + "8 Samples": "8個樣本", + "Blur": "模糊", + "Flat Shading": "平滑", + "Reduce Terrain": "降低地形", + "has no physics helper.": "暫無對應物理形狀幫助器。", + "Add physics cloth successfully": "添加物理布料成功!", + "Darker": "變暗", + "NoZoom": "不縮放", + "Max Volume": "主音量", + "Hierachy": "場景", + "Export STL": "導出stl文件", + "Are you sure to export the current scene?": "是否導出當前場景?", + "FogDensity": "霧濃度", + "Fragment": "片源", + "RawShaderMaterial": "原始著色器材質", + "Script": "腳本", + "Clear History": "清空歷史記錄", + "Stop": "停止", + "BoxShape": "正方體", + "16 Samples": "16個樣本", + "Bar Chart": "條形圖", + "Triangle": "三角形數", + "MinFilter": "縮小過濾", + "TAA": "時間抗鋸齒(TAA)", + "Tianditu Map": "天地圖", + "Blending": "混合", + "Gauge": "儀表", + "HueRotate": "色調", + "Time": "時間", + "Custom Blending": "自定義混合", + "Acceleration": "加速度", + "LineDashedMaterial": "虛線材質", + "Draw Point": "畫點", + "Background Image": "背景圖片", + "Receive": "接收", + "Thumbnail": "縮略圖", + "MeshPhysicalMaterial": "物理材質", + "MetalnessMap": "金屬紋理", + "Closed": "閉合", + "Are you sure to publish all scenes and assets?": "是否把所有場景、資源發佈為靜態網站?", + "Set Script": "設置腳本", + "MinAzimuthAngle": "最小方位", + "Please upload all the textures before save.": "請上傳所有立體貼圖後再點擊保存!", + "MeshPhongMaterial": "馮氏材質", + "HeightMin": "最小高度", + "SAO": "可擴展環境光遮擋(SAO)", + "Please click the animation in the animation panel.": "請點擊動畫面板中的動畫!", + "Histogram": "柱狀圖", + "ClothComponent": "布料組件", + "Property": "屬性", + "Illustrate: Double-click the area below the timeline to add an animation.": "說明:雙擊時間軸下方區域添加動畫。", + "Source": "源碼", + "Gamma Input": "γ輸入", + "MieDirectionalG": "滅方向", + "Clear Logs": "清空日誌", + "Please open scene first.": "請先打開場景!", + "Please select camera animation only.": "只允許選擇MMD相機動畫!", + "Plant Trees": "批量種樹", + "Create Script": "創建腳本", + "is not available.": "不可用。", + "Normal": "法線", + "Play Audio": "播放音樂", + "maxAgeSpread": "持續時長發散", + "Collapse": "折疊", + "Double Side": "雙面", + "Pie Chart": "餅狀圖", + "LookVertical": "朝上看", + "Contrast": "對比度", + "AutoRotateSpeed": "旋轉速度", + "BackgroundColor": "背景顏色", + "Export Editor": "導出編輯器", + "Camera Component": "相機組件", + "Helpers": "幫助器", + "MaxBlur": "最大模糊", + "LookSpeed": "觀望速度", + "Multiply Blending": "積混合", + "Object": "物體數", + "CameraTop": "相機上", + "VerticalMin": "最小仰角", + "Date": "日期", + "Scale Locked": "鎖定縮放", + "Tween Animation": "補間動畫", + "Disabled": "禁用", + "Format": "格式", + "Penumbra": "半陰影", + "Scene": "場景", + "Ease Func": "插值函數", + "New": "新建", + "Remove Object": "移除物體", + "Solid Color": "純色", + "Shader Program": "著色程序", + "Waiting...": "請稍後...", + "DragToLook": "拖動查看", + "Directional Light": "平行光", + "DistortedArc": "扭曲弧度", + "Animation Object": "動作物體", + "FXAA Component": "快速近似抗鋸齒(FXAA)", + "Scene data of string type is needed.": "需要字符串類型的場景數據參數!", + "Perlin Terrain": "柏林地形", + "Arrange Thumbnail": "整理縮略圖", + "CollisionConfig": "碰撞配置", + "Near": "近點", + "Listen to mouseup event": "監聽鼠標抬起事件", + "Grayscale": "灰度", + "Saved into indexDB.": "保存到IndexedDB中。", + "CubicBezier Curve": "三次貝塞爾曲線", + "Water Component": "水組件", + "GreyScale": "灰階", + "GIS Component": "GIS組件", + "RotateBlue": "藍色偏轉", + "Circle": "圓", + "Radius": "半徑", + "Clone": "複製", + "Spline": "曲線", + "Upload": "上傳", + "Add Object": "添加物體:", + "Vertex Shader": "頂點著色器", + "Rotate(E)": "旋轉(E)", + "Export PLY": "導出ply文件", + "SpecularMap": "鏡面紋理", + "Volume": "循環播放", + "MetalNess": "金屬度", + "Ellipse": "橢圓", + "Halo": "光暈", + "Exponential": "指數型", + "Output": "輸出", + "Color": "顏色", + "Assets": "資源", + "NegZ": "z軸負向", + "All unsaved data will be lost. Are you sure?": "所有未保存數據將丟失,確定要新建場景嗎?", + "Multi Modify": "多種改變", + "RGB Shift Effect": "顏色偏移特效", + "Ambient": "環境光", + "Tension": "張力", + "EnableKeys": "啟用按鍵", + "AoMap": "遮擋紋理", + "Point Light": "點光源", + "Upload failed.": "上傳失敗!", + "Category List": "類別列表", + "WireWidth": "線框粗細", + "Plane": "平面", + "Please click the map in the Map Panel.": "請點擊貼圖面板中的立體貼圖!", + "AudioListener": "音頻監聽器", + "AfterimageEffect": "殘影特效", + "LineBasicMaterial": "線條材質", + "No Image": "無圖片", + "Vertex": "頂點數", + "Pack Diagram": "包圖", + "BeginTime": "開始時間", + "Bottom": "底部", + "MovementSpeed": "移動速度", + "OK": "確定", + "Audio": "音頻", + "WidthSegments": "寬度分段", + "MieCofficient": "滅係數", + "Centripetal Force": "向心力", + "Scatter Plot": "散點圖", + "Character": "人物", + "Mass": "質量", + "Distance": "距離", + "Lighter": "變亮", + "Camera": "相機", + "Detail": "細節", + "PixelEffect": "像素特效", + "Face Colors": "面顏色", + "Material": "材質", + "Icosahedron": "二十面體", + "Dig": "挖坑", + "Water": "水", + "Ao Scale": "遮擋紋理比例", + "Normal Blending": "一般混合", + "KeyPanSpeed": "按鍵速度", + "Segments": "分段", + "Geometry": "幾何體", + "Amount": "量", + "Aperture": "光圈", + "Options": "選項", + "Form Panel": "表單", + "Opacity": "不透明度", + "ConstrainVertical": "限制仰角", + "1 Sample": "1個樣本", + "Cube Texture": "立體貼圖", + "WrapS": "橫向填充", + "Mapping": "映射", + "ThetaLength": "轉過緯度", + "Decal": "貼花", + "EndTime": "結束時間", + "Ellipse Curve": "橢圓曲線", + "Category": "類別", + "DefaultCamera": "默認相機", + "Please input": "請輸入", + "DefaultCollisionConfig": "默認碰撞配置", + "Remove Script": "移除腳本", + "PosY": "y軸正向", + "Program stoped.": "程序停止成功。", + "MeshDepthMaterial": "深度材質", + "Lid": "壺蓋", + "Skeleton": "骨骼", + "Bokeh Effect": "背景虛化特效", + "FitLid": "適合壺蓋", + "EmissiveMap": "發光紋理", + "Arc": "弧度", + "FogColor": "霧顏色", + "Polygon": "面", + "Organizing the texture will remove the number and underscore after the name, regenerate the data table and texture catalog, remove the empty folder and unreferenced texture file, the system will automatically back up the data table and texture catalog, is it organized?": "整理貼圖會去除名稱後的數字和下劃線,重新生成數據表和貼圖目錄,移除空文件夾和未引用貼圖文件,系統會自動備份數據表和貼圖目錄,是否整理?", + "Cancel": "取消", + "RepeatNum": "填充次數", + "MaxDistance": "最大距離", + "Beauty": "美化", + "Default": "默認", + "Button": "按鈕", + "SkyColor": "天空顏色", + "Save Successfully.": "保存成功。", + "Sepia": "復古", + "PhiStart": "開始經度", + "Organizing the thumbnails will regenerate the thumbnail directory, modify the scene, model, texture, material, audio, animation, particles, preset body, and the thumbnail path of the characters. Please manually back up the database first.": "整理縮略圖會重新生成縮略圖目錄,修改場景、模型、貼圖、材質、音頻、動畫、粒子、預設體、人物的縮略圖路徑,請先手動備份數據庫,是否整理?", + "Export GLTF": "導出gltf文件", + "PosZ": "z軸正向", + "Camera Animation": "相機動畫", + "Angle": "角度", + "Force Directed Graph": "力導向圖", + "Vertex Color": "頂點顏色", + "Export Geometry": "導出幾何體", + "Substractive Blending": "差混合", + "Blinn": "布林", + "CameraRight": "相機右", + "Organizing the model will remove the number and underscore after the name, regenerate the data table, model catalog, remove empty folders and unreferenced model files, the system will automatically back up the data table, model catalog, whether to sort?": "整理模型會去除名稱後的數字和下劃線,重新生成數據表、模型目錄,移除空文件夾和未引用模型文件,系統會自動備份數據表、模型目錄,是否整理?", + "WrapT": "縱向填充", + "Add": "相加", + "Options Window": "選項窗口", + "PanSpeed": "平移速度", + "Save Scene": "保存場景", + "Top View": "頂視圖", + "MinResolution": "最低分辨", + "TubeArc": "管長弧度", + "Fire Component": "火焰組件", + "Shape": "形狀", + "Load Successfully!": "載入成功!", + "Draw Line": "畫線", + "MeshNormalMaterial": "法向量材質", + "Image upload failed!": "圖片上傳失敗!", + "Arrange Map": "整理貼圖", + "Add Point": "添加點", + "Data Source Manage": "數據源管理", + "Turbidity": "渾濁度", + "Cloth": "布", + "Offset": "偏移", + "Basic Info": "基本信息", + "Front Side": "正面", + "Torus": "輪胎", + "Bump Scale": "凹凸紋理比例", + "FogFar": "霧遠點", + "Unbiased": "無偏差", + "BlurDepthCutoff": "深度隔斷", + "Spot Light": "聚光燈", + "Listen to click event": "監聽鼠標點擊事件", + "Rotate Center": "旋轉中心", + "Fire": "火焰", + "Torus Knot": "扭結", + "MeshStandardMaterial": "標準材質", + "Vertical Line": "豎直線", + "Furface": "外觀", + "NegY": "y軸負向", + "Please select category.": "請選擇類別!", + "Far": "遠點", + "Message": "消息", + "WildMode": "瘋狂模式", + "Bias": "偏差", + "Depth": "深度", + "FrontSide": "正面", + "Undo": "撤銷", + "Please save scene first.": "請先保存場景!", + "Additive Blending": "和混合", + "TubelarSegments": "管狀分段", + "Particle Animation": "粒子動畫", + "Rect Area Light": "矩形光", + "MaxAge": "持續時長", + "Texture": "紋理", + "Are you sure to export the editor?": "是否導出編輯器?", + "Label": "標籤", + "Grid": "網格", + "Move Object": "移動物體", + "HeightMax": "最大高度", + "About": "關於", + "Query": "詢問", + "Auto Play": "自動播放", + "Listen to mousewheel event": "監聽鼠標滾輪事件", + "PhysicsType": "物理類型", + "Fov": "視場", + "TextureSize": "貼圖尺寸", + "EnableState": "啟用狀態", + "Repeat": "重複", + "ActiveLock": "啟用觀望", + "Key Value Label": "鍵值標籤", + "Level": "等級", + "Chord": "弦線", + "Type": "類型", + "Ambient Light": "環境光", + "History": "歷史", + "Save": "保存", + "RadiusBottom": "底部半徑", + "Program started.": "程序啟動成功。", + "Confirm": "確認", + "Halftone Effect": "半色調特效", + "Play": "播放", + "DotScreenEffect": "點陣化特效", + "Focus": "焦距", + "AnimLayer1": "動畫層1", + "BlendingMode": "混合模式", + "MeshBasicMaterial": "基本材質", + "Background Music": "背景音樂", + "Redo": "重做", + "Execute each frame during running": "程序運行過程中,每幀都要執行", + "CatmullRom curve should have at least 3 points.": "CatmullRom曲線至少應該有三個點!", + "PixelSize": "像素尺寸", + "Texture Settings": "紋理設置", + "Sprite": "精靈", + "SceneComponent": "場景組件", + "Emissive": "發光", + "Export Scene": "導出場景", + "Light Color": "淺色", + "SizeSpread": "尺寸發散", + "Rotate": "旋轉", + "ParticleCount": "粒子數量", + "Damp": "阻尼", + "Play New Window": "新窗口播放", + "Shader Terrain": "著色器地形", + "ClearCoatRoughness": "透明粗糙度", + "Please select MMD audio.": "請點擊MMD動畫對應的音頻!", + "LMesh Component": "LMesh組件", + "Select": "選擇", + "Documents": "文檔", + "Delete layer will delete all the anims on the layer. Are you sure?": "刪除層會刪除層上的所有動畫。", + "Basic Information": "基本信息", + "Delete successfully!": "刪除成功!", + "New Scene": "新場景", + "BlurRadius": "模糊半徑", + "Model Animation": "模型動畫", + "RotateGreen": "綠色偏轉", + "AnimLayer": "動畫層", + "Sidebar": "側邊欄", + "AutoRotate": "自動旋轉", + "BeginStatus": "開始狀態", + "ThetaStart": "開始緯度", + "EnableZoom": "啟用縮放", + "Cannot set texture": "無法設置紋理,", + "OpenEnded": "兩端開口", + "Side": "剔除", + "AlphaTest": "α測試", + "Point": "點", + "IsLocked": "是否鎖定", + "Curve Type": "線型", + "PositionSpread": "位置發散", + "Enabled": "啟用", + "TimeSpan": "時長", + "EnablePan": "啟用平移", + "Sphere": "球體", + "Vertex Colors": "頂點顏色", + "Text": "文本", + "Please select object!": "請選擇物體!", + "Filter Animation": "濾鏡動畫", + "Name": "名稱", + "Perspective View": "透視圖", + "PCF Shadow": "PCF陰影", + "Chord Graph": "弦圖", + "2D": "二維", + "Rayleigh": "瑞利", + "SpriteMaterial": "精靈材質", + "Luminance": "亮度", + "Skeletal Animation": "骨骼動畫", + "Please click the map in the map panel.": "請點擊貼圖面板中的貼圖!", + "Back Side": "反面", + "Traceball Controls": "軌跡球控制器", + "Size": "尺寸", + "ThrowBall": "扔小球", + "VelocitySpread": "速度發散", + "Empty Scene": "空場景", + "SoftVolume": "柔軟體", + "MMD Model": "MMD模型", + "Listen to keydown event": "監聽鍵盤按下事件", + "FogNear": "霧近點", + "GroundColor": "地面顏色", + "None": "無", + "Intensity": "強度", + "Set Scale": "設置縮放", + "Animation": "動畫", + "GIS Scene": "GIS場景", + "Line": "線條", + "Spray": "噴射", + "Search Content": "搜索內容", + "Height": "高度", + "PremultiplyAlpha": "左乘透明", + "Terrain": "地形", + "Publish Scene": "發布場景", + "Scale": "縮放", + "FlipY": "反轉Y", + "Loop": "循環播放", + "HeightSpeed": "高度速度", + "Configure Animation": "配寘動畫", + "Please select the animation target": "請選擇動畫目標", + "Are you sure you want to delete this animation?": "您確定删除此動畫嗎?", + "Animation added successfully": "動畫添加成功", + "Animation modification successful": "動畫修改成功", + "The maximum animation duration is 1 hour": "最長動畫時長為1個小時" +} diff --git a/web/manifest.json b/web/manifest.json index 5dd34db40fdba7472f078e417ba30f54436a76ee..8bce6aa7a850ff80171383e460f5ae98a08cdfe7 100644 --- a/web/manifest.json +++ b/web/manifest.json @@ -1,14 +1,14 @@ { - "name": "ShadowEditor", - "short_name": "SE", - "start_url": ".", - "scope": ".", - "display": "standalone", - "icons": [ - { - "src": "./assets/image/icon.png", - "type": "image/png", - "sizes": "144x144" - } - ] -} \ No newline at end of file + "name": "ShadowEditor", + "short_name": "SE", + "start_url": ".", + "scope": ".", + "display": "standalone", + "icons": [ + { + "src": "./assets/image/icon.png", + "type": "image/png", + "sizes": "144x144" + } + ] +} diff --git a/web/rollup.config.js b/web/rollup.config.mjs similarity index 32% rename from web/rollup.config.js rename to web/rollup.config.mjs index 3b8b92bdd580737be2b7b08e475d8fe881e87ae4..b4693af9c2fd62cd7b21d9180f1bc4387bbeaf86 100644 --- a/web/rollup.config.js +++ b/web/rollup.config.mjs @@ -1,9 +1,16 @@ +/* + * @Author: wangzhiyu + * @version: 1.0.0 + * @Date: 2023-11-03 13:59:13 + * @LastEditTime: 2023-11-03 14:47:25 + * @Descripttion: + */ /* * Copyright 2017-2020 The ShadowEditor Authors. All rights reserved. * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -14,61 +21,68 @@ import postcss from 'rollup-plugin-postcss'; import babel from 'rollup-plugin-babel'; import strip from 'rollup-plugin-strip-banner'; import bundleWorker from 'rollup-plugin-bundle-worker'; - +import serve from 'rollup-plugin-serve'; +import livereload from 'rollup-plugin-livereload'; function glsl() { - return { - transform(code, id) { - if (/\.glsl$/.test(id) === false) return; - - var transformedCode = 'export default ' + JSON.stringify( - code - .replace(/[ \t]*\/\/.*\n/g, '') // remove // - .replace(/[ \t]*\/\*[\s\S]*?\*\//g, '') // remove /* */ - .replace(/\n{2,}/g, '\n') // # \n+ to \n - ) + ';'; - return { - code: transformedCode, - map: { - mappings: '' - } - }; - } - }; + return { + transform(code, id) { + if (/\.glsl$/.test(id) === false) return; + var transformedCode = + 'export default ' + + JSON.stringify( + code + .replace(/[ \t]*\/\/.*\n/g, '') // remove // + .replace(/[ \t]*\/\*[\s\S]*?\*\//g, '') // remove /* */ + .replace(/\n{2,}/g, '\n') // # \n+ to \n + ) + + ';'; + return { + code: transformedCode, + map: { + mappings: '', + }, + }; + }, + }; } - export default { - input: 'src/index.js', - output: { - indent: '\t', - format: 'umd', - name: 'Shadow', - file: '../build/public/build/ShadowEditor.js' - }, - treeshake: true, - external: [], - plugins: [ - bundleWorker(), - glsl(), - resolve(), - commonjs({ - exclude: [ - 'assets/**' - ] - }), - replace({ - 'process.env.NODE_ENV': '"development"' // production - }), - postcss({ - extract: true - }), - babel({ - exclude: 'node_modules/**' - }), - strip() - ], - onwarn(warning, rollupWarn) { - if (warning.code !== 'CIRCULAR_DEPENDENCY') { - rollupWarn(warning); - } + input: 'src/index.js', + output: { + indent: '\t', + format: 'umd', + name: 'Shadow', + file: '../build/public/build/ShadowEditor.js', + }, + treeshake: true, + external: [], + plugins: [ + bundleWorker(), + glsl(), + resolve(), + commonjs({ + exclude: ['assets/**'], + }), + replace({ + 'process.env.NODE_ENV': '"development"', // production + }), + postcss({ + extract: true, + }), + babel({ + exclude: 'node_modules/**', + }), + strip(), + serve({ + open: true, + contentBase: ['../build/public'], + host: 'localhost', + port: 2023, + }), + livereload('../build/public'), + ], + onwarn(warning, rollupWarn) { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + rollupWarn(warning); } + }, }; diff --git a/web/src/Application.js b/web/src/Application.js index f5ba1454c394edc9657bc46f3f53e0456a1cba2d..7c835ee2e4fb6deb6c436ebc9a0744cec307bb64 100644 --- a/web/src/Application.js +++ b/web/src/Application.js @@ -3,11 +3,11 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ -import {Alert, Confirm, Message, Photo, Prompt, Video} from './ui/index'; +import { Alert, Confirm, Message, Photo, Prompt, Video } from './ui/index'; import Options from './Options'; import Storage from './utils/Storage'; import Server from './utils/Server'; @@ -27,394 +27,391 @@ import global from './global'; * @param {Object} options 配置 */ class Application { - constructor(container, options) { - // 容器 - this.container = container; - this.width = this.container.clientWidth; - this.height = this.container.clientHeight; - - global.app = this; - - // 配置 - this.options = new Options(options); - - // 存储 - this.storage = new Storage(); - this.debug = this.storage.get('debug') || false; - - // 服务端配置 - this.server = new Server(this.options.server); - - // 包管理器 - this.packageManager = new PackageManager(); - this.require = this.packageManager.require.bind(this.packageManager); - - // 事件 - this.event = new EventDispatcher(this); - this.call = this.event.call.bind(this.event); - this.on = this.event.on.bind(this.event); - - // 异步获取数据 - const promise1 = new Promise(resolve => { // 加载语言包 - const loader = new LanguageLoader(); - loader.load().then(() => { - resolve(); - }); - }); - - const promise2 = new Promise(resolve => { // 加载物理引擎 - // TODO: 由于ammo.js升级,导致很多类库不兼容,所以只能这么写。 - Ammo().then(AmmoLib => { - window.Ammo = AmmoLib; - resolve(); - }); - }); - - const promise3 = new Promise(resolve => { // 加载服务器配置 - this.server.load().then(() => { - resolve(); - }); - }); - - // Loading Screen - const loader = React.createElement(Loader); - ReactDOM.render(loader, this.container); - - Promise.all([promise1, promise2, promise3]).then(() => { - this.ui = React.createElement(Editor); - this.event.start(); - ReactDOM.render(this.ui, this.container); - }); - } - - // ----------------------- UI函数 --------------------------------- - - /** - * 创建元素 - * @param {React.Component} type ReactComponent类型 - * @param {Object} props ReactComponent属性 - * @param {Object} children 子节点 - * @returns {*} React元素 - */ - createElement(type, props, children) { - return this.editor.createElement(type, props, children); - } - - /** - * 添加元素 - * @param {Object} element ReactElement元素 - * @param {Function} callback 回调函数 - * @returns {*} React元素 - */ - addElement(element, callback) { - return this.editor.addElement(element, callback); - } - - /** - * 移除元素 - * @param {Object} element ReactElement元素 - * @param {Function} callback 回调函数 - * @returns {*} React元素 - */ - removeElement(element, callback) { - return this.editor.removeElement(element, callback); - } - - /** - * 弹窗一段时间消失的消息窗口 - * @param {String} content 内容 - * @param {String} type 类型(info, success, warn, error) - */ - toast(content, type = 'info') { - let component = this.createElement(Message, { - type - }, content); - - this.addElement(component); - - setTimeout(() => { - this.removeElement(component); - }, 3000); - } - - /** - * 提示窗口 - * @param {Object} options 选项 - * @param {String} options.title 标题 - * @param {String} options.content 内容 - * @param {String} options.className 样式类 - * @param {Object} options.style 样式 - * @param {Function} options.onOK 点击确定回调函数 - * @param {Function} options.onClose 点击关闭回调函数 - * @returns {*} React元素 - */ - alert(options = {}) { - let { - title, - content, - className, - style, - onOK, - onClose - } = options; - let component; - - let close = () => { - component && this.removeElement(component); - }; - - if (onOK === undefined && onClose === undefined) { - onOK = onClose = close; - } else if (onClose === undefined) { - onClose = onOK; - } - - component = this.createElement(Alert, { - title, - okText: _t('OK'), - className, - style, - onOK, - onClose - }, content); - - this.addElement(component); - - return { - component, - close - }; - } - - /** - * 询问窗口 - * @param {Object} options 选项 - * @param {String} options.title 标题 - * @param {String} options.content 内容 - * @param {String} options.className 样式类 - * @param {Object} options.style 样式 - * @param {Function} options.onOK 点击确定回调函数 - * @param {Function} options.onCancel 点击取消回调函数 - * @returns {*} React元素 - */ - confirm(options = {}) { - const { - title, - content, - okText, - cancelText, - className, - style, - onOK, - onCancel - } = options; - - let component; - - let close = () => { - component && this.removeElement(component); - }; - - let handleOK = () => { - if (onOK && onOK() !== false) { - close(); - } - }; - - let handleCancel = () => { - if (onCancel && onCancel() !== false || !onCancel) { - close(); - } - }; - - component = this.createElement(Confirm, { - title, - okText: okText || _t('OK'), - cancelText: cancelText || _t('Cancel'), - className, - style, - onOK: handleOK, - onCancel: handleCancel, - onClose: handleCancel - }, content); - - this.addElement(component); - - return { - component, - close - }; - } - - /** - * 输入窗口 - * @param {Object} options 选项 - * @param {String} options.title 标题 - * @param {String} options.content 内容 - * @param {String} options.className 样式类 - * @param {Object} options.style 样式 - * @param {String} options.value 默认值 - * @param {Boolean} options.mask 是否显示遮罩层 - * @param {Function} options.onOK 点击确定执行函数 - * @param {Function} options.onClose 点击关闭执行函数 - * @returns {*} React元素 - */ - prompt(options = {}) { - let { - title, - content, - className, - style, - value, - mask, - onOK, - onClose - } = options; - let component; - - let close = () => { - component && this.removeElement(component); - }; - - let handleOK = value => { - if (onOK && onOK(value) !== false) { - close(); - } - }; - - let handleClose = () => { - if (onClose === undefined) { - close(); - } else if (onClose && onClose() !== false) { - close(); - } - }; - - component = this.createElement(Prompt, { - title, - content, - className, - style, - value, - okText: _t('OK'), - mask, - onOK: handleOK, - onClose: handleClose - }); - - this.addElement(component); - - return { - component, - close - }; - } - - /** - * 显示加载器 - * @param {*} text 加载器文本 - */ - mask(text) { - this.call('showMask', this, true, text); - } - - /** - * 隐藏加载器 - */ - unmask() { - this.call('showMask', this, false); - } - - /** - * 查看图片 - * @param {String} url 地址 - */ - photo(url) { - let component = null; - - let close = () => { - if (component) { - this.removeElement(component); - component = null; - } - }; - - component = this.createElement(Photo, { - url, - onClick: close - }); - - this.addElement(component); + constructor(container, options) { + // 容器 + this.container = container; + this.width = this.container.clientWidth; + this.height = this.container.clientHeight; + + global.app = this; + + // 配置 + this.options = new Options(options); + + // 存储 + this.storage = new Storage(); + this.debug = this.storage.get('debug') || false; + + // 服务端配置 + this.server = new Server(this.options.server); + + // 包管理器 + this.packageManager = new PackageManager(); + this.require = this.packageManager.require.bind(this.packageManager); + + // 事件 + this.event = new EventDispatcher(this); + this.call = this.event.call.bind(this.event); + this.on = this.event.on.bind(this.event); + + // 异步获取数据 + const promise1 = new Promise(resolve => { + // 加载语言包 + const loader = new LanguageLoader(); + loader.load().then(() => { + resolve(); + }); + }); + + const promise2 = new Promise(resolve => { + // 加载物理引擎 + // TODO: 由于ammo.js升级,导致很多类库不兼容,所以只能这么写。 + Ammo().then(AmmoLib => { + window.Ammo = AmmoLib; + resolve(); + }); + }); + + const promise3 = new Promise(resolve => { + // 加载服务器配置 + this.server.load().then(() => { + resolve(); + }); + }); + + // Loading Screen + const loader = React.createElement(Loader); + ReactDOM.render(loader, this.container); + + Promise.all([promise1, promise2, promise3]).then(() => { + this.ui = React.createElement(Editor); + this.event.start(); + ReactDOM.render(this.ui, this.container); + }); + } + + // ----------------------- UI函数 --------------------------------- + + /** + * 创建元素 + * @param {React.Component} type ReactComponent类型 + * @param {Object} props ReactComponent属性 + * @param {Object} children 子节点 + * @returns {*} React元素 + */ + createElement(type, props, children) { + return this.editor.createElement(type, props, children); + } + + /** + * 添加元素 + * @param {Object} element ReactElement元素 + * @param {Function} callback 回调函数 + * @returns {*} React元素 + */ + addElement(element, callback) { + return this.editor.addElement(element, callback); + } + + /** + * 移除元素 + * @param {Object} element ReactElement元素 + * @param {Function} callback 回调函数 + * @returns {*} React元素 + */ + removeElement(element, callback) { + return this.editor.removeElement(element, callback); + } + + /** + * 弹窗一段时间消失的消息窗口 + * @param {String} content 内容 + * @param {String} type 类型(info, success, warn, error) + */ + toast(content, type = 'info') { + let component = this.createElement( + Message, + { + type, + }, + content + ); + + this.addElement(component); + + setTimeout(() => { + this.removeElement(component); + }, 3000); + } + + /** + * 提示窗口 + * @param {Object} options 选项 + * @param {String} options.title 标题 + * @param {String} options.content 内容 + * @param {String} options.className 样式类 + * @param {Object} options.style 样式 + * @param {Function} options.onOK 点击确定回调函数 + * @param {Function} options.onClose 点击关闭回调函数 + * @returns {*} React元素 + */ + alert(options = {}) { + let { title, content, className, style, onOK, onClose } = options; + let component; + + let close = () => { + component && this.removeElement(component); + }; + + if (onOK === undefined && onClose === undefined) { + onOK = onClose = close; + } else if (onClose === undefined) { + onClose = onOK; } - /** - * 查看视频 - * @param {String} url 地址 - */ - video(url) { - let component = null; - - let close = () => { - if (component) { - this.removeElement(component); - component = null; - } - }; - - component = this.createElement(Video, { - url, - onClick: close - }); - - this.addElement(component); + component = this.createElement( + Alert, + { + title, + okText: _t('OK'), + className, + style, + onOK, + onClose, + }, + content + ); + + this.addElement(component); + + return { + component, + close, + }; + } + + /** + * 询问窗口 + * @param {Object} options 选项 + * @param {String} options.title 标题 + * @param {String} options.content 内容 + * @param {String} options.className 样式类 + * @param {Object} options.style 样式 + * @param {Function} options.onOK 点击确定回调函数 + * @param {Function} options.onCancel 点击取消回调函数 + * @returns {*} React元素 + */ + confirm(options = {}) { + const { title, content, okText, cancelText, className, style, onOK, onCancel } = options; + + let component; + + let close = () => { + component && this.removeElement(component); + }; + + let handleOK = () => { + if (onOK && onOK() !== false) { + close(); + } + }; + + let handleCancel = () => { + if ((onCancel && onCancel() !== false) || !onCancel) { + close(); + } + }; + + component = this.createElement( + Confirm, + { + title, + okText: okText || _t('OK'), + cancelText: cancelText || _t('Cancel'), + className, + style, + onOK: handleOK, + onCancel: handleCancel, + onClose: handleCancel, + }, + content + ); + + this.addElement(component); + + return { + component, + close, + }; + } + + /** + * 输入窗口 + * @param {Object} options 选项 + * @param {String} options.title 标题 + * @param {String} options.content 内容 + * @param {String} options.className 样式类 + * @param {Object} options.style 样式 + * @param {String} options.value 默认值 + * @param {Boolean} options.mask 是否显示遮罩层 + * @param {Function} options.onOK 点击确定执行函数 + * @param {Function} options.onClose 点击关闭执行函数 + * @returns {*} React元素 + */ + prompt(options = {}) { + let { title, content, className, style, value, mask, onOK, onClose } = options; + let component; + + let close = () => { + component && this.removeElement(component); + }; + + let handleOK = value => { + if (onOK && onOK(value) !== false) { + close(); + } + }; + + let handleClose = () => { + if (onClose === undefined) { + close(); + } else if (onClose && onClose() !== false) { + close(); + } + }; + + component = this.createElement(Prompt, { + title, + content, + className, + style, + value, + okText: _t('OK'), + mask, + onOK: handleOK, + onClose: handleClose, + }); + + this.addElement(component); + + return { + component, + close, + }; + } + + /** + * 显示加载器 + * @param {*} text 加载器文本 + */ + mask(text) { + this.call('showMask', this, true, text); + } + + /** + * 隐藏加载器 + */ + unmask() { + this.call('showMask', this, false); + } + + /** + * 查看图片 + * @param {String} url 地址 + */ + photo(url) { + let component = null; + + let close = () => { + if (component) { + this.removeElement(component); + component = null; + } + }; + + component = this.createElement(Photo, { + url, + onClick: close, + }); + + this.addElement(component); + } + + /** + * 查看视频 + * @param {String} url 地址 + */ + video(url) { + let component = null; + + let close = () => { + if (component) { + this.removeElement(component); + component = null; + } + }; + + component = this.createElement(Video, { + url, + onClick: close, + }); + + this.addElement(component); + } + + // -------------------- 工具函数 ----------------------- + + /** + * 上传文件 + * @param {Object} url 上传Url + * @param {String} callback 回调函数 + */ + upload(url, callback) { + let input = this.input; + if (!input) { + input = document.createElement('input'); + input.type = 'file'; + input.style.display = 'none'; + document.body.appendChild(input); } - - // -------------------- 工具函数 ----------------------- - - /** - * 上传文件 - * @param {Object} url 上传Url - * @param {String} callback 回调函数 - */ - upload(url, callback) { - let input = this.input; - if (!input) { - input = document.createElement('input'); - input.type = 'file'; - input.style.display = 'none'; - document.body.appendChild(input); + this.input = input; + input.value = null; + input.onchange = event => { + input.onchange = null; + Ajax.post( + url, + { + file: event.target.files[0], + }, + json => { + let obj = JSON.parse(json); + if (obj.Code === 200) { + callback(obj); + } else { + global.app.toast(_t(obj.Msg), 'warn'); + } } - this.input = input; - input.value = null; - input.onchange = event => { - input.onchange = null; - Ajax.post(url, { - file: event.target.files[0] - }, json => { - let obj = JSON.parse(json); - if (obj.Code === 200) { - callback(obj); - } else { - global.app.toast(_t(obj.Msg), 'warn'); - } - }); - }; - input.click(); - } - - // ----------------------- 记录日志 -------------------------------- - - log(content) { // 普通日志 - this.call('log', this, content); - } - - warn(content) { // 警告日志 - this.call('log', this, content, 'warn'); - } - - error(content) { // 错误日志 - this.call('log', this, content, 'error'); - } + ); + }; + input.click(); + } + + // ----------------------- 记录日志 -------------------------------- + + log(content) { + // 普通日志 + this.call('log', this, content); + } + + warn(content) { + // 警告日志 + this.call('log', this, content, 'warn'); + } + + error(content) { + // 错误日志 + this.call('log', this, content, 'error'); + } } -export default Application; \ No newline at end of file +export default Application; diff --git a/web/src/command/AddObjectCommand.js b/web/src/command/AddObjectCommand.js index b0c3849c653f5af95c18428ccccc4bfdb1c246d9..aa9267df3d0c6126b784a8ecd1a49a05fc530cba 100644 --- a/web/src/command/AddObjectCommand.js +++ b/web/src/command/AddObjectCommand.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -17,44 +17,44 @@ import Command from './Command'; * @constructor */ class AddObjectCommand extends Command { - constructor(object) { - super(); - this.type = 'AddObjectCommand'; + constructor(object) { + super(); + this.type = 'AddObjectCommand'; - this.object = object; + this.object = object; - if (object !== undefined) { - this.name = _t('Add Object') + object.name; - } + if (object !== undefined) { + this.name = _t('Add Object') + object.name; } + } - execute() { - this.editor.addObject(this.object); - this.editor.select(this.object); - } + execute() { + this.editor.addObject(this.object); + this.editor.select(this.object); + } - undo() { - this.editor.removeObject(this.object); - this.editor.deselect(); - } + undo() { + this.editor.removeObject(this.object); + this.editor.deselect(); + } - toJSON() { - var output = Command.prototype.toJSON.call(this); - output.object = this.object.toJSON(); + toJSON() { + var output = Command.prototype.toJSON.call(this); + output.object = this.object.toJSON(); - return output; - } + return output; + } - fromJSON(json) { - Command.prototype.fromJSON.call(this, json); + fromJSON(json) { + Command.prototype.fromJSON.call(this, json); - this.object = this.editor.objectByUuid(json.object.object.uuid); + this.object = this.editor.objectByUuid(json.object.object.uuid); - if (this.object === undefined) { - var loader = new THREE.ObjectLoader(); - this.object = loader.parse(json.object); - } + if (this.object === undefined) { + var loader = new THREE.ObjectLoader(); + this.object = loader.parse(json.object); } + } } -export default AddObjectCommand; \ No newline at end of file +export default AddObjectCommand; diff --git a/web/src/controls/BaseControls.js b/web/src/controls/BaseControls.js index 88af0590c02a97281086baa77b3d2140de307fa8..22a293fdf2b67f79b6cd8fc6f82af1096cd0be39 100644 --- a/web/src/controls/BaseControls.js +++ b/web/src/controls/BaseControls.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -16,74 +16,74 @@ let ID = -1; * @author tengge1 / https://github.com/tengge1 */ class BaseControls { - /** - * 创建一个控制器 - * @param {THREE.Camera} camera 相机 - * @param {HTMLElement} domElement HTML文档 - */ - constructor(camera, domElement) { - this.id = `${this.constructor.name}${ID--}`; - - this.camera = camera; - this.domElement = domElement; - - this.enabled = true; - - this.dispatch = dispatch('change', 'update', 'end'); - // change(enabled, controlName, control),控制器改变 - // update(),相机位置改变 - // end(),控制器内部退出当前模式,主要用于按Esc退出第一视角模式。 - - this.call = this.dispatch.call.bind(this.dispatch); - this.on = this.dispatch.on.bind(this.dispatch); - } - - /** - * 启用控制器 - */ - enable() { - this.enabled = true; - } - - /** - * 禁用控制器 - */ - disable() { - this.enabled = false; - } - - /** - * 转到某个物体的视角 - * @param {THREE.Object3D} target 目标 - */ - focus(target) { // eslint-disable-line - - } - - /** - * 不断循环调用,以便实现动画效果 - * @param {THREE.Clock} clock 时钟 - * @param {Number} deltaTime 间隔时间 - */ - update(clock, deltaTime) { // eslint-disable-line - - } - - /** - * 当前鼠标所在位置碰撞点世界坐标 - * @param {THREE.Vector3} position 世界坐标 - */ - setPickPosition(position) { // eslint-disable-line - - } - - /** - * 析构控制器 - */ - dispose() { - this.camera = null; - this.domElement = null; - } + /** + * 创建一个控制器 + * @param {THREE.Camera} camera 相机 + * @param {HTMLElement} domElement HTML文档 + */ + constructor(camera, domElement) { + this.id = `${this.constructor.name}${ID--}`; + + this.camera = camera; + this.domElement = domElement; + + this.enabled = true; + + this.dispatch = dispatch('change', 'update', 'end'); + // change(enabled, controlName, control),控制器改变 + // update(),相机位置改变 + // end(),控制器内部退出当前模式,主要用于按Esc退出第一视角模式。 + + this.call = this.dispatch.call.bind(this.dispatch); + this.on = this.dispatch.on.bind(this.dispatch); + } + + /** + * 启用控制器 + */ + enable() { + this.enabled = true; + } + + /** + * 禁用控制器 + */ + disable() { + this.enabled = false; + } + + /** + * 转到某个物体的视角 + * @param {THREE.Object3D} target 目标 + */ + focus(target) { + // eslint-disable-line + } + + /** + * 不断循环调用,以便实现动画效果 + * @param {THREE.Clock} clock 时钟 + * @param {Number} deltaTime 间隔时间 + */ + update(clock, deltaTime) { + // eslint-disable-line + } + + /** + * 当前鼠标所在位置碰撞点世界坐标 + * @param {THREE.Vector3} position 世界坐标 + */ + setPickPosition(position) { + // eslint-disable-line + } + + /** + * 析构控制器 + */ + dispose() { + this.camera = null; + this.domElement = null; + } } -export default BaseControls; \ No newline at end of file +export default BaseControls; diff --git a/web/src/editor/Editor.jsx b/web/src/editor/Editor.jsx index 93247b83c432fc9bbc2df8be2b039a30c1e1c6ca..8baaebe453297180fce8bc8be58d21a93d1aced8 100644 --- a/web/src/editor/Editor.jsx +++ b/web/src/editor/Editor.jsx @@ -3,13 +3,13 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ import './css/Editor.css'; -import {BorderLayout, LoadMask} from '../ui/index'; +import { BorderLayout, LoadMask } from '../ui/index'; import EditorMenuBar from './menu/EditorMenuBar.jsx'; import EditorStatusBar from './status/EditorStatusBar.jsx'; @@ -24,6 +24,7 @@ import Helpers from '../helper/Helpers'; import ControlsManager from '../controls/ControlsManager'; import EmptySceneTemplate from './menu/scene/EmptySceneTemplate'; +import TweenHelps from '../helper/animation/TweenHelpers'; import global from '../global'; /** @@ -31,455 +32,464 @@ import global from '../global'; * @author tengge / https://github.com/tengge1 */ class Editor extends React.Component { - constructor(props) { - super(props); - - this.state = { - showMask: false, - maskText: _t('Waiting...'), - elements: [], - assetsPanelShow: global.app.storage.assetsPanelShow, - sidebarShow: global.app.storage.sidebarShow, - toolbarShow: global.app.storage.toolbarShow, - timelinePanelShow: global.app.storage.timelinePanelShow, - statusBarShow: global.app.storage.statusBarShow - }; - - this.type = 'scene'; // 编辑器类型:scene, mesh, texture, material, terrain, ai - - this.onToggle = this.onToggle.bind(this); - } - - render() { - const { - showMask, - maskText, - elements, - assetsPanelShow, - sidebarShow, - toolbarShow, - timelinePanelShow, - statusBarShow - } = this.state; - const isLogin = !global.app.server.enableAuthority || global.app.server.isLogin; - - return <> - - - {} - {} - {isLogin && } - - {isLogin && } - - {isLogin && } - - - {elements.map((n, i) => { - return
{n}
; - })} - - ; - } - - componentDidMount() { - global.app.editor = this; - - // 基础 - this.history = new History(this); - - // 场景 - this.scene = new THREE.Scene(); - this.scene.name = _t('Scene'); - this.scene.background = new THREE.Color(0xaaaaaa); - - this.sceneHelpers = new THREE.Scene(); - - this.sceneID = null; // 当前场景ID - this.sceneName = null; // 当前场景名称 - - const width = global.app.viewport.clientWidth; - const height = global.app.viewport.clientHeight; - - // 相机 - this.DEFAULT_CAMERA = new THREE.PerspectiveCamera(50, width / height, 0.1, 10000); - this.DEFAULT_CAMERA.name = _t('DefaultCamera'); - this.DEFAULT_CAMERA.userData.isDefault = true; - this.DEFAULT_CAMERA.userData.control = 'OrbitControls'; // 场景控制类型 - this.DEFAULT_CAMERA.userData.orbitOptions = { - enableDamping: true, - dampingFactor: 0.08, - panSpeed: 1.6 - }; - this.DEFAULT_CAMERA.position.set(20, 10, 20); - this.DEFAULT_CAMERA.lookAt(new THREE.Vector3()); - - // 说明:默认是透视相机,当选择正视图、侧视图、顶视图时,使用正交相机进行渲染、选中。 - - // 视图 - this.view = 'perspective'; // perspective, front, side, top - - // 透视相机 - this.camera = this.DEFAULT_CAMERA.clone(); - - // 正交相机 - this.orthCamera = new THREE.OrthographicCamera(-width / 4, width / 4, height / 4, -height / 4, 0.1, 10000); - - // 渲染器 - this.renderer = new THREE.WebGLRenderer({ - antialias: true - }); - // this.renderer.gammaInput = false; - // this.renderer.gammaOutput = false; - this.renderer.shadowMap.enabled = true; - this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; - this.renderer.autoClear = false; - this.renderer.autoUpdateScene = false; - this.renderer.setPixelRatio(window.devicePixelRatio); - - global.app.viewport.appendChild(this.renderer.domElement); - this.renderer.setSize(width, height); - - // 物体 - this.objects = []; - - // 脚本 格式:[{ id: 'MongoDB _id', pid: null, name: 'Script Name', type: 'Script Type', source: 'Source Code', uuid: 'uuid', sort: 'sort' }, ...] - // 其中,uuid是创建脚本时自动生成,不可改变,关联时使用,id是mongo数据库ID字段;name:随便填写; - // type:javascript,vertexShader, fragmentShader, json, folder;source:源码;sort: 排序,小的在前面。 - // pid是null或undefined是根节点,否则是子节点。 - // type为group时表示一个文件夹,此时,不需要source属性。 - this.scripts = []; - - // 动画格式:[{ id: 'MongoDB _id', uuid: 'uuid', layer: '动画层序号', layerName: '动画层名称', animations: '动画' }, ...] - // 其中,动画:[{ id: 'MongoDB _id', uuid: 'uuid', name: '动画名称', target: '动画对象uuid', type: '动画类型', beginTime: '开始时间(s)', endTime: '结束时间(s)', data: '动画参数' }, ...] - // 其中,uuid是创建脚本时自动生成,不可改变,关联时使用。 - // 动画层序号:在时间面板显示位置,从0开始计算。 - // 动画类型:Tween-补间动画,Skeletal-骨骼动画,Audio-音频播放,Shader-着色器动画,Filter-滤镜动画,Particle-粒子动画 - // 动画参数:是一个字典,根据动画类型不同,参数也不同 - this.animations = []; + constructor(props) { + super(props); + + this.state = { + showMask: false, + maskText: _t('Waiting...'), + elements: [], + assetsPanelShow: global.app.storage.assetsPanelShow, + sidebarShow: global.app.storage.sidebarShow, + toolbarShow: global.app.storage.toolbarShow, + timelinePanelShow: global.app.storage.timelinePanelShow, + statusBarShow: global.app.storage.statusBarShow, + }; + + this.type = 'scene'; // 编辑器类型:scene, mesh, texture, material, terrain, ai + + // 实例化补间动画辅助器 + this.tweenHelps = new TweenHelps(); + + this.onToggle = this.onToggle.bind(this); + } + + render() { + const { showMask, maskText, elements, assetsPanelShow, sidebarShow, toolbarShow, timelinePanelShow, statusBarShow } = this.state; + const isLogin = !global.app.server.enableAuthority || global.app.server.isLogin; + + return ( + <> + + + {} + {} + {isLogin && } + + {isLogin && } + + {isLogin && } + + + {elements.map((n, i) => { + return
{n}
; + })} + + + ); + } + + componentDidMount() { + global.app.editor = this; + + // 监听新场景加载 + global.app.on('sceneLoaded.Editor', () => { + this.animations.forEach(item => { + if (item.animations.length !== 0) { + item.animations.forEach(childItem => { + this.tweenHelps.addAnimation(childItem); + }); + } + }); + }); + + // 基础 + this.history = new History(this); + + // 场景 + this.scene = new THREE.Scene(); + this.scene.name = _t('Scene'); + this.scene.background = new THREE.Color(0xaaaaaa); + + this.sceneHelpers = new THREE.Scene(); + + this.sceneID = null; // 当前场景ID + this.sceneName = null; // 当前场景名称 + + const width = global.app.viewport.clientWidth; + const height = global.app.viewport.clientHeight; - // 当前选中物体 - this.selected = null; + // 相机 + this.DEFAULT_CAMERA = new THREE.PerspectiveCamera(50, width / height, 0.1, 100000); + this.DEFAULT_CAMERA.name = _t('DefaultCamera'); + this.DEFAULT_CAMERA.userData.isDefault = true; + this.DEFAULT_CAMERA.userData.control = 'OrbitControls'; // 场景控制类型 + this.DEFAULT_CAMERA.userData.orbitOptions = { + enableDamping: true, + dampingFactor: 0.08, + panSpeed: 1.6, + }; + this.DEFAULT_CAMERA.position.set(20, 10, 20); + this.DEFAULT_CAMERA.lookAt(new THREE.Vector3()); - // 平移旋转缩放控件 - this.transformControls = new THREE.TransformControls(this.camera, global.app.viewport); - this.sceneHelpers.add(this.transformControls); + // 说明:默认是透视相机,当选择正视图、侧视图、顶视图时,使用正交相机进行渲染、选中。 - // 编辑器控件 - this.controls = new ControlsManager(this.camera, global.app.viewport); + // 视图 + this.view = 'perspective'; // perspective, front, side, top - // 帮助器场景灯光 - let light = new THREE.DirectionalLight(0xffffff, 1.0); - light.position.z = 10; - this.sceneHelpers.add(light); + // 透视相机 + this.camera = this.DEFAULT_CAMERA.clone(); + + // 正交相机 + this.orthCamera = new THREE.OrthographicCamera(-width / 4, width / 4, height / 4, -height / 4, 0.1, 10000); + + // 渲染器 + this.renderer = new THREE.WebGLRenderer({ + antialias: true, + }); + // this.renderer.gammaInput = false; + // this.renderer.gammaOutput = false; + this.renderer.shadowMap.enabled = true; + this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; + this.renderer.autoClear = false; + this.renderer.autoUpdateScene = false; + this.renderer.setPixelRatio(window.devicePixelRatio); + + global.app.viewport.appendChild(this.renderer.domElement); + this.renderer.setSize(width, height); + + // 物体 + this.objects = []; + + // 脚本 格式:[{ id: 'MongoDB _id', pid: null, name: 'Script Name', type: 'Script Type', source: 'Source Code', uuid: 'uuid', sort: 'sort' }, ...] + // 其中,uuid是创建脚本时自动生成,不可改变,关联时使用,id是mongo数据库ID字段;name:随便填写; + // type:javascript,vertexShader, fragmentShader, json, folder;source:源码;sort: 排序,小的在前面。 + // pid是null或undefined是根节点,否则是子节点。 + // type为group时表示一个文件夹,此时,不需要source属性。 + this.scripts = []; + + // 动画格式:[{ id: 'MongoDB _id', uuid: 'uuid', layer: '动画层序号', layerName: '动画层名称', animations: '动画' }, ...] + // 其中,动画:[{ id: 'MongoDB _id', uuid: 'uuid', name: '动画名称', target: '动画对象uuid', type: '动画类型', beginTime: '开始时间(s)', endTime: '结束时间(s)', data: '动画参数' }, ...] + // 其中,uuid是创建脚本时自动生成,不可改变,关联时使用。 + // 动画层序号:在时间面板显示位置,从0开始计算。 + // 动画类型:Tween-补间动画,Skeletal-骨骼动画,Audio-音频播放,Shader-着色器动画,Filter-滤镜动画,Particle-粒子动画 + // 动画参数:是一个字典,根据动画类型不同,参数也不同 + this.animations = []; + + // 当前选中物体 + this.selected = null; + + // 平移旋转缩放控件 + this.transformControls = new THREE.TransformControls(this.camera, global.app.viewport); + this.sceneHelpers.add(this.transformControls); + + // 编辑器控件 + this.controls = new ControlsManager(this.camera, global.app.viewport); + + // 帮助器场景灯光 + let light = new THREE.DirectionalLight(0xffffff, 1.0); + light.position.z = 10; + this.sceneHelpers.add(light); + + this.showViewHelper = true; + + // GPUPick使用数量。为0时,为了提升性能,不启用GPUPick。 + this.gpuPickNum = global.app.storage.hoverEnabled ? 1 : 0; + + // 事件 + global.app.on(`appStarted.Editor`, this.onAppStarted.bind(this)); + global.app.on(`showMask.Editor`, this.onShowMask.bind(this)); + global.app.on(`storageChanged.Editor`, this.onStorageChanged.bind(this)); + + // 帮助器 + this.helpers = new Helpers(global.app); + + global.app.call('appStart', this); + global.app.call('appStarted', this); + + global.app.call('resize', this); + + global.app.log(_t('Program started.')); + } + + componentWillUnmount() { + global.app.call('appStop', this); + global.app.call('appStoped', this); + + global.app.log(_t('Program stoped.')); + + global.app.event.stop(); + } + + onAppStarted() { + this.helpers.start(); + this.clear(); + + this._addAudioListener = this._addAudioListener.bind(this); + document.addEventListener('click', this._addAudioListener); - this.showViewHelper = true; + // 如果检测到有自动保存的场景,提示是否载入 + global.app.call(`queryLoadAutoSceneScene`, this); + } - // GPUPick使用数量。为0时,为了提升性能,不启用GPUPick。 - this.gpuPickNum = global.app.storage.hoverEnabled ? 1 : 0; + onToggle() { + global.app.call('resize', this); + } - // 事件 - global.app.on(`appStarted.Editor`, this.onAppStarted.bind(this)); - global.app.on(`showMask.Editor`, this.onShowMask.bind(this)); - global.app.on(`storageChanged.Editor`, this.onStorageChanged.bind(this)); - - // 帮助器 - this.helpers = new Helpers(global.app); - - global.app.call('appStart', this); - global.app.call('appStarted', this); - - global.app.call('resize', this); - - global.app.log(_t('Program started.')); + onStorageChanged(key, value) { + const keys = ['assetsPanelShow', 'sidebarShow', 'toolbarShow', 'timelinePanelShow', 'statusBarShow']; + if (keys.indexOf(key) === -1) { + return; } - - componentWillUnmount() { - global.app.call('appStop', this); - global.app.call('appStoped', this); - - global.app.log(_t('Program stoped.')); - - global.app.event.stop(); + this.setState( + { + [key]: value, + }, + () => { + global.app.call(`resize`, this); + } + ); + } + + // -------------------- 场景 -------------------------- + + setScene(scene) { + // 设置场景 + // 移除原有物体 + let objects = this.scene.children; + while (objects.length > 0) { + this.removeObject(objects[0]); } - onAppStarted() { - this.helpers.start(); - this.clear(); + // 添加新物体 + let children = scene.children.slice(); + scene.children.length = 0; + this.scene = scene; - this._addAudioListener = this._addAudioListener.bind(this); - document.addEventListener('click', this._addAudioListener); + children.forEach(n => { + this.addObject(n); + }); - // 如果检测到有自动保存的场景,提示是否载入 - global.app.call(`queryLoadAutoSceneScene`, this); - } + global.app.call('sceneGraphChanged', this); + } - onToggle() { - global.app.call('resize', this); - } + clear(addObject = true) { + // 清空场景 + const template = new EmptySceneTemplate(); + template.clear(); - onStorageChanged(key, value) { - const keys = ['assetsPanelShow', 'sidebarShow', 'toolbarShow', 'timelinePanelShow', 'statusBarShow']; - if (keys.indexOf(key) === -1) { - return; - } - this.setState({ - [key]: value - }, () => { - global.app.call(`resize`, this); - }); + // 添加默认元素 + if (addObject) { + template.create(); } - // -------------------- 场景 -------------------------- + global.app.call('editorCleared', this); + global.app.call('scriptChanged', this); + global.app.call('animationChanged', this); + } - setScene(scene) { // 设置场景 - // 移除原有物体 - let objects = this.scene.children; - while (objects.length > 0) { - this.removeObject(objects[0]); - } - - // 添加新物体 - let children = scene.children.slice(); - scene.children.length = 0; - this.scene = scene; + // 点击编辑器时才添加AudioListener,避免警告信息 + _addAudioListener() { + document.removeEventListener('click', this._addAudioListener); - children.forEach(n => { - this.addObject(n); - }); + this.audioListener = new THREE.AudioListener(); + this.audioListener.name = _t('AudioListener'); - global.app.call('sceneGraphChanged', this); + if (this.camera.children.findIndex(o => o instanceof THREE.AudioListener) === -1) { + this.camera.add(this.audioListener); } - - clear(addObject = true) { // 清空场景 - const template = new EmptySceneTemplate(); - template.clear(); - - // 添加默认元素 - if (addObject) { - template.create(); - } - - global.app.call('editorCleared', this); - global.app.call('scriptChanged', this); - global.app.call('animationChanged', this); + } + + // ---------------------- 物体 --------------------------- + + objectByUuid(uuid) { + // 根据uuid获取物体 + return this.scene.getObjectByProperty('uuid', uuid, true); + } + + addObject(object) { + // 添加物体 + this.scene.add(object); + global.app.call('objectAdded', this, object); + global.app.call('sceneGraphChanged', this); + } + + moveObject(object, parent, before) { + // 移动物体 + if (parent === undefined) { + parent = this.scene; } - // 点击编辑器时才添加AudioListener,避免警告信息 - _addAudioListener() { - document.removeEventListener('click', this._addAudioListener); + parent.add(object); - this.audioListener = new THREE.AudioListener(); - this.audioListener.name = _t('AudioListener'); - - if (this.camera.children.findIndex(o => o instanceof THREE.AudioListener) === -1) { - this.camera.add(this.audioListener); - } + // sort children array + if (before !== undefined) { + let index = parent.children.indexOf(before); + parent.children.splice(index, 0, object); + parent.children.pop(); } - // ---------------------- 物体 --------------------------- + global.app.call('sceneGraphChanged', this); + } - objectByUuid(uuid) { // 根据uuid获取物体 - return this.scene.getObjectByProperty('uuid', uuid, true); + removeObject(object) { + // 移除物体 + if (object.parent === null) { + // 避免删除相机或场景 + return; } - addObject(object) { // 添加物体 - this.scene.add(object); - global.app.call('objectAdded', this, object); - global.app.call('sceneGraphChanged', this); - } + object.parent.remove(object); - moveObject(object, parent, before) { // 移动物体 - if (parent === undefined) { - parent = this.scene; - } + global.app.call('objectRemoved', this, object); + global.app.call('sceneGraphChanged', this); + } - parent.add(object); + // ------------------------- 帮助 ------------------------------ - // sort children array - if (before !== undefined) { - let index = parent.children.indexOf(before); - parent.children.splice(index, 0, object); - parent.children.pop(); - } + addPhysicsHelper(helper) { + let geometry = new THREE.SphereBufferGeometry(2, 4, 2); + let material = new THREE.MeshBasicMaterial({ + color: 0xff0000, + visible: false, + }); - global.app.call('sceneGraphChanged', this); - } + let picker = new THREE.Mesh(geometry, material); + picker.name = 'picker'; + picker.userData.object = helper.object; + helper.add(picker); - removeObject(object) { // 移除物体 - if (object.parent === null) { // 避免删除相机或场景 - return; - } + this.sceneHelpers.add(helper); + this.helpers[helper.object.id] = helper; + this.objects.push(picker); + } - object.parent.remove(object); + removePhysicsHelper(helper) { + if (this.helpers[helper.object.id] !== undefined) { + helper.parent.remove(helper); + delete this.helpers[helper.object.id]; - global.app.call('objectRemoved', this, object); - global.app.call('sceneGraphChanged', this); + let objects = this.objects; + objects.splice(objects.indexOf(helper.getObjectByName('picker')), 1); } + } - // ------------------------- 帮助 ------------------------------ - - addPhysicsHelper(helper) { - let geometry = new THREE.SphereBufferGeometry(2, 4, 2); - let material = new THREE.MeshBasicMaterial({ - color: 0xff0000, - visible: false - }); + // ------------------------ 选中事件 -------------------------------- - let picker = new THREE.Mesh(geometry, material); - picker.name = 'picker'; - picker.userData.object = helper.object; - helper.add(picker); - - this.sceneHelpers.add(helper); - this.helpers[helper.object.id] = helper; - this.objects.push(picker); + select(object) { + // 选中物体 + if (this.selected === object) { + return; } - removePhysicsHelper(helper) { - if (this.helpers[helper.object.id] !== undefined) { - helper.parent.remove(helper); - delete this.helpers[helper.object.id]; + this.selected = object; - let objects = this.objects; - objects.splice(objects.indexOf(helper.getObjectByName('picker')), 1); - } + if (!object) { + this.transformControls.detach(); } - // ------------------------ 选中事件 -------------------------------- + global.app.call('objectSelected', this, object); + } - select(object) { // 选中物体 - if (this.selected === object) { - return; - } - - this.selected = object; - - if (!object) { - this.transformControls.detach(); - } - - global.app.call('objectSelected', this, object); + selectById(id) { + // 根据id选中物体 + if (id === this.camera.id) { + this.select(this.camera); + return; } - selectById(id) { // 根据id选中物体 - if (id === this.camera.id) { - this.select(this.camera); - return; - } + this.select(this.scene.getObjectById(id, true)); + } - this.select(this.scene.getObjectById(id, true)); + selectByUuid(uuid) { + // 根据uuid选中物体 + if (uuid === this.camera.uuid) { + this.select(this.camera); + return; } - selectByUuid(uuid) { // 根据uuid选中物体 - if (uuid === this.camera.uuid) { - this.select(this.camera); - return; - } - - this.scene.traverse(child => { - if (child.uuid === uuid) { - this.select(child); - } - }); + this.scene.traverse(child => { + if (child.uuid === uuid) { + this.select(child); + } + }); + } + + deselect() { + // 取消选中物体 + this.select(null); + } + + // ---------------------- 焦点事件 -------------------------- + + focus(object) { + // 设置焦点 + global.app.call('objectFocused', this, object); + } + + focusById(id) { + // 根据id设置交点 + let obj = this.scene.getObjectById(id, true); + if (obj) { + this.focus(obj); } + } - deselect() { // 取消选中物体 - this.select(null); + focusByUUID(uuid) { + // 根据uuid设置焦点 + if (uuid === this.camera.uuid) { + this.focus(this.camera); + return; } - // ---------------------- 焦点事件 -------------------------- + this.scene.traverse(child => { + if (child.uuid === uuid) { + this.focus(child); + } + }); + } - focus(object) { // 设置焦点 - global.app.call('objectFocused', this, object); - } - - focusById(id) { // 根据id设置交点 - let obj = this.scene.getObjectById(id, true); - if (obj) { - this.focus(obj); - } - } + // ----------------------- 命令事件 -------------------------- - focusByUUID(uuid) { // 根据uuid设置焦点 - if (uuid === this.camera.uuid) { - this.focus(this.camera); - return; - } + execute(cmd, optionalName) { + // 执行事件 + this.history.execute(cmd, optionalName); + } - this.scene.traverse(child => { - if (child.uuid === uuid) { - this.focus(child); - } - }); - } + undo() { + // 撤销事件 + this.history.undo(); + } - // ----------------------- 命令事件 -------------------------- + redo() { + // 重做事件 + this.history.redo(); + } - execute(cmd, optionalName) { // 执行事件 - this.history.execute(cmd, optionalName); - } + // ---------------------- 用户界面 -------------------------------- - undo() { // 撤销事件 - this.history.undo(); - } + createElement(type, props = {}, children = undefined) { + let ref = React.createRef(); + props.ref = ref; + return React.createElement(type, props, children); + } - redo() { // 重做事件 - this.history.redo(); - } + addElement(element, callback) { + let elements = this.state.elements; - // ---------------------- 用户界面 -------------------------------- + elements.push(element); - createElement(type, props = {}, children = undefined) { - let ref = React.createRef(); - props.ref = ref; - return React.createElement(type, props, children); - } + this.setState({ elements }, callback); + } - addElement(element, callback) { - let elements = this.state.elements; + removeElement(element, callback) { + let elements = this.state.elements; - elements.push(element); + let index = elements.findIndex(n => n === element || (n.ref && n.ref.current === element)); - this.setState({elements}, callback); + if (index > -1) { + elements.splice(index, 1); } - removeElement(element, callback) { - let elements = this.state.elements; - - let index = elements.findIndex(n => n === element || n.ref && n.ref.current === element); - - if (index > -1) { - elements.splice(index, 1); - } - - this.setState({elements}, callback); - } + this.setState({ elements }, callback); + } - onShowMask(enabled, text) { - this.setState({ - showMask: enabled, - maskText: text || _t('Waiting...') - }); - } + onShowMask(enabled, text) { + this.setState({ + showMask: enabled, + maskText: text || _t('Waiting...'), + }); + } } -export default Editor; \ No newline at end of file +export default Editor; diff --git a/web/src/editor/Loader.jsx b/web/src/editor/Loader.jsx index 19034047358d87dcc6455bce4dc0270d787e8bf6..15174c5c3673f3fff82c7f2b427d01b9dc3c0dc9 100644 --- a/web/src/editor/Loader.jsx +++ b/web/src/editor/Loader.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -15,13 +15,13 @@ import { LoadMask } from '../ui/index'; * @author tengge / https://github.com/tengge1 */ class Loader extends React.Component { - constructor(props) { - super(props); - } + constructor(props) { + super(props); + } - render() { - return ; - } + render() { + return ; + } } -export default Loader; \ No newline at end of file +export default Loader; diff --git a/web/src/editor/assets/AssetsPanel.jsx b/web/src/editor/assets/AssetsPanel.jsx index 736b97f295ea400490df70a7171437d06f4af4ee..986e5be9e297e6b2de52cd70e929b80a8b9a1531 100644 --- a/web/src/editor/assets/AssetsPanel.jsx +++ b/web/src/editor/assets/AssetsPanel.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -30,151 +30,116 @@ import global from '../../global'; * @author tengge / https://github.com/tengge1 */ class AssetsPanel extends React.Component { - constructor(props) { - super(props); + constructor(props) { + super(props); - this.state = { - activeIndex: 0, - sceneCount: 0, - meshCount: 0, - mapCount: 0, - materialCount: 0, - audioCount: 0, - animationCount: 0, - particleCount: 0, - prefabCount: 0, - characterCount: 0, - screenshotCount: 0, - videoCount: 0 - }; + this.state = { + activeIndex: 0, + sceneCount: 0, + meshCount: 0, + mapCount: 0, + materialCount: 0, + audioCount: 0, + animationCount: 0, + particleCount: 0, + prefabCount: 0, + characterCount: 0, + screenshotCount: 0, + videoCount: 0, + }; - this.handleActive = this.handleActive.bind(this); - } + this.handleActive = this.handleActive.bind(this); + } - render() { - const { activeIndex, sceneCount, meshCount, mapCount, materialCount, audioCount, animationCount, particleCount, prefabCount, screenshotCount, videoCount } = this.state; + render() { + const { activeIndex, sceneCount, meshCount, mapCount, materialCount, audioCount, animationCount, particleCount, prefabCount, screenshotCount, videoCount } = this.state; - const { enableAuthority, isLogin, authorities } = global.app.server; + const { enableAuthority, isLogin, authorities } = global.app.server; - let index = 0; + let index = 0; - return - - - - {!enableAuthority || authorities.includes('LIST_MESH') ? - - : null} - {!enableAuthority || authorities.includes('LIST_MAP') ? - - : null} - {!enableAuthority || authorities.includes('LIST_MATERIAL') ? - - : null} - {!enableAuthority || authorities.includes('LIST_AUDIO') ? - - : null} - {!enableAuthority || authorities.includes('LIST_ANIMATION') ? - - : null} - {!enableAuthority || authorities.includes('LIST_PARTICLE') ? - - : null} - {!enableAuthority || authorities.includes('LIST_PREFAB') ? - - : null} - {!enableAuthority || authorities.includes('LIST_SCREENSHOT') ? - - : null} - {!enableAuthority || authorities.includes('LIST_VIDEO') ? - - : null} - {!enableAuthority || isLogin ? - - : null} - ; - } + return ( + + + + + {!enableAuthority || authorities.includes('LIST_MESH') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_MAP') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_MATERIAL') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_AUDIO') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_ANIMATION') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_PARTICLE') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_PREFAB') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_SCREENSHOT') ? ( + + + + ) : null} + {!enableAuthority || authorities.includes('LIST_VIDEO') ? ( + + + + ) : null} + {!enableAuthority || isLogin ? ( + + + + ) : null} + + ); + } - componentDidMount() { - this.update(); - } + componentDidMount() { + this.update(); + } - update() { - fetch(`${global.app.options.server}/api/Assets/List`).then(response => { - if (response.ok) { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState(obj); - }); - } + update() { + fetch(`${global.app.options.server}/api/Assets/List`).then(response => { + if (response.ok) { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } + this.setState(obj); }); - } + } + }); + } - handleActive(index) { - this.setState({ - activeIndex: index - }); - } + handleActive(index) { + this.setState({ + activeIndex: index, + }); + } } -export default AssetsPanel; \ No newline at end of file +export default AssetsPanel; diff --git a/web/src/editor/assets/MapPanel.jsx b/web/src/editor/assets/MapPanel.jsx index 2bdf67d6ffad1e49ded2978ff9ec39907bf6dd2f..0b5a934ae77819d434470a017141876ccc657ee0 100644 --- a/web/src/editor/assets/MapPanel.jsx +++ b/web/src/editor/assets/MapPanel.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -19,233 +19,205 @@ import global from '../../global'; * @author tengge / https://github.com/tengge1 */ class MapPanel extends React.Component { - constructor(props) { - super(props); - - this.state = { - data: [], - categoryData: [], - name: '', - categories: [] - }; - - this.handleClick = this.handleClick.bind(this); - - this.handleAddImage = this.handleAddImage.bind(this); - this.handleAddSkyBox = this.handleAddSkyBox.bind(this); - this.handleAddSkyBall = this.handleAddSkyBall.bind(this); - this.handleAddVideo = this.handleAddVideo.bind(this); - this.handleEdit = this.handleEdit.bind(this); - this.handleDelete = this.handleDelete.bind(this); - - this.update = this.update.bind(this); + constructor(props) { + super(props); + + this.state = { + data: [], + categoryData: [], + name: '', + categories: [], + }; + + this.handleClick = this.handleClick.bind(this); + this.handleAddImage = this.handleAddImage.bind(this); + this.handleAddSkyBox = this.handleAddSkyBox.bind(this); + this.handleAddSkyBall = this.handleAddSkyBall.bind(this); + this.handleAddVideo = this.handleAddVideo.bind(this); + this.handleEdit = this.handleEdit.bind(this); + this.handleDelete = this.handleDelete.bind(this); + + this.update = this.update.bind(this); + } + + render() { + const { className, style } = this.props; + const { data, categoryData, name, categories } = this.state; + const { enableAuthority, authorities } = global.app.server; + + let list = data; + + if (name.trim() !== '') { + list = list.filter(n => { + return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; + }); } - render() { - const { className, style } = this.props; - const { data, categoryData, name, categories } = this.state; - const { enableAuthority, authorities } = global.app.server; - - let list = data; - - if (name.trim() !== '') { - list = list.filter(n => { - return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; - }); - } - - if (categories.length > 0) { - list = list.filter(n => { - return categories.indexOf(n.CategoryID) > -1; - }); - } - - const imageListData = list.map(n => { - return Object.assign({}, n, { - id: n.ID, - src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, - title: n.Name, - icon: 'scenes' - }); - }); - - return
-
- - - - - - - - - -
- -
; - } - - componentDidUpdate() { - if (this.init === undefined && this.props.show === true) { - this.init = true; - this.update(); - } + if (categories.length > 0) { + list = list.filter(n => { + return categories.indexOf(n.CategoryID) > -1; + }); } - update() { - fetch(`${global.app.options.server}/api/Category/List?Type=Map`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - categoryData: obj.Data - }); - }); - }); - fetch(`${global.app.options.server}/api/Map/List`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - data: obj.Data - }); - }); - }); + const imageListData = list.map(n => { + return Object.assign({}, n, { + id: n.ID, + src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, + title: n.Name, + icon: 'scenes', + }); + }); + + return ( +
+
+ + + + + + + + + +
+ +
+ ); + } + + componentDidUpdate() { + if (this.init === undefined && this.props.show === true) { + this.init = true; + this.update(); } - - handleSearch(name, categories) { + } + + update() { + fetch(`${global.app.options.server}/api/Category/List?Type=Map`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } this.setState({ - name, - categories + categoryData: obj.Data, }); - } - - handleClick(data) { - global.app.call(`selectMap`, this, data); - } - - // ------------------------------- 上传图片 --------------------------------------- - - handleAddImage() { - global.app.upload(`${global.app.options.server}/api/Map/Add`, obj => { - if (obj.Code === 200) { - this.update(); - } - global.app.toast(_t(obj.Msg)); - }); - } - - // ---------------------------- 上传天空盒 -------------------------------------- - - handleAddSkyBox() { - const win = global.app.createElement(AddSkyBoxWindow, { - callback: this.update + }); + }); + fetch(`${global.app.options.server}/api/Map/List`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } + this.setState({ + data: obj.Data, }); - - global.app.addElement(win); - } - - // ---------------------------- 上传天空球 --------------------------------------- - - handleAddSkyBall() { - global.app.upload(`${global.app.options.server}/api/Map/Add?type=skyBall`, obj => { + }); + }); + } + + handleSearch(name, categories) { + this.setState({ + name, + categories, + }); + } + + handleClick(data) { + global.app.call(`selectMap`, this, data); + } + + // ------------------------------- 上传图片 --------------------------------------- + + handleAddImage() { + global.app.upload(`${global.app.options.server}/api/Map/Add`, obj => { + if (obj.Code === 200) { + this.update(); + } + global.app.toast(_t(obj.Msg)); + }); + } + + // ---------------------------- 上传天空盒 -------------------------------------- + + handleAddSkyBox() { + const win = global.app.createElement(AddSkyBoxWindow, { + callback: this.update, + }); + + global.app.addElement(win); + } + + // ---------------------------- 上传天空球 --------------------------------------- + + handleAddSkyBall() { + global.app.upload(`${global.app.options.server}/api/Map/Add?type=skyBall`, obj => { + if (obj.Code === 200) { + this.update(); + } + global.app.toast(_t(obj.Msg)); + }); + } + + // ------------------------------ 上传视频 -------------------------------------- + + handleAddVideo() { + global.app.upload(`${global.app.options.server}/api/Map/Add`, obj => { + if (obj.Code === 200) { + this.update(); + } + global.app.toast(_t(obj.Msg)); + }); + } + + // ------------------------------- 编辑 --------------------------------------- + + handleEdit(data) { + const win = global.app.createElement(EditWindow, { + type: 'Map', + typeName: _t('Map'), + data, + saveUrl: `${global.app.options.server}/api/Map/Edit`, + callback: this.update, + }); + + global.app.addElement(win); + } + + // ------------------------------ 删除 ---------------------------------------- + + handleDelete(data) { + global.app.confirm({ + title: _t('Confirm'), + content: `${_t('Delete')} ${data.title}?`, + onOK: () => { + fetch(`${global.app.options.server}/api/Map/Delete?ID=${data.id}`, { + method: 'POST', + }).then(response => { + response.json().then(obj => { if (obj.Code === 200) { - this.update(); + this.update(); } global.app.toast(_t(obj.Msg)); + }); }); - } - - // ------------------------------ 上传视频 -------------------------------------- - - handleAddVideo() { - global.app.upload(`${global.app.options.server}/api/Map/Add`, obj => { - if (obj.Code === 200) { - this.update(); - } - global.app.toast(_t(obj.Msg)); - }); - } - - // ------------------------------- 编辑 --------------------------------------- - - handleEdit(data) { - const win = global.app.createElement(EditWindow, { - type: 'Map', - typeName: _t('Map'), - data, - saveUrl: `${global.app.options.server}/api/Map/Edit`, - callback: this.update - }); - - global.app.addElement(win); - } - - // ------------------------------ 删除 ---------------------------------------- - - handleDelete(data) { - global.app.confirm({ - title: _t('Confirm'), - content: `${_t('Delete')} ${data.title}?`, - onOK: () => { - fetch(`${global.app.options.server}/api/Map/Delete?ID=${data.id}`, { - method: 'POST' - }).then(response => { - response.json().then(obj => { - if (obj.Code === 200) { - this.update(); - } - global.app.toast(_t(obj.Msg)); - }); - }); - } - }); - } + }, + }); + } } MapPanel.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - show: PropTypes.bool + className: PropTypes.string, + style: PropTypes.object, + show: PropTypes.bool, }; MapPanel.defaultProps = { - className: null, - style: null, - show: false + className: null, + style: null, + show: false, }; -export default MapPanel; \ No newline at end of file +export default MapPanel; diff --git a/web/src/editor/assets/ModelPanel.jsx b/web/src/editor/assets/ModelPanel.jsx index 467cd8b2238f5af3d949c972e163299ef82c801d..ab145615efcb326da920f3dec025d3b23bb57875 100644 --- a/web/src/editor/assets/ModelPanel.jsx +++ b/web/src/editor/assets/ModelPanel.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -19,242 +19,232 @@ import global from '../../global'; * @author tengge / https://github.com/tengge1 */ class ModelPanel extends React.Component { - constructor(props) { - super(props); - - this.state = { - data: [], - categoryData: [], - name: '', - categories: [] - }; - - this.handleClick = this.handleClick.bind(this); + constructor(props) { + super(props); - this.handleAdd = this.handleAdd.bind(this); - this.handleEdit = this.handleEdit.bind(this); - this.handleDelete = this.handleDelete.bind(this); + this.state = { + data: [], + categoryData: [], + name: '', + categories: [], + }; - this.update = this.update.bind(this); - } + this.handleClick = this.handleClick.bind(this); - render() { - const { className, style } = this.props; - const { data, categoryData, name, categories } = this.state; - const { enableAuthority, authorities } = global.app.server; + this.handleAdd = this.handleAdd.bind(this); + this.handleEdit = this.handleEdit.bind(this); + this.handleDelete = this.handleDelete.bind(this); - let list = data; + this.update = this.update.bind(this); + } - if (name.trim() !== '') { - list = list.filter(n => { - return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; - }); - } + render() { + const { className, style } = this.props; + const { data, categoryData, name, categories } = this.state; + const { enableAuthority, authorities } = global.app.server; - if (categories.length > 0) { - list = list.filter(n => { - return categories.indexOf(n.CategoryID) > -1; - }); - } + let list = data; - const imageListData = list.map(n => { - return Object.assign({}, n, { - id: n.ID, - src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, - title: n.Name, - icon: 'model', - cornerText: n.Type - }); - }); - - return
- - -
; + if (name.trim() !== '') { + list = list.filter(n => { + return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; + }); } - componentDidUpdate() { - if (this.init === undefined && this.props.show === true) { - this.init = true; - this.update(); - } + if (categories.length > 0) { + list = list.filter(n => { + return categories.indexOf(n.CategoryID) > -1; + }); } - update() { - fetch(`${global.app.options.server}/api/Category/List?Type=Mesh`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - categoryData: obj.Data - }); - }); - }); - fetch(`${global.app.options.server}/api/Mesh/List`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - data: obj.Data - }); - }); - }); + const imageListData = list.map(n => { + return Object.assign({}, n, { + id: n.ID, + src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, + title: n.Name, + icon: 'model', + cornerText: n.Type, + }); + }); + + return ( +
+ + +
+ ); + } + + componentDidUpdate() { + if (this.init === undefined && this.props.show === true) { + this.init = true; + this.update(); } - - handleSearch(name, categories) { + } + + // 更新模型列表 + update() { + fetch(`${global.app.options.server}/api/Category/List?Type=Mesh`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } this.setState({ - name, - categories + categoryData: obj.Data, }); - } - - handleClick(model) { - let loader = new ModelLoader(global.app); - - let url = model.Url; - - if (model.Url.indexOf(';') > -1) { // 包含多个入口文件 - url = url.split(';').map(n => global.app.options.server + n); - } else { - url = global.app.options.server + model.Url; + }); + }); + fetch(`${global.app.options.server}/api/Mesh/List`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; } - - loader.load(url, model, { - camera: global.app.editor.camera, - renderer: global.app.editor.renderer, - audioListener: global.app.editor.audioListener, - clearChildren: true - }).then(obj => { - if (!obj) { - return; - } - obj.name = model.Name; - - Object.assign(obj.userData, model, { - Server: true - }); - - if (global.app.storage.addMode === 'click') { - this.clickSceneToAdd(obj); - } else { - this.addToCenter(obj); - } + this.setState({ + data: obj.Data, }); + }); + }); + } + + handleSearch(name, categories) { + this.setState({ + name, + categories, + }); + } + + handleClick(model) { + let loader = new ModelLoader(global.app); + + let url = model.Url; + + if (model.Url.indexOf(';') > -1) { + // 包含多个入口文件 + url = url.split(';').map(n => global.app.options.server + n); + } else { + url = global.app.options.server + model.Url; } - // 添加到场景中心 - addToCenter(obj) { - var cmd = new AddObjectCommand(obj); - cmd.execute(); - - if (obj.userData.scripts) { - obj.userData.scripts.forEach(n => { - global.app.editor.scripts.push(n); - }); - global.app.call('scriptChanged', this); + loader + .load(url, model, { + camera: global.app.editor.camera, + renderer: global.app.editor.renderer, + audioListener: global.app.editor.audioListener, + clearChildren: true, + }) + .then(obj => { + if (!obj) { + return; } - } - - // 点击场景添加 - clickSceneToAdd(obj) { - let added = false; - global.app.editor.gpuPickNum += 1; - global.app.on(`gpuPick.ModelPanel`, intersect => { // 鼠标移动出现预览效果 - if (!intersect.point) { - return; - } - if (!added) { - added = true; - global.app.editor.sceneHelpers.add(obj); - } - obj.position.copy(intersect.point); - }); - global.app.on(`raycast.ModelPanel`, intersect => { // 点击鼠标放置模型 - global.app.on(`gpuPick.ModelPanel`, null); - global.app.on(`raycast.ModelPanel`, null); - obj.position.copy(intersect.point); - this.addToCenter(obj); - global.app.editor.gpuPickNum -= 1; - }); - } + obj.name = model.Name; - // ------------------------------- 上传 --------------------------------------- - - handleAdd() { - global.app.upload(`${global.app.options.server}/api/Mesh/Add`, obj => { - if (obj.Code === 200) { - this.update(); - } - global.app.toast(_t(obj.Msg)); - }); - } - - // ------------------------------- 编辑 --------------------------------------- - - handleEdit(data) { - var win = global.app.createElement(EditModelWindow, { - data, - callback: this.update + Object.assign(obj.userData, model, { + Server: true, }); - global.app.addElement(win); + if (global.app.storage.addMode === 'click') { + this.clickSceneToAdd(obj); + } else { + this.addToCenter(obj); + } + }); + } + + // 添加到场景中心 + addToCenter(obj) { + var cmd = new AddObjectCommand(obj); + cmd.execute(); + + if (obj.userData.scripts) { + obj.userData.scripts.forEach(n => { + global.app.editor.scripts.push(n); + }); + global.app.call('scriptChanged', this); } - - // ------------------------------ 删除 ---------------------------------------- - - handleDelete(data) { - global.app.confirm({ - title: _t('Confirm'), - content: `${_t('Delete')} ${data.title}?`, - onOK: () => { - fetch(`${global.app.options.server}/api/Mesh/Delete?ID=${data.id}`, { - method: 'POST' - }).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.update(); - }); - }); + } + + // 点击场景添加 + clickSceneToAdd(obj) { + let added = false; + global.app.editor.gpuPickNum += 1; + global.app.on(`gpuPick.ModelPanel`, intersect => { + // 鼠标移动出现预览效果 + if (!intersect.point) { + return; + } + if (!added) { + added = true; + global.app.editor.sceneHelpers.add(obj); + } + obj.position.copy(intersect.point); + }); + global.app.on(`raycast.ModelPanel`, intersect => { + // 点击鼠标放置模型 + global.app.on(`gpuPick.ModelPanel`, null); + global.app.on(`raycast.ModelPanel`, null); + obj.position.copy(intersect.point); + this.addToCenter(obj); + global.app.editor.gpuPickNum -= 1; + }); + } + + // ------------------------------- 上传 --------------------------------------- + + handleAdd() { + global.app.upload(`${global.app.options.server}/api/Mesh/Add`, obj => { + if (obj.Code === 200) { + this.update(); + } + global.app.toast(_t(obj.Msg)); + }); + } + + // ------------------------------- 编辑 --------------------------------------- + + handleEdit(data) { + var win = global.app.createElement(EditModelWindow, { + data, + callback: this.update, + }); + + global.app.addElement(win); + } + + // ------------------------------ 删除 ---------------------------------------- + + handleDelete(data) { + global.app.confirm({ + title: _t('Confirm'), + content: `${_t('Delete')} ${data.title}?`, + onOK: () => { + fetch(`${global.app.options.server}/api/Mesh/Delete?ID=${data.id}`, { + method: 'POST', + }).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; } + this.update(); + }); }); - } + }, + }); + } } ModelPanel.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - show: PropTypes.bool + className: PropTypes.string, + style: PropTypes.object, + show: PropTypes.bool, }; ModelPanel.defaultProps = { - className: null, - style: null, - show: false + className: null, + style: null, + show: false, }; -export default ModelPanel; \ No newline at end of file +export default ModelPanel; diff --git a/web/src/editor/assets/ScenePanel.jsx b/web/src/editor/assets/ScenePanel.jsx index 29f0da177f588f7397a7af95aaa57ffe1b6827e7..21bb68a5dd941894af47368ce54649db2c2b2e82 100644 --- a/web/src/editor/assets/ScenePanel.jsx +++ b/web/src/editor/assets/ScenePanel.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -17,174 +17,160 @@ import global from '../../global'; * @author tengge / https://github.com/tengge1 */ class ScenePanel extends React.Component { - constructor(props) { - super(props); - - this.state = { - data: [], - categoryData: [], - name: '', - categories: [] - }; - - this.handleClick = this.handleClick.bind(this); - this.handleEdit = this.handleEdit.bind(this); - this.handleDelete = this.handleDelete.bind(this); - - this.update = this.update.bind(this); + constructor(props) { + super(props); + + this.state = { + data: [], + categoryData: [], + name: '', + categories: [], + }; + + this.handleClick = this.handleClick.bind(this); + this.handleEdit = this.handleEdit.bind(this); + this.handleDelete = this.handleDelete.bind(this); + + this.update = this.update.bind(this); + } + + render() { + const { className, style } = this.props; + const { data, categoryData, name, categories } = this.state; + const { enableAuthority, authorities } = global.app.server; + + let list = data; + + if (name.trim() !== '') { + list = list.filter(n => { + return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; + }); } - render() { - const { className, style } = this.props; - const { data, categoryData, name, categories } = this.state; - const { enableAuthority, authorities } = global.app.server; - - let list = data; - - if (name.trim() !== '') { - list = list.filter(n => { - return n.Name.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.FirstPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1 || - n.TotalPinYin.toLowerCase().indexOf(name.toLowerCase()) > -1; - }); - } - - if (categories.length > 0) { - list = list.filter(n => { - return categories.indexOf(n.CategoryID) > -1; - }); - } - - const imageListData = list.map(n => { - return Object.assign({}, n, { - id: n.ID, - src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, - title: n.Name, - icon: 'scenes', - cornerText: `v${n.Version}`, - showEditButton: !enableAuthority || global.app.server.isAdmin || n.Username === global.app.server.username, - showDeleteButton: !enableAuthority || global.app.server.isAdmin || n.Username === global.app.server.username - }); - }); - - return
- - -
; + if (categories.length > 0) { + list = list.filter(n => { + return categories.indexOf(n.CategoryID) > -1; + }); } - componentDidUpdate() { - if (this.init === undefined && this.props.show === true) { - this.init = true; - this.update(); - global.app.on(`sceneSaved.ScenePanel`, this.update); - } + const imageListData = list.map(n => { + return Object.assign({}, n, { + id: n.ID, + src: n.Thumbnail ? `${global.app.options.server}${n.Thumbnail}` : null, + title: n.Name, + icon: 'scenes', + cornerText: `v${n.Version}`, + showEditButton: !enableAuthority || global.app.server.isAdmin || n.Username === global.app.server.username, + showDeleteButton: !enableAuthority || global.app.server.isAdmin || n.Username === global.app.server.username, + }); + }); + + return ( +
+ + +
+ ); + } + + componentDidUpdate() { + if (this.init === undefined && this.props.show === true) { + this.init = true; + this.update(); + global.app.on(`sceneSaved.ScenePanel`, this.update); } - - update() { - fetch(`${global.app.options.server}/api/Category/List?Type=Scene`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - categoryData: obj.Data - }); - }); - }); - fetch(`${global.app.options.server}/api/Scene/List`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.setState({ - data: obj.Data - }); - }); - }); - } - - handleSearch(name, categories) { + } + + update() { + fetch(`${global.app.options.server}/api/Category/List?Type=Scene`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } this.setState({ - name, - categories + categoryData: obj.Data, }); - } - - handleClick(data) { - let url = `${global.app.options.server}/api/Scene/Load?ID=${data.id}`; - - // 下面代码演示使用,请勿删除 - if (global.app.options.server === '.') { - url = `${global.app.options.server}/api/Scene/Scene_${data.id}`; + }); + }); + fetch(`${global.app.options.server}/api/Scene/List`).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; } - - global.app.call(`load`, this, url, data.Name, data.ID); - } - - // ------------------------------- 编辑 --------------------------------------- - - handleEdit(data) { - const window = global.app.createElement(EditSceneWindow, { - type: 'Scene', - typeName: _t('Scene'), - data, - saveUrl: `${global.app.options.server}/api/Scene/Edit`, - callback: this.update + this.setState({ + data: obj.Data, }); - - global.app.addElement(window); + }); + }); + } + + handleSearch(name, categories) { + this.setState({ + name, + categories, + }); + } + + handleClick(data) { + let url = `${global.app.options.server}/api/Scene/Load?ID=${data.id}`; + + // 下面代码演示使用,请勿删除 + if (global.app.options.server === '.') { + url = `${global.app.options.server}/api/Scene/Scene_${data.id}`; } - // ------------------------------ 删除 ---------------------------------------- - - handleDelete(data) { - global.app.confirm({ - title: _t('Confirm'), - content: `${_t('Delete')} ${data.title}?`, - onOK: () => { - fetch(`${global.app.options.server}/api/Scene/Delete?ID=${data.id}`, { - method: 'POST' - }).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.update(); - }); - }); + global.app.call(`load`, this, url, data.Name, data.ID); + } + + // ------------------------------- 编辑 --------------------------------------- + + handleEdit(data) { + const window = global.app.createElement(EditSceneWindow, { + type: 'Scene', + typeName: _t('Scene'), + data, + saveUrl: `${global.app.options.server}/api/Scene/Edit`, + callback: this.update, + }); + + global.app.addElement(window); + } + + // ------------------------------ 删除 ---------------------------------------- + + handleDelete(data) { + global.app.confirm({ + title: _t('Confirm'), + content: `${_t('Delete')} ${data.title}?`, + onOK: () => { + fetch(`${global.app.options.server}/api/Scene/Delete?ID=${data.id}`, { + method: 'POST', + }).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; } + this.update(); + }); }); - } + }, + }); + } } ScenePanel.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - show: PropTypes.bool + className: PropTypes.string, + style: PropTypes.object, + show: PropTypes.bool, }; ScenePanel.defaultProps = { - className: null, - style: null, - show: false + className: null, + style: null, + show: false, }; -export default ScenePanel; \ No newline at end of file +export default ScenePanel; diff --git a/web/src/editor/assets/window/EditMapWindow.jsx b/web/src/editor/assets/window/EditMapWindow.jsx index dc4334a69f183bd0107dcd2618ee79311896b290..e7d5e6d88a2c8b07ce9fa028acb546f0efda3eeb 100644 --- a/web/src/editor/assets/window/EditMapWindow.jsx +++ b/web/src/editor/assets/window/EditMapWindow.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -19,272 +19,246 @@ import global from '../../../global'; * @author tengge / https://github.com/tengge1 */ class EditMapWindow extends React.Component { - constructor(props) { - super(props); - - this.state = { - activeTabIndex: 0, - - name: props.data.Name, - categories: null, - categoryID: props.data.CategoryID, - thumbnail: props.data.Thumbnail, - isPublic: props.data.IsPublic, - - histories: [], - selectedHistory: null - }; - - this.handleActiveTabChange = this.handleActiveTabChange.bind(this); - - this.updateUI = this.updateUI.bind(this); - - this.handleNameChange = this.handleNameChange.bind(this); - this.handleCategoryChange = this.handleCategoryChange.bind(this); - this.handleThumbnailChange = this.handleThumbnailChange.bind(this); - this.handleIsPublicChange = this.handleIsPublicChange.bind(this); - this.handleEditCategoryList = this.handleEditCategoryList.bind(this); - - this.handleSelectHistory = this.handleSelectHistory.bind(this); - this.loadHistoryRenderer = this.loadHistoryRenderer.bind(this); - this.handleLoadHistory = this.handleLoadHistory.bind(this); - - this.handleSave = this.handleSave.bind(this, props.callback); - this.handleClose = this.handleClose.bind(this); - } - - render() { - const { typeName } = this.props; - const { activeTabIndex, name, categories, categoryID, thumbnail, isPublic, histories, selectedHistory } = this.state; - const { enableAuthority, authorities } = global.app.server; - - return - - -
- - - - - - - + + + + - - - - + + + + - - - - + + + + ; - } + render() { + const { className, style, type, value, min, max, step, show, disabled, accept } = this.props; - handleFocus(event) { - const {onFocus} = this.props; - onFocus && onFocus(event); - } + let val = value === undefined || value === null ? '' : value; + + return ; + } - handleChange(event) { - const {name, type, onChange} = this.props; + handleFocus(event) { + const { onFocus } = this.props; + onFocus && onFocus(event); + } - const value = event.target.value; + handleBlur(event) { + const { onBlur } = this.props; + onBlur && onBlur(event); + } - if (type === 'number') { - if (value.trim() !== '') { - const precision = this.props.precision; + handleChange(event) { + const { name, type, onChange } = this.props; - if (precision === 0) { - onChange && onChange(parseInt(value), name, event); - } else { - onChange && onChange(parseInt(parseFloat(value) * 10 ** precision) / 10 ** precision, name, event); - } - } else { - onChange && onChange(null, name, event); - } + const value = event.target.value; + + if (type === 'number') { + if (value.trim() !== '') { + const precision = this.props.precision; + + if (precision === undefined) { + onChange && onChange(parseFloat(value), name, event); + } else if (precision === 0) { + onChange && onChange(parseInt(value), name, event); } else { - onChange && onChange(value, name, event); + onChange && onChange(parseFloat(parseFloat(value).toFixed(precision)), name, event); } + } else { + onChange && onChange(null, name, event); + } + } else { + onChange && onChange(value, name, event); } + } - handleInput(event) { - const {name, type, onInput} = this.props; + handleInput(event) { + const { name, type, onInput } = this.props; - const value = event.target.value; - if (type === 'number') { - if (value.trim() !== '') { - onInput && onInput(parseFloat(value), name, event); - } else { - onInput && onInput(null, name, event); - } - } else { - onInput && onInput(value, name, event); - } + const value = event.target.value; + if (type === 'number') { + if (value.trim() !== '') { + onInput && onInput(parseFloat(value), name, event); + } else { + onInput && onInput(null, name, event); + } + } else { + onInput && onInput(value, name, event); } + } } Input.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - name: PropTypes.string, - type: PropTypes.oneOf(['text', 'number', 'color', 'password', 'file']), - value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), - min: PropTypes.number, - max: PropTypes.number, - step: PropTypes.number, - precision: PropTypes.number, - disabled: PropTypes.bool, - accept: PropTypes.string, - show: PropTypes.bool, - onFocus: PropTypes.func, - onChange: PropTypes.func, - onInput: PropTypes.func + className: PropTypes.string, + style: PropTypes.object, + name: PropTypes.string, + type: PropTypes.oneOf(['text', 'number', 'color', 'password', 'file']), + value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), + min: PropTypes.number, + max: PropTypes.number, + step: PropTypes.number, + precision: PropTypes.number, + disabled: PropTypes.bool, + accept: PropTypes.string, + show: PropTypes.bool, + onFocus: PropTypes.func, + onChange: PropTypes.func, + onInput: PropTypes.func, }; Input.defaultProps = { - className: null, - style: null, - name: null, - type: 'text', - value: '', - min: null, - max: null, - step: null, - precision: 3, - disabled: false, - accept: null, - show: true, - onFocus: null, - onChange: null, - onInput: null + className: null, + style: null, + name: null, + type: 'text', + value: '', + min: null, + max: null, + step: null, + precision: undefined, + disabled: false, + accept: null, + show: true, + onFocus: null, + onChange: null, + onInput: null, }; -export default Input; \ No newline at end of file +export default Input; diff --git a/web/src/ui/form/SearchField.jsx b/web/src/ui/form/SearchField.jsx index ba57d4db3f2d3f7b52a3acddfddbaa8bd7e69b4c..5eb1fd9643af8da7dc1c7e1687f7ee0858151666 100644 --- a/web/src/ui/form/SearchField.jsx +++ b/web/src/ui/form/SearchField.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -19,186 +19,162 @@ import CheckBox from './CheckBox.jsx'; * @author tengge / https://github.com/tengge1 */ class SearchField extends React.Component { - constructor(props) { - super(props); - - this.state = { - value: props.value, - categories: [], - filterShow: false - }; - - this.handleAdd = this.handleAdd.bind(this); - this.handleChange = this.handleChange.bind(this); - this.handleInput = this.handleInput.bind(this); - this.handleReset = this.handleReset.bind(this); - this.handleShowFilter = this.handleShowFilter.bind(this); - this.handleHideFilter = this.handleHideFilter.bind(this); - this.handleCheckBoxChange = this.handleCheckBoxChange.bind(this); - this.stopPropagation = this.stopPropagation.bind(this); - } - - render() { - const {className, style, data, placeholder, showAddButton, showFilterButton} = this.props; - const {value, categories, filterShow} = this.state; - - return
- {showAddButton && } - - - {showFilterButton && } - {showFilterButton &&
-
- -1} - onChange={this.handleCheckBoxChange} - /> - + constructor(props) { + super(props); + + this.state = { + value: props.value, + categories: [], + filterShow: false, + }; + + this.handleAdd = this.handleAdd.bind(this); + this.handleChange = this.handleChange.bind(this); + this.handleInput = this.handleInput.bind(this); + this.handleReset = this.handleReset.bind(this); + this.handleShowFilter = this.handleShowFilter.bind(this); + this.handleHideFilter = this.handleHideFilter.bind(this); + this.handleCheckBoxChange = this.handleCheckBoxChange.bind(this); + this.stopPropagation = this.stopPropagation.bind(this); + } + + render() { + const { className, style, data, placeholder, showAddButton, showFilterButton } = this.props; + const { value, categories, filterShow } = this.state; + + return ( +
+ {showAddButton && } + + + {showFilterButton && } + {showFilterButton && ( +
+
+ -1} onChange={this.handleCheckBoxChange} /> + +
+ {data.map(n => { + return ( +
+ -1} onChange={this.handleCheckBoxChange} /> +
- {data.map(n => { - return
- -1} - onChange={this.handleCheckBoxChange} - /> - -
; - })} -
} -
; - } + ); + })} +
+ )} +
+ ); + } - componentDidMount() { - document.addEventListener(`click`, this.handleHideFilter); - } + componentDidMount() { + document.addEventListener(`click`, this.handleHideFilter); + } - handleAdd(event) { - const {onAdd} = this.props; - onAdd && onAdd(event); - } + handleAdd(event) { + const { onAdd } = this.props; + onAdd && onAdd(event); + } - handleChange(event) { - const {onChange} = this.props; + handleChange(event) { + const { onChange } = this.props; - event.stopPropagation(); + event.stopPropagation(); - const value = event.target.value; + const value = event.target.value; - this.setState({value}); + this.setState({ value }); - onChange && onChange(value, this.state.categories, event); - } + onChange && onChange(value, this.state.categories, event); + } - handleInput(event) { - const {onInput} = this.props; + handleInput(event) { + const { onInput } = this.props; - event.stopPropagation(); + event.stopPropagation(); - const value = event.target.value; + const value = event.target.value; - this.setState({value}); + this.setState({ value }); - onInput && onInput(value, this.state.categories, event); - } + onInput && onInput(value, this.state.categories, event); + } - handleReset(event) { - const {onInput, onChange} = this.props; - const value = ''; + handleReset(event) { + const { onInput, onChange } = this.props; + const value = ''; - this.setState({value}); + this.setState({ value }); - onInput && onInput(value, this.state.categories, event); - onChange && onChange(value, this.state.categories, event); - } + onInput && onInput(value, this.state.categories, event); + onChange && onChange(value, this.state.categories, event); + } - handleShowFilter() { - this.setState({ - filterShow: !this.state.filterShow - }); - } + handleShowFilter() { + this.setState({ + filterShow: !this.state.filterShow, + }); + } - handleHideFilter() { - this.setState({ - filterShow: false - }); - } + handleHideFilter() { + this.setState({ + filterShow: false, + }); + } - handleCheckBoxChange(checked, name, event) { - const {onInput, onChange} = this.props; + handleCheckBoxChange(checked, name, event) { + const { onInput, onChange } = this.props; - let categories = this.state.categories; - let index = categories.indexOf(name); + let categories = this.state.categories; + let index = categories.indexOf(name); - if (checked && index === -1) { - categories.push(name); - } else if (!checked && index > -1) { - categories.splice(index, 1); - } else { - console.warn(`SearchField: handleCheckBoxChange error.`); - return; - } + if (checked && index === -1) { + categories.push(name); + } else if (!checked && index > -1) { + categories.splice(index, 1); + } else { + console.warn(`SearchField: handleCheckBoxChange error.`); + return; + } - const value = this.state.value; + const value = this.state.value; - this.setState({categories}, () => { - onInput && onInput(value, categories, event); - onChange && onChange(value, categories, event); - }); - } + this.setState({ categories }, () => { + onInput && onInput(value, categories, event); + onChange && onChange(value, categories, event); + }); + } - stopPropagation(event) { - event.nativeEvent.stopImmediatePropagation(); - } + stopPropagation(event) { + event.nativeEvent.stopImmediatePropagation(); + } } SearchField.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - value: PropTypes.string, - data: PropTypes.array, - placeholder: PropTypes.string, - showAddButton: PropTypes.bool, - showFilterButton: PropTypes.bool, - onAdd: PropTypes.func, - onChange: PropTypes.func, - onInput: PropTypes.func + className: PropTypes.string, + style: PropTypes.object, + value: PropTypes.string, + data: PropTypes.array, + placeholder: PropTypes.string, + showAddButton: PropTypes.bool, + showFilterButton: PropTypes.bool, + onAdd: PropTypes.func, + onChange: PropTypes.func, + onInput: PropTypes.func, }; SearchField.defaultProps = { - className: null, - style: null, - value: '', - data: [], - placeholder: 'Enter a keyword', - showAddButton: false, - showFilterButton: false, - onAdd: null, - onChange: null, - onInput: null + className: null, + style: null, + value: '', + data: [], + placeholder: 'Enter a keyword', + showAddButton: false, + showFilterButton: false, + onAdd: null, + onChange: null, + onInput: null, }; -export default SearchField; \ No newline at end of file +export default SearchField; diff --git a/web/src/ui/index.js b/web/src/ui/index.js index 867226cc1756eb69c0509fcc694e1038d0a3940d..9a5c6c66130895d97e303d31d3772cf4a2dd61e9 100644 --- a/web/src/ui/index.js +++ b/web/src/ui/index.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -115,4 +115,4 @@ export { default as Photo } from './window/Photo.jsx'; export { default as Prompt } from './window/Prompt.jsx'; export { default as Toast } from './window/Toast.jsx'; export { default as Video } from './window/Video.jsx'; -export { default as Window } from './window/Window.jsx'; \ No newline at end of file +export { default as Window } from './window/Window.jsx'; diff --git a/web/src/ui/timeline/Timeline.jsx b/web/src/ui/timeline/Timeline.jsx index fdc7b009c8829be13cad77685b9648d2fea38950..08a0c13b83470f2f60df5a7b4eb2ee2bef6b9072 100644 --- a/web/src/ui/timeline/Timeline.jsx +++ b/web/src/ui/timeline/Timeline.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -16,402 +16,689 @@ import IconButton from '../form/IconButton.jsx'; import Toolbar from '../toolbar/Toolbar.jsx'; import ToolbarSeparator from '../toolbar/ToolbarSeparator.jsx'; import ToolbarFiller from '../toolbar/ToolbarFiller.jsx'; +import global from '../../global'; +import { Input } from '../index'; +import TimeUtils from '../../utils/TimeUtils'; +import { throttle } from '../../utils/functionalUtils'; /** * 时间轴 * @author tengge / https://github.com/tengge1 */ class Timeline extends React.Component { - constructor(props) { - super(props); - - this.duration = 120; // 持续时长(秒) - this.scale = 30; // 尺寸,1秒=30像素 - this.time = 0; // 当前时间 - this.speed = 16; // 当前速度 - - this.canvasRef = React.createRef(); - this.layersRef = React.createRef(); - this.leftRef = React.createRef(); - this.rightRef = React.createRef(); - this.sliderRef = React.createRef(); - - this.handleAddLayer = this.handleAddLayer.bind(this, props.onAddLayer); - this.handleEditLayer = this.handleEditLayer.bind(this, props.onEditLayer); - this.handleDeleteLayer = this.handleDeleteLayer.bind(this, props.onDeleteLayer); - this.commitDeleteLayer = this.commitDeleteLayer.bind(this); - - this.handleSelectedLayerChange = this.handleSelectedLayerChange.bind(this, props.onSelectedLayerChange); - - this.handleBackward = this.handleBackward.bind(this); - this.handlePlay = this.handlePlay.bind(this); - this.handlePause = this.handlePause.bind(this); - this.handleForward = this.handleForward.bind(this); - this.handleStop = this.handleStop.bind(this); - - this.handleClick = this.handleClick.bind(this, props.onClickAnimation); - this.handleDoubleClick = this.handleDoubleClick.bind(this, props.onAddAnimation); - this.handleRightScroll = this.handleRightScroll.bind(this); - - this.handleDragStart = this.handleDragStart.bind(this); - this.handleDragEnd = this.handleDragEnd.bind(this); - this.handleDragEnter = this.handleDragEnter.bind(this); - this.handleDragOver = this.handleDragOver.bind(this); - this.handleDragLeave = this.handleDragLeave.bind(this); - this.handleDrop = this.handleDrop.bind(this, props.onDropAnimation); - } - - render() { - const {className, style, animations, selectedLayer, selected} = this.props; - - return
- - - - - - - - - - - - - - - - -
-
-
- -
-
-
- {animations.map(layer => { - return
- - -
; - })} -
-
- {animations.map(layer => { - return
- {layer.animations.map(animation => { - return
{animation.name}
; - })} -
; - })} -
-
-
+ constructor(props) { + super(props); + + this.state = { + // 动画时长 + duration: 120, + // 每秒钟像素数 + scale: 30, + // 当前动画时间 + time: 0, + // 速度 + speed: 16, + // 是否处于修改结束时间状态 + isEditorTime: false, + // 最长的动画时长 + maxAnimationTime: 3600, + // 是否处于播放动画状态 + isPlay: false, + }; + + this.canvasRef = React.createRef(); + this.layersRef = React.createRef(); + this.leftRef = React.createRef(); + this.rightRef = React.createRef(); + this.sliderRef = React.createRef(); + + this.handleAddLayer = this.handleAddLayer.bind(this, props.onAddLayer); + this.handleEditLayer = this.handleEditLayer.bind(this, props.onEditLayer); + this.handleDeleteLayer = this.handleDeleteLayer.bind(this, props.onDeleteLayer); + this.commitDeleteLayer = this.commitDeleteLayer.bind(this); + + this.handleSelectedLayerChange = this.handleSelectedLayerChange.bind(this, props.onSelectedLayerChange); + + this.handleBackward = this.handleBackward.bind(this); + this.handlePlay = this.handlePlay.bind(this); + this.handlePause = this.handlePause.bind(this); + this.handleForward = this.handleForward.bind(this); + this.handleStop = this.handleStop.bind(this); + + this.handleClick = this.handleClick.bind(this, props.onClickAnimation); + this.handleDoubleClick = this.handleDoubleClick.bind(this, props.onAddAnimation); + this.handleRightScroll = this.handleRightScroll.bind(this); + + this.handleDragStart = this.handleDragStart.bind(this); + this.handleDragEnd = this.handleDragEnd.bind(this); + this.handleDragEnter = this.handleDragEnter.bind(this); + this.handleDragOver = this.handleDragOver.bind(this); + this.handleDragLeave = this.handleDragLeave.bind(this); + this.handleDrop = this.handleDrop.bind(this, props.onDropAnimation); + this.editorEndTime = this.editorEndTime.bind(this); + this.handleChange = this.handleChange.bind(this); + this.handleBlur = this.handleBlur.bind(this); + this.scrollTimeLine = this.scrollTimeLine.bind(this); + this.playEndCallback = this.playEndCallback.bind(this); + } + + render() { + const { className, style, animations, selectedLayer, selected } = this.props; + + return ( +
+ + + + + + + {this.state.isPlay ? : } + + + + + +
+ {_t('EndTime')}:{this.state.isEditorTime ? : {TimeUtils.formatSeconds(this.state.duration)}} +
+ {/* */} + + +
+
+
+
+ +
+
+
+ {animations.map(layer => { + return ( +
+ + +
+ ); + })} +
+
+ {animations.map(layer => { + return ( +
+ {layer.animations.map(animation => { + return ( +
+ {animation.name} +
+ ); + })} +
+ ); + })}
-
; + {/* 开始分界线 */} +
+ + {/* 动画进度条 */} +
+
+
+
+ ); + } + + componentDidMount() { + // 渲染时间轴 + this.renderTimeline(); + } + + /** + * 渲染时间轴 + * @param {number} durationEdit 指定的时间轴时长 + * @param {number} scaleEdit 指定的每秒钟跨度px + */ + renderTimeline(durationEdit, scaleEdit) { + // 获取默认的duration和scale + let { duration, scale } = this.state; + + // 如果接收到的了自定义的duration就使用自定义的 + if (durationEdit) { + duration = durationEdit; } - componentDidMount() { - this.renderTimeline(); + // 如果接收到的了自定义的scale就使用自定义的 + if (scaleEdit) { + scale = scaleEdit; } - renderTimeline() { - const {duration, scale} = this; - - const width = duration * scale; // 画布宽度 - const scale5 = scale / 5; // 0.2秒像素数 - const margin = 0; // 时间轴前后间距 - - const canvas = this.canvasRef.current; - - canvas.style.width = width + margin * 2 + 'px'; - canvas.width = canvas.clientWidth; - canvas.height = 32; - - const context = canvas.getContext('2d'); - - // 时间轴背景 - context.fillStyle = '#fafafa'; - context.fillRect(0, 0, canvas.width, canvas.height); - - // 时间轴刻度 - context.strokeStyle = '#555'; - context.beginPath(); - - for (let i = margin; i <= width + margin; i += scale) { // 绘制每一秒 - for (let j = 0; j < 5; j++) { // 绘制每个小格 - if (j === 0) { // 长刻度 - context.moveTo(i + scale5 * j, 22); - context.lineTo(i + scale5 * j, 30); - } else { // 短刻度 - context.moveTo(i + scale5 * j, 26); - context.lineTo(i + scale5 * j, 30); - } - } - } - - context.stroke(); - - // 时间轴文字 - context.font = '12px Arial'; - context.fillStyle = '#888'; - - for (let i = 0; i <= duration; i += 2) { // 对于每两秒 - let minute = Math.floor(i / 60); - let second = Math.floor(i % 60); - - let text = (minute > 0 ? minute + ':' : '') + ('0' + second).slice(-2); - - if (i === 0) { - context.textAlign = 'left'; - } else if (i === duration) { - context.textAlign = 'right'; - } else { - context.textAlign = 'center'; - } - - context.fillText(text, margin + i * scale, 16); + const width = duration * scale; // 画布宽度 + const scale5 = scale / 5; + const margin = 0; // 时间轴前后间距 + + // 时间轴画布实例 + const canvas = this.canvasRef.current; + + // 计算画布宽度(3600) + canvas.style.width = width + margin * 2 + 'px'; + canvas.width = canvas.clientWidth; + canvas.height = 32; + + const context = canvas.getContext('2d'); + + // 时间轴背景 + context.fillStyle = '#fafafa'; + + // 清空时间轴 + context.fillRect(0, 0, canvas.width, canvas.height); + + // 时间轴刻度 + context.strokeStyle = '#555'; + context.beginPath(); + + for (let i = margin; i <= width + margin; i += scale) { + for (let j = 0; j < 5; j++) { + // 绘制每个小格 + if (j === 0) { + // 长刻度 + context.moveTo(i + scale5 * j, 22); + context.lineTo(i + scale5 * j, 30); + } else { + // 短刻度 + context.moveTo(i + scale5 * j, 26); + context.lineTo(i + scale5 * j, 30); } + } } - handleAddLayer(onAddLayer, event) { - onAddLayer && onAddLayer(event); - } - - handleEditLayer(onEditLayer, event) { - const {selectedLayer} = this.props; - - onEditLayer && onEditLayer(selectedLayer, event); - } - - handleDeleteLayer(onDeleteLayer, event) { - const {selectedLayer} = this.props; - - onDeleteLayer && onDeleteLayer(selectedLayer, event); - } - - commitDeleteLayer() { + context.stroke(); - } - - handleSelectedLayerChange(onSelectedLayerChange, value, name, event) { - onSelectedLayerChange && onSelectedLayerChange(value ? name : null, event); - } + // 时间轴刻度字体样式设置 + context.font = '12px Arial'; + context.fillStyle = '#888'; - handleBackward(event) { + // 处理每进度的2%就绘制一次文字刻度 + for (let i = 0; i <= duration; i += duration / 60) { + // 转化秒与分钟 + let minute = Math.floor(i / 60); + let second = Math.floor(i % 60); - } + // 生成要在画布上绘制的文本。如果有经过的分钟数,则将其添加到文本中,后跟冒号(':')。然后,使用 '0' + second 将秒数转换为字符串,并使用 .slice(-2) 截取最后两个字符,确保秒数始终显示为两位数字。最终生成的文本存储在 text 变量中。 + let text = (minute > 0 ? minute + ':' : '') + ('0' + second).slice(-2); - handlePlay(event) { + // 设置文字的样式 + if (i === 0) { + context.textAlign = 'left'; + } else if (i === duration) { + context.textAlign = 'right'; + } else { + context.textAlign = 'center'; + } + context.fillText(text, margin + i * scale, 16); } + } - handlePause(event) { + /** + * 结束时间修改触发 + * @param {string} value 修改后的结束事件 + */ + handleChange(value) { + // 根据输入的时间将分钟:秒数的格式转换为对应的秒数 + let duration = TimeUtils.timeToSeconds(value); - } + // 如果修改得到的秒数为0,就阻止修改 + if (duration === 0) return; - handleForward(event) { + // 判断动画时长是否超出最大时长 + if (duration >= this.state.maxAnimationTime) { + // 设置最长动画时长为1个小时 + duration = this.state.maxAnimationTime; + global.app.toast(_t('The maximum animation duration is 1 hour'), 'warn'); } - handleStop(event) { - + // 更新步长 + let scale = 3600 / duration; + + // 更新秒数与步长 + this.setState({ + duration, + scale, + }); + + // 重新渲染时间轴 + this.renderTimeline(duration, scale); + } + + /** + * 结束时间弹框取消焦点触发 + */ + handleBlur() { + this.setState({ + isEditorTime: false, + }); + } + + /** + * 点击结束时间,将结束时间替换为文本框 + */ + editorEndTime() { + this.setState({ + isEditorTime: true, + }); + } + + /** + * 添加动画层 + * @param {function} onAddLayer 动画层回调 + * @param {object} event 事件对象 + */ + handleAddLayer(onAddLayer, event) { + onAddLayer && onAddLayer(event); + } + + /** + * 修改动画层信息 + * @param {function} onEditLayer 修改动画层回调 + * @param {object} event 事件对象 + */ + handleEditLayer(onEditLayer, event) { + const { selectedLayer } = this.props; + + onEditLayer && onEditLayer(selectedLayer, event); + } + + /** + * 删除动画层 + * @param {function} onDeleteLayer 删除动画层回调 + * @param {object} event 事件对象 + */ + handleDeleteLayer(onDeleteLayer, event) { + const { selectedLayer } = this.props; + + onDeleteLayer && onDeleteLayer(selectedLayer, event); + } + + commitDeleteLayer() {} + + /** + * 选择动画层 + * @param {function} onSelectedLayerChange 选择动画层回调 + * @param {boolean} value 是否选中东湖层 + * @param {string} name 动画层uuid + * @param {object} event 事件对象 + */ + handleSelectedLayerChange(onSelectedLayerChange, value, name, event) { + console.log(value, name, 'handleSelectedLayerChange'); + onSelectedLayerChange && onSelectedLayerChange(value ? name : null, event); + } + + /** + * 快退函数 + */ + handleBackward() { + if (this.state.time === 0) return; + this.setState({ + time: this.state.time >= 0 ? this.state.time - 1 : 0, + }); + + // 更新时间轴滚动与分割线移动 + this.scrollTimeLine(); + } + + /** + * 播放函数 + */ + handlePlay() { + if (this.state.isPlay) { + global.app.toast('动画正在播放,请勿重复操作', 'warn'); + return; } - handleClick(onClickAnimation, event) { - const type = event.target.getAttribute('data-type'); - - if (type !== 'animation') { - return; + // 滚动条移动至起点 + this.rightRef.current.scrollTo({ + left: 0, + }); + + // 设置动画播放函数为正在播放 + this.setState({ + isPlay: true, + }); + + // 开启动画 + global.app.editor.actions && + global.app.editor.actions.forEach(item => { + item.action.play(); + }); + + // animate.Timeline在每次渲染器渲染时执行 + global.app.on(`animate.Timeline`, clock => { + if (this.state.isPlay) { + // 判断动画播放时长是否超出时间轴总时长 + if (!(this.state.time >= this.state.duration)) { + // 累计时间,设置播放动画状态 + this.setState({ + time: this.state.time + clock.deltaTime, + }); + + if (global.app.editor.actions && global.app.editor.actions.length !== 0) { + global.app.editor.actions.forEach(item => { + // item.mixer.update(clock.deltaTime); + item.action.time = this.state.time; + // console.log(item.action.time, 'item.action.time'); + item.mixer.update(0); + }); + } + + // 更新时间轴滚动与分割线移动 + this.scrollTimeLine(); + } else { + // 调用播放结束回调 + this.playEndCallback(); } - - const pid = event.target.getAttribute('data-pid'); - const id = event.target.getAttribute('data-id'); - - onClickAnimation && onClickAnimation(id, pid, event); + } + }); + } + + /** + * 播放结束回调 + */ + playEndCallback() { + // 到达最终时间 + // 滚动条移动至起点 + this.rightRef.current.scrollTo({ + left: 0, + }); + + // 到达最终时间 + // 累计时间,设置播放动画状态 + this.setState({ + time: 0, + isPlay: false, + }); + + // 重置时间轴 + this.sliderRef.current.style.left = '100px'; + + // 重置所有动画 + global.app.editor.actions && + global.app.editor.actions.forEach(item => { + item.action.reset(); + }); + + // 给animate.Timeline绑定一个空函数,覆盖之前绑定的函数 + global.app.on(`animate.Timeline`, () => {}); + } + + /** + * 动画时间面板滚动节流函数 + */ + throttledScrollTo = throttle(left => { + this.rightRef.current.scrollTo({ + behavior: 'smooth', + left: left, + }); + }, 200); + + /** + * 暂停函数 + */ + handlePause() { + console.log('暂停'); + this.setState({ + isPlay: false, + }); + } + + /** + * 快进函数 + */ + handleForward() { + this.setState({ + time: this.state.time >= this.state.duration ? this.state.duration : this.state.time + 1, + }); + + // 当前播放的时间等于或者大于结束时间时,调用播放结束回调 + if (this.state.time >= this.state.duration) { + this.playEndCallback(); } - handleDoubleClick(onAddAnimation, event) { - const type = event.target.getAttribute('data-type'); - - if (type !== 'layer') { - return; - } - - const layerID = event.target.getAttribute('data-id'); - - const beginTime = event.nativeEvent.offsetX / this.scale; - const endTime = beginTime + 2; - - onAddAnimation && onAddAnimation(layerID, beginTime, endTime, event); + // 更新时间轴滚动与分割线移动 + this.scrollTimeLine(); + } + + /** + * 结束函数 + */ + handleStop() { + this.setState({ + isPlay: false, + time: 0, + }); + + // 重置时间轴 + this.sliderRef.current.style.left = '100px'; + + // 重置所有动画 + global.app.editor.actions && + global.app.editor.actions.forEach(item => { + item.action.reset(); + }); + + // 因为有200毫秒的节流,所以这里应该延迟200毫秒之后再重置会起点 + setTimeout(() => { + // 滚动条移动至起点 + this.rightRef.current.scrollTo({ + left: 0, + }); + }, 200); + } + + /** + * 滚动条滚动或者时间轴分割线移动函数 + */ + scrollTimeLine() { + if (this.state.time * this.state.scale >= 2278) { + this.sliderRef.current.style.left = 100 + this.state.time * this.state.scale - 2280 + 'px'; + } else { + this.throttledScrollTo(this.state.time * this.state.scale); } - - handleRightScroll(scroll) { - let left = this.leftRef.current; - let canvas = this.canvasRef.current; - - left.scrollTop = event.target.scrollTop; - canvas.style.left = `${100 - event.target.scrollLeft}px`; + } + + /** + * 点击动画层中的动画 + * @param {function} onClickAnimation 点击动画回调函数 + * @param {object} event 事件对象 + */ + handleClick(onClickAnimation, event) { + const type = event.target.getAttribute('data-type'); + + if (type !== 'animation') { + return; } - handleDragStart(event) { - const type = event.target.getAttribute('data-type'); + const pid = event.target.getAttribute('data-pid'); + const id = event.target.getAttribute('data-id'); - if (type !== 'animation') { - return; - } + onClickAnimation && onClickAnimation(id, pid, event); + } - const id = event.target.getAttribute('data-id'); - const pid = event.target.getAttribute('data-pid'); + /** + * 双击动画层 + * @param {function} onAddAnimation 双击动画层回调 + * @param {object} event 事件对象 + */ + handleDoubleClick(onAddAnimation, event) { + const type = event.target.getAttribute('data-type'); - event.nativeEvent.dataTransfer.setData('id', id); - event.nativeEvent.dataTransfer.setData('pid', pid); - event.nativeEvent.dataTransfer.setData('offsetX', event.nativeEvent.offsetX); + if (type !== 'layer') { + return; } - handleDragEnd(event) { - event.nativeEvent.dataTransfer.clearData(); - } + const layerID = event.target.getAttribute('data-id'); - handleDragEnter(event) { - event.preventDefault(); - } + const beginTime = event.nativeEvent.offsetX / this.state.scale; + const endTime = beginTime + 2; - handleDragOver(event) { - event.preventDefault(); - } + onAddAnimation && onAddAnimation(layerID, beginTime, endTime, event); + } - handleDragLeave(event) { - event.preventDefault(); - } - - handleDrop(onDropAnimation, event) { - const type = event.target.getAttribute('data-type'); - - if (type !== 'layer') { - return; - } - - const id = event.nativeEvent.dataTransfer.getData('id'); - const oldLayerID = event.nativeEvent.dataTransfer.getData('pid'); - const offsetX = event.nativeEvent.dataTransfer.getData('offsetX'); + /** + * 时间轴滚动条滚动函数 + * @param {object} scroll 事件对象 + */ + handleRightScroll(scroll) { + let left = this.leftRef.current; + let canvas = this.canvasRef.current; - const newLayerID = event.target.getAttribute('data-id'); + left.scrollTop = event.target.scrollTop; + canvas.style.left = `${100 - event.target.scrollLeft}px`; + } - const beginTime = (event.nativeEvent.offsetX - offsetX) / this.scale; + /** + * 拖拽动画起始函数 + * @param {object} event 事件对象 + */ + handleDragStart(event) { + const type = event.target.getAttribute('data-type'); - onDropAnimation && onDropAnimation(id, oldLayerID, newLayerID, beginTime, event); + if (type !== 'animation') { + return; } - parseTime(time) { - let minute = `0${parseInt(time / 60)}`; - let second = `0${parseInt(time % 60)}`; - return `${minute.substr(minute.length - 2, 2)}:${second.substr(second.length - 2, 2)}`; + const id = event.target.getAttribute('data-id'); + const pid = event.target.getAttribute('data-pid'); + + event.nativeEvent.dataTransfer.setData('id', id); + event.nativeEvent.dataTransfer.setData('pid', pid); + event.nativeEvent.dataTransfer.setData('offsetX', event.nativeEvent.offsetX); + } + + /** + * 拖拽动画结束函数 + * @param {object} event 事件对象 + */ + handleDragEnd(event) { + event.nativeEvent.dataTransfer.clearData(); + } + + /** + * 监听拖拽函数,阻止默认行为 + * @param {object} event 事件对象 + */ + handleDragEnter(event) { + event.preventDefault(); + } + + /** + * 监听拖拽函数,阻止默认行为 + * @param {object} event 事件对象 + */ + handleDragOver(event) { + event.preventDefault(); + } + + /** + * 监听拖拽函数,阻止默认行为 + * @param {object} event 事件对象 + */ + handleDragLeave(event) { + event.preventDefault(); + } + + /** + * 拖拽处理函数 + * @param {function} onDropAnimation 处理函数回调 + * @param {object} event 事件对象 + */ + handleDrop(onDropAnimation, event) { + const type = event.target.getAttribute('data-type'); + + if (type !== 'layer') { + return; } - parseSpeed(speed) { - return speed; - } + const id = event.nativeEvent.dataTransfer.getData('id'); + const oldLayerID = event.nativeEvent.dataTransfer.getData('pid'); + const offsetX = event.nativeEvent.dataTransfer.getData('offsetX'); + + const newLayerID = event.target.getAttribute('data-id'); + + const beginTime = (event.nativeEvent.offsetX - offsetX) / this.state.scale; + + onDropAnimation && onDropAnimation(id, oldLayerID, newLayerID, beginTime, event); + } + + /** + * 格式化秒数为分钟:秒数的格式 + * @param {number} time 时长 + * @returns 处理之后的事件 + */ + parseTime(time) { + let minute = `0${parseInt(time / 60)}`; + let second = `0${parseInt(time % 60)}`; + return `${minute.substr(minute.length - 2, 2)}:${second.substr(second.length - 2, 2)}`; + } + + /** + * 格式化播放速度 + * @param {number} speed 速度 + * @returns 速度 + */ + parseSpeed(speed) { + return speed; + } } Timeline.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - animations: PropTypes.array, - selectedLayer: PropTypes.string, - selected: PropTypes.string, - - onAddLayer: PropTypes.func, - onEditLayer: PropTypes.func, - onDeleteLayer: PropTypes.func, - onSelectedLayerChange: PropTypes.func, - - onAddAnimation: PropTypes.func, - onDropAnimation: PropTypes.func, - onClickAnimation: PropTypes.func + className: PropTypes.string, + style: PropTypes.object, + animations: PropTypes.array, + selectedLayer: PropTypes.string, + selected: PropTypes.string, + + onAddLayer: PropTypes.func, + onEditLayer: PropTypes.func, + onDeleteLayer: PropTypes.func, + onSelectedLayerChange: PropTypes.func, + + onAddAnimation: PropTypes.func, + onDropAnimation: PropTypes.func, + onClickAnimation: PropTypes.func, }; Timeline.defaultProps = { - className: null, - style: null, - animations: [], - selectedLayer: null, - selected: null, - - onAddLayer: null, - onEditLayer: null, - onDeleteLayer: null, - onSelectedLayerChange: null, - - onAddAnimation: null, - onDropAnimation: null, - onClickAnimation: null + className: null, + style: null, + animations: [], + selectedLayer: null, + selected: null, + + onAddLayer: null, + onEditLayer: null, + onDeleteLayer: null, + onSelectedLayerChange: null, + + onAddAnimation: null, + onDropAnimation: null, + onClickAnimation: null, }; -export default Timeline; \ No newline at end of file +export default Timeline; diff --git a/web/src/ui/tree/css/Tree.css b/web/src/ui/tree/css/Tree.css index 2622fed2b2ebed2dcefa8a52b2b8396b29702051..09f33388fc465f17cfb1fcb42fbf1a88185046cb 100644 --- a/web/src/ui/tree/css/Tree.css +++ b/web/src/ui/tree/css/Tree.css @@ -11,21 +11,25 @@ .Tree { list-style: none; + min-width: 100%; margin: 0; padding: 0; font: 12px 'Microsoft YaHei'; line-height: 18px; + float: left; --icon-plus: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5QkUzNTgzNzVFOTExOEU2NkEzOTNDMkUxQ0UzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGNjVEQzExQzc2NDYxMUU5OEMxN0UxQ0QyRDMwMjk0NyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGNjVEQzExQjc2NDYxMUU5OEMxN0UxQ0QyRDMwMjk0NyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+GSEyxQAAAI1QTFRFCQsNxr6u39vSDhIWExgca4ehM0FNIyw1Q1Rla4egZYCZTmN11tHG2NPJKzdBZH6WPU5cX3iPSl5wWHCF9fXxFBofDREUUmd7z8i7VWyBRlhp6unjHCQqGSAmLTpF7e3nHygw5eHaXXaMJzE5CAoM0sy/5OHZ3NjP8PDswrio/f379/f1////AAAA////NGgXgAAAAC90Uk5T/////////////////////////////////////////////////////////////wBapTj3AAAAWUlEQVR42iTBBxKCQBAEwAExIYiIBFGScIFd9/7/POqKbrhjnBf18+Jw/e9OyIhIiPiOHzML2+mM90u88IubtYN8tCnRapNKopoDHipYPcD189hF1eI2AQYAwn4J7uCjPfoAAAAASUVORK5CYII=); --icon-minus: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAMAAADXT/YiAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5QkUzNTgzNzVFOTExOEU2NkEzOTNDMkUxQ0UzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowRTM3OTM2RDc2NDcxMUU5OUYyREZCNzdBMzZGQTU0QSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowRTM3OTM2Qzc2NDcxMUU5OUYyREZCNzdBMzZGQTU0QSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+7URHdgAAAHtQTFRFDxMW9fXxJC01KzdBJC42XHWLTWFzXHSLb4yoTWF0DhIWdJSw6unjVWt/KzhBNEFOVGt/xr6uz8i7dJOvNEJO5eHab42n39vSFRof7e3nHCMqY32W0sy/5OHZ3NjPPExaaoaf8PDs2NPJwrio/f379/f1AAAA////////MX4KXQAAACl0Uk5T/////////////////////////////////////////////////////wBS9CCHAAAATUlEQVR42iTBBRKAIAAEwLO7i1ZQlP+/0EF34ar84ElfOEzPb8d6feyMw3p6icCD29tCZFpTWkvF0EhljBEjQSqG0yvh9q6NGYF7BRgAle0Iqns528wAAAAASUVORK5CYII=); --icon-node: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAPCAMAAADjyg5GAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5QkUzNTgzNzVFOTExOEU2NkEzOTNDMkUxQ0UzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo2MTQyNjRFRDc2NDYxMUU5QTdGRjlBOUM1MTgxQUEyNCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo2MTQyNjRFQzc2NDYxMUU5QTdGRjlBOUM1MTgxQUEyNCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+2JwdnQAAAUdQTFRF2tra39/f1tbWysrK49zf8vLy3d3dxsbG7OzstbCyz8/P4+Hiz8nMzc3NvL282NjYiIeI+/v78Ors4dvd4dvempaXyMjI1tPV8vDxwry/t7K0xMLD3Nzci4eJycnJ3NXY4uLi8/Pzd3d31tHTcW5vz87Pzs7O0s7QsbGx2dPW6OLl6efo9PPz8ertpqam493gu7u7x8fH4tvegn6A3dfZxcXFpqKjycPG29TX5N3gwcHB1M7R1c/R2dnZ9fT08PDwxsDDvr290NDQwcDA6eLl2tPW19fX0dDQ9u/yxb/C4eHh8Ons19HU7ufq1dXV9Ozvwbu+u7a4ysTG8/Hy29zb/Pz839jbsq2vgX1/5+bnx8HEpqGj0MrMrqiqvb293NbZmJiY8/LztrO0jIyM+ff4zs/O7u7u9O3w7ezt/f39/v7+////////roPGVgAAAG10Uk5T////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////AC221EsAAADFSURBVHjaYsgBgqwcbmEhQSCVwwDkZeZwi3j46ORkg7lZOdpG6WHiIEkgNytH1dPfWspcAqw4KycjQiUg0MFGPgWoGshNNIvmjIpxddGyy8lmABoULBnEo2npyxOZkwUymdVd2YLFO14aZFR2GoMfn6O+rkmSEz9HNgMvKwO7RrIoS3iCgZu9HAObKSMDM6exrIAeF6MVE9AoNeYQ9VilOAVeQ0WQRTkyYqnOTBzsTEDngh2ZY8vGwBWK8EKOFyNYOAcgwADsYjo583VUugAAAABJRU5ErkJggg==); --folder-open: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAANCAMAAACXZR4WAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5QkUzNTgzNzVFOTExOEU2NkEzOTNDMkUxQ0UzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGN0MzMTAyMDc2NDUxMUU5OTAzM0U1RjFGODU1RURCQSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGN0MzMTAxRjc2NDUxMUU5OTAzM0U1RjFGODU1RURCQSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+orCXfgAAAJZQTFRFzJk0zc3NoG4Iy5gz+vv8yZYx//+lxcXFmmgCnGoEnmwG2r9spHIMvYol/dVwp3UPmWcByaAhtYIdsH4Yt7e3yJUw9/CJt4Qfxpoa/9eE4rNDo3EL0dHRrHoUs4Ebwo8qonAK4sFQ8OR6uoci17hA/+uEz6ImpXMN/+R//9t1/++JxMTE//iTxpoZ//+c//+Z////////7K5NWgAAADJ0Uk5T/////////////////////////////////////////////////////////////////wANUJjvAAAAgElEQVR42kzLVxLCMAxFUTk9oYXeW+gY2dL+N4ecGA9n9HXnCZgZIE7n7IEcESXJMQQg49DgspwcphLiLkgS+x1wSp/AjHLAP+fbVgNa/2FsD9dRG377BQ4rDYz27WXjTdkG8+xk13shQcrLa1Z17sLD6Z+iqixmSgIrHSj+CjAAb/seguUxx1gAAAAASUVORK5CYII=); --folder-close: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAANCAMAAABBwMRzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5QkUzNTgzNzVFOTExOEU2NkEzOTNDMkUxQ0UzNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQTA0NkVFNDc2NDUxMUU5ODVCQ0E0NDExMUZBOTUzQiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQTA0NkVFMzc2NDUxMUU5ODVCQ0E0NDExMUZBOTUzQiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkI4NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3NjlCRTM1ODM3NUU5MTE4RTY2QTM5M0MyRTFDRTM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+eRolvgAAAIFQTFRF09PTmWcBy5gzwo8q27dxnmwGs4EbuocitYIdvYol//+6zMzMnGoEsH4YyZYxoG4Io3ELp3UPqHYQrHoUt4QfwI0opXMNq3kTx5QvyJUw1tbWrnwWwMDAmmgCxZItzJk027dS/9Rv//iT//+c/9t1/+R//++Jy8vL//////+Z////MJO0LgAAACt0Uk5T////////////////////////////////////////////////////////ACPJp9AAAABxSURBVHjaTM5XEoJAEEXRR44CYk4MmHpe73+BYpV2cf7u34Wqc2Fz0h+o896XZfRvF49fcZFt83SlCP3C5oyGD8N1hSMXOsHAu2EriPg2TAQ7vgxrQcGn4U2QcTIMKuh8cTn0+65N6uAKzItioB8BBgD8YxgHc9UPOwAAAABJRU5ErkJggg==); - overflow-y: auto; + overflow: auto; } .Tree .node { background: #fff; - box-sizing: border-box; + box-sizing: content-box; + word-break: keep-all; + white-space: nowrap; } .Tree .node.selected { diff --git a/web/src/ui/window/Confirm.jsx b/web/src/ui/window/Confirm.jsx index fde236f78ea758a1692913aa0b91e65d2c479e02..2e339d0bbfc5801e9936bd75705082d75c37cb32 100644 --- a/web/src/ui/window/Confirm.jsx +++ b/web/src/ui/window/Confirm.jsx @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -20,72 +20,67 @@ import Button from '../form/Button.jsx'; * 询问框 */ class Confirm extends React.Component { - constructor(props) { - super(props); + constructor(props) { + super(props); - this.handleOK = this.handleOK.bind(this, props.onOK); - this.handleCancel = this.handleCancel.bind(this, props.onCancel); - this.handleClose = this.handleClose.bind(this, props.onClose); - } + this.handleOK = this.handleOK.bind(this, props.onOK); + this.handleCancel = this.handleCancel.bind(this, props.onCancel); + this.handleClose = this.handleClose.bind(this, props.onClose); + } - render() { - const {className, style, title, children, hidden, mask, okText, cancelText} = this.props; + render() { + const { className, style, title, children, hidden, mask, okText, cancelText } = this.props; - return ; - } + return ( + + ); + } - handleOK(onOK, event) { - onOK && onOK(event); - } + handleOK(onOK, event) { + onOK && onOK(event); + } - handleCancel(onCancel, event) { - onCancel && onCancel(event); - } + handleCancel(onCancel, event) { + onCancel && onCancel(event); + } - handleClose(onClose, event) { - onClose && onClose(event); - } + handleClose(onClose, event) { + onClose && onClose(event); + } } Confirm.propTypes = { - className: PropTypes.string, - style: PropTypes.object, - title: PropTypes.string, - children: PropTypes.node, - hidden: PropTypes.bool, - mask: PropTypes.bool, - okText: PropTypes.string, - cancelText: PropTypes.string, - onOK: PropTypes.func, - onCancel: PropTypes.func, - onClose: PropTypes.func + className: PropTypes.string, + style: PropTypes.object, + title: PropTypes.string, + children: PropTypes.node, + hidden: PropTypes.bool, + mask: PropTypes.bool, + okText: PropTypes.string, + cancelText: PropTypes.string, + onOK: PropTypes.func, + onCancel: PropTypes.func, + onClose: PropTypes.func, }; Confirm.defaultProps = { - className: null, - style: null, - title: 'Confirm', - children: null, - hidden: false, - mask: false, - okText: 'OK', - cancelText: 'Cancel', - onOK: null, - onCancel: null, - onClose: null + className: null, + style: null, + title: 'Confirm', + children: null, + hidden: false, + mask: false, + okText: 'OK', + cancelText: 'Cancel', + onOK: null, + onCancel: null, + onClose: null, }; -export default Confirm; \ No newline at end of file +export default Confirm; diff --git a/web/src/utils/Ajax.js b/web/src/utils/Ajax.js index 2341335f98aba82d24ceedd6b4a2ddc47d791d65..ccb97ebf8bb6c350e1c225975624f971b675d6dd 100644 --- a/web/src/utils/Ajax.js +++ b/web/src/utils/Ajax.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -15,62 +15,66 @@ import MIMETypeUtils from './MIMETypeUtils'; * @param {Object} params 参数 */ function ajax(params) { - const url = params.url || ''; - const method = params.method || 'GET'; - const data = params.data || null; - const callback = params.callback || null; - - const xhr = new XMLHttpRequest(); - xhr.open(method, url, true); - xhr.onreadystatechange = function () { - if (xhr.readyState === 4) { - var data = xhr.responseText; - typeof callback === 'function' && callback(data); - } - }; - - if (data === null) { // 不需要POST数据 - xhr.send(null); - return; + const url = params.url || ''; + const method = params.method || 'GET'; + const data = params.data || null; + const callback = params.callback || null; + + const xhr = new XMLHttpRequest(); + xhr.open(method, url, true); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + var data = xhr.responseText; + typeof callback === 'function' && callback(data); + } + }; + + if (data === null) { + // 不需要POST数据 + xhr.send(null); + return; + } + + // 判断是发送表单还是上传文件 + // 由于API Controller只能序列化Content-Type为`application/x-www-form-urlencoded`的数据,所以发送表单和上传文件只能二选一。 + // 否则报错:"No MediaTypeFormatter is available to read an object of type 'EditTextureModel' from content with media type 'multipart/form-data'. + var hasFile = false, + name; + + for (name in data) { + if (data[name] instanceof Blob) { + hasFile = true; + break; } + } + + if (hasFile) { + // 上传文件 + var formData = new FormData(); - // 判断是发送表单还是上传文件 - // 由于API Controller只能序列化Content-Type为`application/x-www-form-urlencoded`的数据,所以发送表单和上传文件只能二选一。 - // 否则报错:"No MediaTypeFormatter is available to read an object of type 'EditTextureModel' from content with media type 'multipart/form-data'. - var hasFile = false, name; + for (name in data) { + if (data[name] instanceof File) { + formData.append(name, data[name]); + } else if (data[name] instanceof Blob) { + formData.append(name, data[name], `${data[name].name}.${MIMETypeUtils.getExtension(data[name].type)}`); + } + } + xhr.send(formData); + } else { + // 发送表单 + var bodies = []; for (name in data) { - if (data[name] instanceof Blob) { - hasFile = true; - break; - } + bodies.push(name + '=' + encodeURIComponent(data[name])); } - if (hasFile) { // 上传文件 - var formData = new FormData(); - - for (name in data) { - if (data[name] instanceof File) { - formData.append(name, data[name]); - } else if (data[name] instanceof Blob) { - formData.append(name, data[name], `${data[name].name}.${MIMETypeUtils.getExtension(data[name].type)}`); - } - } - - xhr.send(formData); - } else { // 发送表单 - var bodies = []; - for (name in data) { - bodies.push(name + '=' + encodeURIComponent(data[name])); - } - - var body = bodies.join('&'); - if (body.length) { - xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); - } - - xhr.send(body); + var body = bodies.join('&'); + if (body.length) { + xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); } + + xhr.send(body); + } } /** @@ -79,10 +83,10 @@ function ajax(params) { * @param {Function} callback 回调函数 */ function get(url, callback) { - ajax({ - url: url, - callback: callback - }); + ajax({ + url: url, + callback: callback, + }); } /** @@ -91,12 +95,12 @@ function get(url, callback) { * @param {Function} callback 回调函数 */ function getJson(url, callback) { - ajax({ - url: url, - callback: function (data) { - typeof callback === 'function' && callback(JSON.parse(data)); - } - }); + ajax({ + url: url, + callback: function (data) { + typeof callback === 'function' && callback(JSON.parse(data)); + }, + }); } /** @@ -106,25 +110,25 @@ function getJson(url, callback) { * @param {Function} callback 回调函数 */ function post(url, data, callback) { - const _data = typeof data === 'function' ? null : data; - const _callback = typeof data === 'function' ? data : callback; - - ajax({ - url: url, - method: 'POST', - data: _data, - callback: _callback - }); + const _data = typeof data === 'function' ? null : data; + const _callback = typeof data === 'function' ? data : callback; + + ajax({ + url: url, + method: 'POST', + data: _data, + callback: _callback, + }); } /** * Ajax */ const Ajax = { - ajax: ajax, - get: get, - getJson: getJson, - post: post + ajax: ajax, + get: get, + getJson: getJson, + post: post, }; -export default Ajax; \ No newline at end of file +export default Ajax; diff --git a/web/src/utils/LanguageLoader.js b/web/src/utils/LanguageLoader.js index 0c8132e6a75210e2d9e6b42b717f64ad1ee6c091..8bda1fbfc6bec1b4965560c0dd2d4db5ffb75715 100644 --- a/web/src/utils/LanguageLoader.js +++ b/web/src/utils/LanguageLoader.js @@ -3,63 +3,65 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ -import {Backend, i18next} from '../third_party'; +import { Backend, i18next } from '../third_party'; /** * 语言加载器 * @author tengge / https://github.com/tengge1 */ class LanguageLoader { - constructor() { - window.i18next = i18next; - window._t = i18next.t.bind(i18next); - } + constructor() { + window.i18next = i18next; + window._t = i18next.t.bind(i18next); + } - load() { - let lang = window.localStorage.getItem('lang'); + load() { + let lang = window.localStorage.getItem('lang'); - if (!lang) { - let language = window.navigator.language.toLocaleLowerCase(); + if (!lang) { + let language = window.navigator.language.toLocaleLowerCase(); - if (language === 'zh-cn') { - lang = 'zh-CN'; - } else { - lang = 'en-US'; - } - window.localStorage.setItem('lang', lang); - } + if (language === 'zh-cn') { + lang = 'zh-CN'; + } else { + lang = 'en-US'; + } + window.localStorage.setItem('lang', lang); + } - return new Promise(resolve => { - i18next.use(Backend) - .init({ - lng: lang, - debug: false, + return new Promise(resolve => { + i18next.use(Backend).init( + { + lng: lang, + debug: false, - whitelist: ['en-US', 'zh-CN', 'zh-TW', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR'], + whitelist: ['en-US', 'zh-CN', 'zh-TW', 'ja-JP', 'ko-KR', 'ru-RU', 'fr-FR'], - backend: { - // for all available options read the backend's repository readme file - loadPath: 'locales/{{lng}}.json' - }, + backend: { + // for all available options read the backend's repository readme file + loadPath: 'locales/{{lng}}.json', + }, - // allow keys to be phrases having `:`, `.` - nsSeparator: false, - keySeparator: false, + // allow keys to be phrases having `:`, `.` + nsSeparator: false, + keySeparator: false, - // do not load a fallback - fallbackLng: false - }, (err) => { - if (err) { - console.warn(err); - } - resolve(); - }); - }); - } + // do not load a fallback + fallbackLng: false, + }, + err => { + if (err) { + console.warn(err); + } + resolve(); + } + ); + }); + } } -export default LanguageLoader; \ No newline at end of file +export default LanguageLoader; diff --git a/web/src/utils/Server.js b/web/src/utils/Server.js index 6d3a0cd1f70d8df3bd3b0270ffbad1114e9d43b0..74f04f8a66390deac6b23ca1cec07aa9e681cbcb 100644 --- a/web/src/utils/Server.js +++ b/web/src/utils/Server.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -14,117 +14,122 @@ import global from '../global'; * @author tengge / https://github.com/tengge1 */ class Server { - constructor(server) { - this.origin = server; - - this.enableAuthority = false; // 是否开启权限 - this.initialized = false; // 系统是否初始化 - - this.isLogin = false; // 是否登录 - this.username = ''; // 登录用户名 - this.name = ''; // 登录姓名 - - this.roleName = ''; // 角色名称 - this.deptName = ''; // 机构名称 - this.authorities = []; // 权限列表 - - this.isAdmin = false; // 是否是管理员 - - this.enableRemoteEdit = false; - this.webSocketServerPort = 5000; - } - - load() { - return new Promise(resolve => { - fetch(`${this.origin}/api/Config/Get`).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - return; - } - this.enableAuthority = obj.Data.EnableAuthority; - this.initialized = obj.Data.Initialized; - - this.isLogin = obj.Data.IsLogin; - this.username = obj.Data.Username; - this.name = obj.Data.Name; - - this.roleName = obj.Data.RoleName; - this.deptName = obj.Data.DeptName; - this.authorities = obj.Data.OperatingAuthorities; - - this.isAdmin = this.roleName === 'Administrator'; - - this.enableRemoteEdit = obj.Data.EnableRemoteEdit; - this.webSocketServerPort = obj.Data.WebSocketServerPort; - resolve(); - }).catch(e => { - console.warn(e); - global.app.toast(_t('Server configuration acquisition failed.'), 'error'); - resolve(); - }); - }).catch(e => { - console.warn(e); - global.app.toast(_t('Server configuration acquisition failed.'), 'error'); - resolve(); + constructor(server) { + this.origin = server; + + this.enableAuthority = false; // 是否开启权限 + this.initialized = false; // 系统是否初始化 + + this.isLogin = false; // 是否登录 + this.username = ''; // 登录用户名 + this.name = ''; // 登录姓名 + + this.roleName = ''; // 角色名称 + this.deptName = ''; // 机构名称 + this.authorities = []; // 权限列表 + + this.isAdmin = false; // 是否是管理员 + + this.enableRemoteEdit = false; + this.webSocketServerPort = 5000; + } + + load() { + return new Promise(resolve => { + fetch(`${this.origin}/api/Config/Get`) + .then(response => { + response + .json() + .then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + return; + } + this.enableAuthority = obj.Data.EnableAuthority; + this.initialized = obj.Data.Initialized; + + this.isLogin = obj.Data.IsLogin; + this.username = obj.Data.Username; + this.name = obj.Data.Name; + + this.roleName = obj.Data.RoleName; + this.deptName = obj.Data.DeptName; + this.authorities = obj.Data.OperatingAuthorities; + + this.isAdmin = this.roleName === 'Administrator'; + + this.enableRemoteEdit = obj.Data.EnableRemoteEdit; + this.webSocketServerPort = obj.Data.WebSocketServerPort; + resolve(); + }) + .catch(e => { + console.warn(e); + global.app.toast(_t('Server configuration acquisition failed.'), 'error'); + resolve(); }); + }) + .catch(e => { + console.warn(e); + global.app.toast(_t('Server configuration acquisition failed.'), 'error'); + resolve(); }); - } - - login(username, password) { - return new Promise(resolve => { - fetch(`${this.origin}/api/Login/Login`, { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded' - }, - body: `Username=${username}&Password=${password}` - }).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - resolve(false); - return; - } - this.isLogin = true; - this.username = obj.Data.Username; - this.name = obj.Data.Name; - - // TODO: 登录后返回所有信息 - // this.roleName = ''; // 角色名称 - // this.deptName = ''; // 机构名称 - // this.authorities = []; // 权限列表 - // this.authorities = obj.Data.OperatingAuthorities; - - // this.isAdmin = false; // 是否是管理员 - - global.app.call('login', this); - resolve(true); - }); - }); + }); + } + + login(username, password) { + return new Promise(resolve => { + fetch(`${this.origin}/api/Login/Login`, { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + }, + body: `Username=${username}&Password=${password}`, + }).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + resolve(false); + return; + } + this.isLogin = true; + this.username = obj.Data.Username; + this.name = obj.Data.Name; + + // TODO: 登录后返回所有信息 + // this.roleName = ''; // 角色名称 + // this.deptName = ''; // 机构名称 + // this.authorities = []; // 权限列表 + // this.authorities = obj.Data.OperatingAuthorities; + + // this.isAdmin = false; // 是否是管理员 + + global.app.call('login', this); + resolve(true); }); - } - - logout() { - return new Promise(resolve => { - fetch(`${this.origin}/api/Login/Logout`, { - method: 'POST' - }).then(response => { - response.json().then(obj => { - if (obj.Code !== 200) { - global.app.toast(_t(obj.Msg), 'warn'); - resolve(false); - return; - } - this.isLogin = false; - this.username = ''; - this.name = ''; - global.app.call('logout', this); - resolve(true); - }); - }); + }); + }); + } + + logout() { + return new Promise(resolve => { + fetch(`${this.origin}/api/Login/Logout`, { + method: 'POST', + }).then(response => { + response.json().then(obj => { + if (obj.Code !== 200) { + global.app.toast(_t(obj.Msg), 'warn'); + resolve(false); + return; + } + this.isLogin = false; + this.username = ''; + this.name = ''; + global.app.call('logout', this); + resolve(true); }); - } + }); + }); + } } -export default Server; \ No newline at end of file +export default Server; diff --git a/web/src/utils/Storage.js b/web/src/utils/Storage.js index 257827087e7770896d7050c19dcd565c22dbb8f7..cdb5aac4145db5a34cb81472303353169020768a 100644 --- a/web/src/utils/Storage.js +++ b/web/src/utils/Storage.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -13,124 +13,124 @@ import global from '../global'; * 存储类 */ class Storage { - constructor() { - // 向本地存储写入默认配置,并提供快捷访问方法 - const defaultConfigs = { - debug: false, // 调试模式 - autoSave: false, // 自动保存 - - // 视图相关 - assetsPanelShow: true, - sidebarShow: true, - toolbarShow: true, - timelinePanelShow: true, - statusBarShow: true, - - // 帮助器 - showStats: true, // 性能监视器 - showGrid: true, // 网格 - showViewHelper: true, // 视角帮助器 - showCamera: false, - showPointLight: true, - showDirectionalLight: true, - showSpotLight: true, - showHemisphereLight: true, - showRectAreaLight: true, - showSkeleton: false, - - // 选中效果 - selectMode: 'whole', // whole: 选择整体;part: 选择部分。 - selectedColor: '#ff6600', // unity3d: #ff6600 - selectedThickness: 4, - - // 高亮效果 - hoverEnabled: false, // 高亮效果 - hoveredColor: '#ffff00', - - // 编辑模式 - addMode: 'center', // 添加模式:center: 添加到场景中心;click: 点击场景添加。 - controlMode: 'EditorControls' // 控制器模式:EditorControls: 编辑器控制器;FreeControls: 自由控制器。 - }; - - let configs = this._getConfigs(); - - Object.entries(defaultConfigs).forEach(n => { - if (configs[n[0]] === undefined) { - configs[n[0]] = n[1]; - } - - Object.defineProperty(this, n[0], { - get: () => { - return this.get(n[0]); - }, - set: value => { - return this.set(n[0], value); - } - }); - }); - - this._setConfigs(configs); - } - - /** - * 获取本地存储键值 - * @param {String} key 键 - * @returns {Object} 值,不存储返回undefined - */ - get(key) { - let configs = this._getConfigs(); - return configs[key]; + constructor() { + // 向本地存储写入默认配置,并提供快捷访问方法 + const defaultConfigs = { + debug: false, // 调试模式 + autoSave: false, // 自动保存 + + // 视图相关 + assetsPanelShow: true, + sidebarShow: true, + toolbarShow: true, + timelinePanelShow: true, + statusBarShow: true, + + // 帮助器 + showStats: true, // 性能监视器 + showGrid: true, // 网格 + showViewHelper: true, // 视角帮助器 + showCamera: false, + showPointLight: true, + showDirectionalLight: true, + showSpotLight: true, + showHemisphereLight: true, + showRectAreaLight: true, + showSkeleton: false, + + // 选中效果 + selectMode: 'whole', // whole: 选择整体;part: 选择部分。 + selectedColor: '#ff6600', // unity3d: #ff6600 + selectedThickness: 4, + + // 高亮效果 + hoverEnabled: false, // 高亮效果 + hoveredColor: '#ffff00', + + // 编辑模式 + addMode: 'center', // 添加模式:center: 添加到场景中心;click: 点击场景添加。 + controlMode: 'EditorControls', // 控制器模式:EditorControls: 编辑器控制器;FreeControls: 自由控制器。 + }; + + let configs = this._getConfigs(); + + Object.entries(defaultConfigs).forEach(n => { + if (configs[n[0]] === undefined) { + configs[n[0]] = n[1]; + } + + Object.defineProperty(this, n[0], { + get: () => { + return this.get(n[0]); + }, + set: value => { + return this.set(n[0], value); + }, + }); + }); + + this._setConfigs(configs); + } + + /** + * 获取本地存储键值 + * @param {String} key 键 + * @returns {Object} 值,不存储返回undefined + */ + get(key) { + let configs = this._getConfigs(); + return configs[key]; + } + + /** + * 设置本地存储 + * @param {String} key 键 + * @param {String} value 值 + */ + set(key, value) { + let configs = this._getConfigs(); + configs[key] = value; + this._setConfigs(configs); + if (global.app.call) { + global.app.call(`storageChanged`, this, key, value); + } else { + console.warn(`Storage: EventDispatcher has not been created.`); } + } - /** - * 设置本地存储 - * @param {String} key 键 - * @param {String} value 值 - */ - set(key, value) { - let configs = this._getConfigs(); - configs[key] = value; - this._setConfigs(configs); - if (global.app.call) { - global.app.call(`storageChanged`, this, key, value); - } else { - console.warn(`Storage: EventDispatcher has not been created.`); - } + setConfigs(configs) { + if (typeof configs !== 'object') { + console.warn(`Storage: configs should be an object.`); + return; } - - setConfigs(configs) { - if (typeof configs !== 'object') { - console.warn(`Storage: configs should be an object.`); - return; - } - let _configs = this._getConfigs(); - Object.keys(configs).forEach(n => { - _configs[n] = configs[n]; - }); - this._setConfigs(_configs); - } - - remove(key) { - let configs = this._getConfigs(); - delete configs[key]; - this._setConfigs(configs); + let _configs = this._getConfigs(); + Object.keys(configs).forEach(n => { + _configs[n] = configs[n]; + }); + this._setConfigs(_configs); + } + + remove(key) { + let configs = this._getConfigs(); + delete configs[key]; + this._setConfigs(configs); + } + + clear() { + window.localStorage.removeItem('configs'); + } + + _getConfigs() { + let configs = window.localStorage.getItem('configs'); + if (!configs) { + configs = '{}'; } + return JSON.parse(configs); + } - clear() { - window.localStorage.removeItem('configs'); - } - - _getConfigs() { - let configs = window.localStorage.getItem('configs'); - if (!configs) { - configs = '{}'; - } - return JSON.parse(configs); - } - - _setConfigs(configs) { - window.localStorage.setItem('configs', JSON.stringify(configs)); - } + _setConfigs(configs) { + window.localStorage.setItem('configs', JSON.stringify(configs)); + } } -export default Storage; \ No newline at end of file +export default Storage; diff --git a/web/src/utils/TimeUtils.js b/web/src/utils/TimeUtils.js index c663e15af99a6613ef51da984ee258d5ee54240b..0ca72a84a28d6f1360ccafdf488af7638dae8c92 100644 --- a/web/src/utils/TimeUtils.js +++ b/web/src/utils/TimeUtils.js @@ -3,7 +3,7 @@ * * Use of this source code is governed by a MIT-style * license that can be found in the LICENSE file. - * + * * For more information, please visit: https://github.com/tengge1/ShadowEditor * You can also visit: https://gitee.com/tengge1/ShadowEditor */ @@ -12,28 +12,64 @@ * @author tengge / https://github.com/tengge1 */ const TimeUtils = { - getDateTime: function (format = 'yyyyMMddHHmmss') { - let date = new Date(); - let year = date.getFullYear(); - let month = `00${date.getMonth() + 1}`; - let day = `00${date.getDate()}`; - let hour = `00${date.getHours()}`; - let minute = `00${date.getMinutes()}`; - let second = `00${date.getSeconds()}`; - - month = month.substr(month.length - 2, 2); - day = day.substr(day.length - 2, 2); - hour = hour.substr(hour.length - 2, 2); - minute = minute.substr(minute.length - 2, 2); - second = second.substr(second.length - 2, 2); - - return format.replace('yyyy', year) - .replace('MM', month) - .replace('dd', day) - .replace('HH', hour) - .replace('mm', minute) - .replace('ss', second); + /** + * 格式化时间 + * @param {string} format 事件格式化的格式 + * @returns 格式化之后的时间 + */ + getDateTime: function (format = 'yyyyMMddHHmmss') { + let date = new Date(); + let year = date.getFullYear(); + let month = `00${date.getMonth() + 1}`; + let day = `00${date.getDate()}`; + let hour = `00${date.getHours()}`; + let minute = `00${date.getMinutes()}`; + let second = `00${date.getSeconds()}`; + + month = month.substr(month.length - 2, 2); + day = day.substr(day.length - 2, 2); + hour = hour.substr(hour.length - 2, 2); + minute = minute.substr(minute.length - 2, 2); + second = second.substr(second.length - 2, 2); + + return format.replace('yyyy', year).replace('MM', month).replace('dd', day).replace('HH', hour).replace('mm', minute).replace('ss', second); + }, + + /** + * 将秒数转换为hour:minute:seconds的格式 + * @param {number} seconds 秒数 + * @returns hour:minute:seconds格式的字符串 + */ + formatSeconds: function (seconds) { + var hours = Math.floor(seconds / 3600); + var minutes = Math.floor((seconds % 3600) / 60); + var seconds = seconds % 60; + + var formattedTime = (minutes < 10 ? '0' : '') + minutes + ':' + (seconds < 10 ? '0' : '') + seconds; + + if (hours > 0) { + formattedTime = (hours < 10 ? '0' : '') + hours + ':' + formattedTime; + } + + return formattedTime; + }, + + /** + * 将hour:minute:seconds的格式时间转换为秒数 + * @param {string} timeString hour:minute:seconds格式的时间 + * @returns 返回此格式的总秒数 + */ + timeToSeconds: function (timeString) { + var parts = timeString.split(':'); + var seconds = parseInt(parts.pop(), 10); + var minutes = parts.length > 0 ? parseInt(parts.pop(), 10) : 0; + var hours = parts.length > 0 ? parseInt(parts.pop(), 10) : 0; + + if (isNaN(hours)) { + hours = 0; } + return hours * 3600 + minutes * 60 + seconds; + }, }; -export default TimeUtils; \ No newline at end of file +export default TimeUtils; diff --git a/web/src/utils/functionalUtils.js b/web/src/utils/functionalUtils.js new file mode 100644 index 0000000000000000000000000000000000000000..63f15912896b7e2a95475a6901778b3efbdd62ce --- /dev/null +++ b/web/src/utils/functionalUtils.js @@ -0,0 +1,34 @@ +/* + * @Author: wangzhiyu + * @Date: 2023-10-11 15:47:36 + * @LastEditors: wangzhiyu + * @LastEditTime: 2023-10-11 15:48:43 + */ + +/** + * 节流函数 + * @param {function} func + * @param {number} delay + * @returns 返回节流处理后的函数 + */ +export function throttle(func, delay) { + let timeoutId; + let lastExecTime = 0; + + return function (...args) { + const currentTime = Date.now(); + const remainingTime = delay - (currentTime - lastExecTime); + + clearTimeout(timeoutId); + + if (remainingTime <= 0) { + func.apply(this, args); + lastExecTime = currentTime; + } else { + timeoutId = setTimeout(() => { + func.apply(this, args); + lastExecTime = Date.now(); + }, remainingTime); + } + }; +} diff --git a/web/src/worker/MyWorker.js b/web/src/worker/MyWorker.js index 5cc844d92ec530ad72c9c8166e8bb74252c62723..070e40d486ccbbc1063fb8812dcedd10433109b3 100644 --- a/web/src/worker/MyWorker.js +++ b/web/src/worker/MyWorker.js @@ -1,3 +1,3 @@ self.onmessage = e => { - console.log(e); -}; \ No newline at end of file + console.log(e); +}; diff --git a/web/view.html b/web/view.html index caae053b43ce25fc06cd646d90319d74b4fa0c38..8519d2d9a4330e93d4cb1df516750713855f6782 100644 --- a/web/view.html +++ b/web/view.html @@ -1,28 +1,27 @@ - - - - Shadow Editor Viewer - - + + + No Name + + - + - +
@@ -41,59 +40,60 @@ - - - \ No newline at end of file + + diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000000000000000000000000000000000..0d3c87ca0ecdab82fa120af5acd1c68328d14daf --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4040 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@aashutoshrathi/word-wrap@^1.2.3": + version "1.2.6" + resolved "https://registry.npmmirror.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" + integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== + +"@ampproject/remapping@^2.2.0": + version "2.2.1" + resolved "https://registry.npmmirror.com/@ampproject/remapping/-/remapping-2.2.1.tgz#99e8e11851128b8702cd57c33684f1d0f260b630" + integrity sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/code-frame@^7.22.13": + version "7.22.13" + resolved "https://registry.npmmirror.com/@babel/code-frame/-/code-frame-7.22.13.tgz#e3c1c099402598483b7a8c46a721d1038803755e" + integrity sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w== + dependencies: + "@babel/highlight" "^7.22.13" + chalk "^2.4.2" + +"@babel/compat-data@^7.22.9": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.23.2.tgz#6a12ced93455827037bfb5ed8492820d60fc32cc" + integrity sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ== + +"@babel/core@^7.9.6": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/core/-/core-7.23.2.tgz#ed10df0d580fff67c5f3ee70fd22e2e4c90a9f94" + integrity sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-compilation-targets" "^7.22.15" + "@babel/helper-module-transforms" "^7.23.0" + "@babel/helpers" "^7.23.2" + "@babel/parser" "^7.23.0" + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.14.7": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz#263f059c476e29ca4972481a17b8b660cb025a34" + integrity sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg== + dependencies: + "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" + eslint-visitor-keys "^2.1.0" + semver "^6.3.1" + +"@babel/generator@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/generator/-/generator-7.23.0.tgz#df5c386e2218be505b34837acbcb874d7a983420" + integrity sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g== + dependencies: + "@babel/types" "^7.23.0" + "@jridgewell/gen-mapping" "^0.3.2" + "@jridgewell/trace-mapping" "^0.3.17" + jsesc "^2.5.1" + +"@babel/helper-annotate-as-pure@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" + integrity sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-compilation-targets@^7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz#0698fc44551a26cf29f18d4662d5bf545a6cfc52" + integrity sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw== + dependencies: + "@babel/compat-data" "^7.22.9" + "@babel/helper-validator-option" "^7.22.15" + browserslist "^4.21.9" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-environment-visitor@^7.22.20": + version "7.22.20" + resolved "https://registry.npmmirror.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" + integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== + +"@babel/helper-function-name@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" + integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== + dependencies: + "@babel/template" "^7.22.15" + "@babel/types" "^7.23.0" + +"@babel/helper-hoist-variables@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" + integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz#16146307acdc40cc00c3b2c647713076464bdbf0" + integrity sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w== + dependencies: + "@babel/types" "^7.22.15" + +"@babel/helper-module-transforms@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz#3ec246457f6c842c0aee62a01f60739906f7047e" + integrity sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-simple-access" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/helper-validator-identifier" "^7.22.20" + +"@babel/helper-plugin-utils@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" + integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== + +"@babel/helper-simple-access@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" + integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-split-export-declaration@^7.22.6": + version "7.22.6" + resolved "https://registry.npmmirror.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" + integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== + dependencies: + "@babel/types" "^7.22.5" + +"@babel/helper-string-parser@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz#533f36457a25814cf1df6488523ad547d784a99f" + integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== + +"@babel/helper-validator-identifier@^7.22.20": + version "7.22.20" + resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" + integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== + +"@babel/helper-validator-option@^7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz#694c30dfa1d09a6534cdfcafbe56789d36aba040" + integrity sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA== + +"@babel/helpers@^7.23.2": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.23.2.tgz#2832549a6e37d484286e15ba36a5330483cac767" + integrity sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ== + dependencies: + "@babel/template" "^7.22.15" + "@babel/traverse" "^7.23.2" + "@babel/types" "^7.23.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.22.13": + version "7.22.20" + resolved "https://registry.npmmirror.com/@babel/highlight/-/highlight-7.22.20.tgz#4ca92b71d80554b01427815e06f2df965b9c1f54" + integrity sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg== + dependencies: + "@babel/helper-validator-identifier" "^7.22.20" + chalk "^2.4.2" + js-tokens "^4.0.0" + +"@babel/parser@^7.22.15", "@babel/parser@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.23.0.tgz#da950e622420bf96ca0d0f2909cdddac3acd8719" + integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== + +"@babel/plugin-syntax-jsx@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.22.5.tgz#a6b68e84fb76e759fc3b93e901876ffabbe1d918" + integrity sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-display-name@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.22.5.tgz#3c4326f9fce31c7968d6cb9debcaf32d9e279a2b" + integrity sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/plugin-transform-react-jsx-development@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" + integrity sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A== + dependencies: + "@babel/plugin-transform-react-jsx" "^7.22.5" + +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.22.15.tgz#7e6266d88705d7c49f11c98db8b9464531289cd6" + integrity sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-module-imports" "^7.22.15" + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/plugin-syntax-jsx" "^7.22.5" + "@babel/types" "^7.22.15" + +"@babel/plugin-transform-react-pure-annotations@^7.22.5": + version "7.22.5" + resolved "https://registry.npmmirror.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.22.5.tgz#1f58363eef6626d6fa517b95ac66fe94685e32c0" + integrity sha512-gP4k85wx09q+brArVinTXhWiyzLl9UpmGva0+mWyKxk6JZequ05x3eUcIUE+FyttPKJFRRVtAvQaJ6YF9h1ZpA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.22.5" + +"@babel/preset-react@^7.9.4": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.22.15.tgz#9a776892b648e13cc8ca2edf5ed1264eea6b6afc" + integrity sha512-Csy1IJ2uEh/PecCBXXoZGAZBeCATTuePzCSB7dLYWS0vOEj6CNpjxIhW4duWwZodBNueH7QO14WbGn8YyeuN9w== + dependencies: + "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-validator-option" "^7.22.15" + "@babel/plugin-transform-react-display-name" "^7.22.5" + "@babel/plugin-transform-react-jsx" "^7.22.15" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.22.5" + +"@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.23.2.tgz#062b0ac103261d68a966c4c7baf2ae3e62ec3885" + integrity sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/template@^7.22.15": + version "7.22.15" + resolved "https://registry.npmmirror.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38" + integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/parser" "^7.22.15" + "@babel/types" "^7.22.15" + +"@babel/traverse@^7.23.2": + version "7.23.2" + resolved "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" + integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== + dependencies: + "@babel/code-frame" "^7.22.13" + "@babel/generator" "^7.23.0" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.22.6" + "@babel/parser" "^7.23.0" + "@babel/types" "^7.23.0" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0": + version "7.23.0" + resolved "https://registry.npmmirror.com/@babel/types/-/types-7.23.0.tgz#8c1f020c9df0e737e4e247c0619f58c68458aaeb" + integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== + dependencies: + "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + +"@electron/get@^1.0.1", "@electron/get@^1.6.0": + version "1.14.1" + resolved "https://registry.npmmirror.com/@electron/get/-/get-1.14.1.tgz#16ba75f02dffb74c23965e72d617adc721d27f40" + integrity sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw== + dependencies: + debug "^4.1.1" + env-paths "^2.2.0" + fs-extra "^8.1.0" + got "^9.6.0" + progress "^2.0.3" + semver "^6.2.0" + sumchecker "^3.0.1" + optionalDependencies: + global-agent "^3.0.0" + global-tunnel-ng "^2.7.1" + +"@eslint/eslintrc@^0.4.3": + version "0.4.3" + resolved "https://registry.npmmirror.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.5.0": + version "0.5.0" + resolved "https://registry.npmmirror.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + dependencies: + "@humanwhocodes/object-schema" "^1.2.0" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.0": + version "1.2.1" + resolved "https://registry.npmmirror.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": + version "0.3.3" + resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + +"@jridgewell/resolve-uri@^3.1.0": + version "3.1.1" + resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== + +"@jridgewell/set-array@^1.0.1": + version "1.1.2" + resolved "https://registry.npmmirror.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" + integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": + version "1.4.15" + resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.20" + resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": + version "5.1.1-v1" + resolved "https://registry.npmmirror.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" + integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + dependencies: + eslint-scope "5.1.1" + +"@rollup/plugin-commonjs@^19.0.1": + version "19.0.2" + resolved "https://registry.npmmirror.com/@rollup/plugin-commonjs/-/plugin-commonjs-19.0.2.tgz#1ccc3d63878d1bc9846f8969f09dd3b3e4ecc244" + integrity sha512-gBjarfqlC7qs0AutpRW/hrFNm+cd2/QKxhwyFa+srbg1oX7rDsEU3l+W7LAUhsAp9mPJMAkXDhLbQaVwEaE8bA== + dependencies: + "@rollup/pluginutils" "^3.1.0" + commondir "^1.0.1" + estree-walker "^2.0.1" + glob "^7.1.6" + is-reference "^1.2.1" + magic-string "^0.25.7" + resolve "^1.17.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.npmmirror.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@sindresorhus/is@^0.14.0": + version "0.14.0" + resolved "https://registry.npmmirror.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== + +"@szmarczak/http-timer@^1.1.2": + version "1.1.2" + resolved "https://registry.npmmirror.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== + dependencies: + defer-to-connect "^1.0.1" + +"@trysound/sax@0.2.0": + version "0.2.0" + resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" + integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== + +"@tweenjs/tween.js@^18.5.0": + version "18.6.4" + resolved "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-18.6.4.tgz#40a3d0a93647124872dec8e0fd1bd5926695b6ca" + integrity sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ== + +"@types/estree@*": + version "1.0.4" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.4.tgz#d9748f5742171b26218516cf1828b8eafaf8a9fa" + integrity sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.npmmirror.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.npmmirror.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.npmmirror.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/node@*": + version "20.8.10" + resolved "https://registry.npmmirror.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== + dependencies: + undici-types "~5.26.4" + +"@types/node@^12.0.12": + version "12.20.55" + resolved "https://registry.npmmirror.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.npmmirror.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@xmldom/xmldom@^0.8.8": + version "0.8.10" + resolved "https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz#a1337ca426aa61cef9fe15b5b28e340a72f6fa99" + integrity sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw== + +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.npmmirror.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmmirror.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmmirror.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.npmmirror.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.npmmirror.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.npmmirror.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmmirror.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-buffer-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead" + integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A== + dependencies: + call-bind "^1.0.2" + is-array-buffer "^3.0.1" + +array-includes@^3.1.6: + version "3.1.7" + resolved "https://registry.npmmirror.com/array-includes/-/array-includes-3.1.7.tgz#8cd2e01b26f7a3086cbc87271593fe921c62abda" + integrity sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-string "^1.0.7" + +array.prototype.flat@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz#1476217df8cff17d72ee8f3ba06738db5b387d18" + integrity sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.flatmap@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz#c9a7c6831db8e719d6ce639190146c24bbd3e527" + integrity sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + +array.prototype.tosorted@^1.1.1: + version "1.1.2" + resolved "https://registry.npmmirror.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz#620eff7442503d66c799d95503f82b475745cefd" + integrity sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + es-shim-unscopables "^1.0.0" + get-intrinsic "^1.2.1" + +arraybuffer.prototype.slice@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz#98bd561953e3e74bb34938e77647179dfe6e9f12" + integrity sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + is-array-buffer "^3.0.2" + is-shared-array-buffer "^1.0.2" + +asar@^2.0.1: + version "2.1.0" + resolved "https://registry.npmmirror.com/asar/-/asar-2.1.0.tgz#97c6a570408c4e38a18d4a3fb748a621b5a7844e" + integrity sha512-d2Ovma+bfqNpvBzY/KU8oPY67ZworixTpkjSx0PCXnQi67c2cXmssaTxpFDUM0ttopXoGx/KRxNg/GDThYbXQA== + dependencies: + chromium-pickle-js "^0.2.0" + commander "^2.20.0" + cuint "^0.2.2" + glob "^7.1.3" + minimatch "^3.0.4" + mkdirp "^0.5.1" + tmp-promise "^1.0.5" + optionalDependencies: + "@types/glob" "^7.1.1" + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +asynciterator.prototype@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz#8c5df0514936cdd133604dfcc9d3fb93f09b2b62" + integrity sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg== + dependencies: + has-symbols "^1.0.3" + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +author-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/author-regex/-/author-regex-1.0.0.tgz#d08885be6b9bbf9439fe087c76287245f0a81450" + integrity sha512-KbWgR8wOYRAPekEmMXrYYdc7BRyhn2Ftk7KWfMUnQ43hFdojWEFRxhhRUm3/OFEdPa1r0KAvTTg9YQK57xTe0g== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz#92f95616501069d07d10edb2fc37d3e1c65123b7" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bluebird@^3.1.1, bluebird@^3.5.0: + version "3.7.2" + resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +boolean@^3.0.1: + version "3.2.0" + resolved "https://registry.npmmirror.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" + integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browserslist@^4.0.0, browserslist@^4.21.4, browserslist@^4.21.9: + version "4.22.1" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.1.tgz#ba91958d1a59b87dab6fed8dfbcb3da5e2e9c619" + integrity sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ== + dependencies: + caniuse-lite "^1.0.30001541" + electron-to-chromium "^1.4.535" + node-releases "^2.0.13" + update-browserslist-db "^1.0.13" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmmirror.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.1.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6" + integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw== + +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmmirror.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" + integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== + dependencies: + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^3.0.0" + lowercase-keys "^2.0.0" + normalize-url "^4.1.0" + responselike "^1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2, call-bind@^1.0.4, call-bind@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== + dependencies: + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmmirror.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-api@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/caniuse-api/-/caniuse-api-3.0.0.tgz#5e4d90e2274961d46291997df599e3ed008ee4c0" + integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw== + dependencies: + browserslist "^4.0.0" + caniuse-lite "^1.0.0" + lodash.memoize "^4.1.2" + lodash.uniq "^4.5.0" + +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001541: + version "1.0.30001559" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001559.tgz#95a982440d3d314c471db68d02664fb7536c5a30" + integrity sha512-cPiMKZgqgkg5LY3/ntGeLFUpi6tzddBNS58A4tnTgQw1zON7u2sZMU7SzOeVH4tj20++9ggL+V6FDOFMTaFFYA== + +chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^3.4.2, chokidar@^3.5.0: + version "3.5.3" + resolved "https://registry.npmmirror.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chromium-pickle-js@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/chromium-pickle-js/-/chromium-pickle-js-0.2.0.tgz#04a106672c18b085ab774d983dfa3ea138f22205" + integrity sha512-1R5Fho+jBq0DDydt+/vHWj5KJNJCKdARKOCwZUen84I5BreWoLqRLANH1U87eJy1tiASPtMnGqJJq0ZsLoRPOw== + +classnames@^2.2.6: + version "2.3.2" + resolved "https://registry.npmmirror.com/classnames/-/classnames-2.3.2.tgz#351d813bf0137fcc6a76a16b88208d2560a0d924" + integrity sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw== + +clone-response@^1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/clone-response/-/clone-response-1.0.3.tgz#af2032aa47816399cf5f0a1d0db902f517abb8c3" + integrity sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA== + dependencies: + mimic-response "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colord@^2.9.1: + version "2.9.3" + resolved "https://registry.npmmirror.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" + integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw== + +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^7.2.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compare-version@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080" + integrity sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.npmmirror.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-with-sourcemaps@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +config-chain@^1.1.11: + version "1.1.13" + resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.npmmirror.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cross-zip@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cross-zip/-/cross-zip-3.1.0.tgz#2b7d33f2a893bf83e232ccbabf4c6c706f6b313c" + integrity sha512-aX02l0SD3KE27pMl69gkxDdDM5D3u9Ic4Je+2b1B2fP0dWnlWWY6ns2Vk5DEgCXJRhL3GasSpicNQRNbDkq0+w== + dependencies: + rimraf "^3.0.0" + +css-declaration-sorter@^6.3.1: + version "6.4.1" + resolved "https://registry.npmmirror.com/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz#28beac7c20bad7f1775be3a7129d7eae409a3a71" + integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g== + +css-select@^4.1.3: + version "4.3.0" + resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-tree@^1.1.2, css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssnano-preset-default@^5.2.14: + version "5.2.14" + resolved "https://registry.npmmirror.com/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz#309def4f7b7e16d71ab2438052093330d9ab45d8" + integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A== + dependencies: + css-declaration-sorter "^6.3.1" + cssnano-utils "^3.1.0" + postcss-calc "^8.2.3" + postcss-colormin "^5.3.1" + postcss-convert-values "^5.1.3" + postcss-discard-comments "^5.1.2" + postcss-discard-duplicates "^5.1.0" + postcss-discard-empty "^5.1.1" + postcss-discard-overridden "^5.1.0" + postcss-merge-longhand "^5.1.7" + postcss-merge-rules "^5.1.4" + postcss-minify-font-values "^5.1.0" + postcss-minify-gradients "^5.1.1" + postcss-minify-params "^5.1.4" + postcss-minify-selectors "^5.2.1" + postcss-normalize-charset "^5.1.0" + postcss-normalize-display-values "^5.1.0" + postcss-normalize-positions "^5.1.1" + postcss-normalize-repeat-style "^5.1.1" + postcss-normalize-string "^5.1.0" + postcss-normalize-timing-functions "^5.1.0" + postcss-normalize-unicode "^5.1.1" + postcss-normalize-url "^5.1.0" + postcss-normalize-whitespace "^5.1.1" + postcss-ordered-values "^5.1.3" + postcss-reduce-initial "^5.1.2" + postcss-reduce-transforms "^5.1.0" + postcss-svgo "^5.1.0" + postcss-unique-selectors "^5.1.1" + +cssnano-utils@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/cssnano-utils/-/cssnano-utils-3.1.0.tgz#95684d08c91511edfc70d2636338ca37ef3a6861" + integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA== + +cssnano@^5.0.1: + version "5.1.15" + resolved "https://registry.npmmirror.com/cssnano/-/cssnano-5.1.15.tgz#ded66b5480d5127fcb44dac12ea5a983755136bf" + integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw== + dependencies: + cssnano-preset-default "^5.2.14" + lilconfig "^2.0.3" + yaml "^1.10.2" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +cuint@^0.2.2: + version "0.2.2" + resolved "https://registry.npmmirror.com/cuint/-/cuint-0.2.2.tgz#408086d409550c2631155619e9fa7bcadc3b991b" + integrity sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw== + +d3-dispatch@^1.0.6: + version "1.0.6" + resolved "https://registry.npmmirror.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58" + integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA== + +debug@^2.2.0, debug@^2.6.8, debug@^2.6.9: + version "2.6.9" + resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.npmmirror.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.3.4" + resolved "https://registry.npmmirror.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmmirror.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA== + dependencies: + mimic-response "^1.0.0" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmmirror.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmmirror.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== + +define-data-property@^1.0.1, define-data-property@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" + integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== + dependencies: + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +define-properties@^1.1.3, define-properties@^1.1.4, define-properties@^1.2.0, define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.npmmirror.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +duplexer3@^0.1.4: + version "0.1.5" + resolved "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz#0b5e4d7bad5de8901ea4440624c8e1d20099217e" + integrity sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA== + +electron-notarize@^0.2.0: + version "0.2.1" + resolved "https://registry.npmmirror.com/electron-notarize/-/electron-notarize-0.2.1.tgz#759e8006decae19134f82996ed910db26d9192cc" + integrity sha512-oZ6/NhKeXmEKNROiFmRNfytqu3cxqC95sjooG7kBXQVEUSQkZnbiAhxVh5jXngL881G197pbwpeVPJyM7Ikmxw== + dependencies: + debug "^4.1.1" + fs-extra "^8.1.0" + +electron-osx-sign@^0.4.11: + version "0.4.17" + resolved "https://registry.npmmirror.com/electron-osx-sign/-/electron-osx-sign-0.4.17.tgz#2727ca0c79e1e4e5ccd3861fb3da9c3c913b006c" + integrity sha512-wUJPmZJQCs1zgdlQgeIpRcvrf7M5/COQaOV68Va1J/SgmWx5KL2otgg+fAae7luw6qz9R8Gvu/Qpe9tAOu/3xQ== + dependencies: + bluebird "^3.5.0" + compare-version "^0.1.2" + debug "^2.6.8" + isbinaryfile "^3.0.2" + minimist "^1.2.0" + plist "^3.0.1" + +electron-packager@^14.2.1: + version "14.2.1" + resolved "https://registry.npmmirror.com/electron-packager/-/electron-packager-14.2.1.tgz#e1884eee608455e71e96342717e0527d25a329df" + integrity sha512-g6y3BVrAOz/iavKD+VMFbehrQcwCWuA3CZvVbmmbQuCfegGA1ytwWn0BNIDDrEdbuz31Fti7mnNHhb5L+3Wq9A== + dependencies: + "@electron/get" "^1.6.0" + asar "^2.0.1" + cross-zip "^3.0.0" + debug "^4.0.1" + electron-notarize "^0.2.0" + electron-osx-sign "^0.4.11" + fs-extra "^8.1.0" + galactus "^0.2.1" + get-package-info "^1.0.0" + junk "^3.1.0" + parse-author "^2.0.0" + plist "^3.0.0" + rcedit "^2.0.0" + resolve "^1.1.6" + sanitize-filename "^1.6.0" + semver "^6.0.0" + yargs-parser "^16.0.0" + +electron-to-chromium@^1.4.535: + version "1.4.575" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.575.tgz#7c0b87eb2c6214a993699792abd704de41255c39" + integrity sha512-kY2BGyvgAHiX899oF6xLXSIf99bAvvdPhDoJwG77nxCSyWYuRH6e9a9a3gpXBvCs6lj4dQZJkfnW2hdKWHEISg== + +electron@^9.4.0: + version "9.4.4" + resolved "https://registry.npmmirror.com/electron/-/electron-9.4.4.tgz#2a74a0655a74bd326216672c5ae6ed3a44451446" + integrity sha512-dcPlTrMWQu5xuSm6sYV42KK/BRIqh3erM8v/WtZqaDmG7pkCeJpvw26Dgbqhdt78XmqqGiN96giEe6A3S9vpAQ== + dependencies: + "@electron/get" "^1.0.1" + "@types/node" "^12.0.12" + extract-zip "^1.0.3" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +encodeurl@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.5: + version "2.4.1" + resolved "https://registry.npmmirror.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.npmmirror.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmmirror.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.22.1: + version "1.22.3" + resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.22.3.tgz#48e79f5573198de6dee3589195727f4f74bc4f32" + integrity sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA== + dependencies: + array-buffer-byte-length "^1.0.0" + arraybuffer.prototype.slice "^1.0.2" + available-typed-arrays "^1.0.5" + call-bind "^1.0.5" + es-set-tostringtag "^2.0.1" + es-to-primitive "^1.2.1" + function.prototype.name "^1.1.6" + get-intrinsic "^1.2.2" + get-symbol-description "^1.0.0" + globalthis "^1.0.3" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + internal-slot "^1.0.5" + is-array-buffer "^3.0.2" + is-callable "^1.2.7" + is-negative-zero "^2.0.2" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + is-string "^1.0.7" + is-typed-array "^1.1.12" + is-weakref "^1.0.2" + object-inspect "^1.13.1" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + safe-array-concat "^1.0.1" + safe-regex-test "^1.0.0" + string.prototype.trim "^1.2.8" + string.prototype.trimend "^1.0.7" + string.prototype.trimstart "^1.0.7" + typed-array-buffer "^1.0.0" + typed-array-byte-length "^1.0.0" + typed-array-byte-offset "^1.0.0" + typed-array-length "^1.0.4" + unbox-primitive "^1.0.2" + which-typed-array "^1.1.13" + +es-iterator-helpers@^1.0.12: + version "1.0.15" + resolved "https://registry.npmmirror.com/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz#bd81d275ac766431d19305923707c3efd9f1ae40" + integrity sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g== + dependencies: + asynciterator.prototype "^1.0.0" + call-bind "^1.0.2" + define-properties "^1.2.1" + es-abstract "^1.22.1" + es-set-tostringtag "^2.0.1" + function-bind "^1.1.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + has-property-descriptors "^1.0.0" + has-proto "^1.0.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + iterator.prototype "^1.1.2" + safe-array-concat "^1.0.1" + +es-set-tostringtag@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz#11f7cc9f63376930a5f20be4915834f4bc74f9c9" + integrity sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q== + dependencies: + get-intrinsic "^1.2.2" + has-tostringtag "^1.0.0" + hasown "^2.0.0" + +es-shim-unscopables@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz#1f6942e71ecc7835ed1c8a83006d8771a63a3763" + integrity sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw== + dependencies: + hasown "^2.0.0" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-error@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-config-defaults@^9.0.0: + version "9.0.0" + resolved "https://registry.npmmirror.com/eslint-config-defaults/-/eslint-config-defaults-9.0.0.tgz#a090adc13b2935e3f43b3cd048a92701654e5ad5" + integrity sha512-+7YOx3HLdwG50YWpFNI/CLriyqcScVyFB7AWmR0T+6LyWhZCQrlHGYiQbniv04zACAv0W9hjIrhd8yFIMov6PQ== + +eslint-plugin-react@^7.19.0: + version "7.33.2" + resolved "https://registry.npmmirror.com/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz#69ee09443ffc583927eafe86ffebb470ee737608" + integrity sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw== + dependencies: + array-includes "^3.1.6" + array.prototype.flatmap "^1.3.1" + array.prototype.tosorted "^1.1.1" + doctrine "^2.1.0" + es-iterator-helpers "^1.0.12" + estraverse "^5.3.0" + jsx-ast-utils "^2.4.1 || ^3.0.0" + minimatch "^3.1.2" + object.entries "^1.1.6" + object.fromentries "^2.0.6" + object.hasown "^1.1.2" + object.values "^1.1.6" + prop-types "^15.8.1" + resolve "^2.0.0-next.4" + semver "^6.3.1" + string.prototype.matchall "^4.0.8" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.31.0: + version "7.32.0" + resolved "https://registry.npmmirror.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.3" + "@humanwhocodes/config-array" "^0.5.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmmirror.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmmirror.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.5.0" + resolved "https://registry.npmmirror.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" + integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0: + version "5.3.0" + resolved "https://registry.npmmirror.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmmirror.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eventemitter3@^4.0.4: + version "4.0.7" + resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +extract-banner@0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/extract-banner/-/extract-banner-0.1.2.tgz#61d1ed5cce3acdadb35f4323910b420364241a7f" + integrity sha512-hDIp0Av6KuUUWSGH/jwo1Nj8U70wBlCA8mv9WshUC5xl29dCRol6no+yyWAEX/OMi2Au5+NGP833TemuaEh02g== + dependencies: + strip-bom-string "^0.1.2" + strip-use-strict "^0.1.0" + +extract-zip@^1.0.3: + version "1.7.0" + resolved "https://registry.npmmirror.com/extract-zip/-/extract-zip-1.7.0.tgz#556cc3ae9df7f452c493a0cfb51cc30277940927" + integrity sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA== + dependencies: + concat-stream "^1.6.2" + debug "^2.6.9" + mkdirp "^0.5.4" + yauzl "^2.10.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmmirror.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmmirror.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== + dependencies: + locate-path "^2.0.0" + +flat-cache@^3.0.4: + version "3.1.1" + resolved "https://registry.npmmirror.com/flat-cache/-/flat-cache-3.1.1.tgz#a02a15fdec25a8f844ff7cc658f03dd99eb4609b" + integrity sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.9: + version "3.2.9" + resolved "https://registry.npmmirror.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf" + integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ== + +flora-colossus@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/flora-colossus/-/flora-colossus-1.0.1.tgz#aba198425a8185341e64f9d2a6a96fd9a3cbdb93" + integrity sha512-d+9na7t9FyH8gBJoNDSi28mE4NgQVGGvxQ4aHtFRetjyh5SXjuus+V5EZaxFmFdXVemSOrx0lsgEl/ZMjnOWJA== + dependencies: + debug "^4.1.1" + fs-extra "^7.0.0" + +for-each@^0.3.3: + version "0.3.3" + resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" + integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== + dependencies: + is-callable "^1.1.3" + +fs-extra@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" + integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.0.1: + version "9.1.0" + resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.1, function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.5, function.prototype.name@^1.1.6: + version "1.1.6" + resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.6.tgz#cdf315b7d90ee77a4c6ee216c3c3362da07533fd" + integrity sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + functions-have-names "^1.2.3" + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +galactus@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/galactus/-/galactus-0.2.1.tgz#cbed2d20a40c1f5679a35908e2b9415733e78db9" + integrity sha512-mDc8EQJKtxjp9PMYS3PbpjjbX3oXhBTxoGaPahw620XZBIHJ4+nvw5KN/tRtmmSDR9dypstGNvqQ3C29QGoGHQ== + dependencies: + debug "^3.1.0" + flora-colossus "^1.0.0" + fs-extra "^4.0.0" + +generic-names@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/generic-names/-/generic-names-4.0.0.tgz#0bd8a2fd23fe8ea16cbd0a279acd69c06933d9a3" + integrity sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A== + dependencies: + loader-utils "^3.2.0" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== + dependencies: + function-bind "^1.1.2" + has-proto "^1.0.1" + has-symbols "^1.0.3" + hasown "^2.0.0" + +get-package-info@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/get-package-info/-/get-package-info-1.0.0.tgz#6432796563e28113cd9474dbbd00052985a4999c" + integrity sha512-SCbprXGAPdIhKAXiG+Mk6yeoFH61JlYunqdFQFHDtLjJlDjFf6x07dsS8acO+xWt52jpdVo49AlVDnUVK1sDNw== + dependencies: + bluebird "^3.1.1" + debug "^2.2.0" + lodash.get "^4.0.0" + read-pkg-up "^2.0.0" + +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmmirror.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.3, glob@^7.1.6: + version "7.2.3" + resolved "https://registry.npmmirror.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +global-agent@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/global-agent/-/global-agent-3.0.0.tgz#ae7cd31bd3583b93c5a16437a1afe27cc33a1ab6" + integrity sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q== + dependencies: + boolean "^3.0.1" + es6-error "^4.1.1" + matcher "^3.0.0" + roarr "^2.15.3" + semver "^7.3.2" + serialize-error "^7.0.1" + +global-tunnel-ng@^2.7.1: + version "2.7.1" + resolved "https://registry.npmmirror.com/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz#d03b5102dfde3a69914f5ee7d86761ca35d57d8f" + integrity sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg== + dependencies: + encodeurl "^1.0.2" + lodash "^4.17.10" + npm-conf "^1.1.3" + tunnel "^0.0.6" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmmirror.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^13.6.0, globals@^13.9.0: + version "13.23.0" + resolved "https://registry.npmmirror.com/globals/-/globals-13.23.0.tgz#ef31673c926a0976e1f61dab4dca57e0c0a8af02" + integrity sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.1, globalthis@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" + integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + dependencies: + define-properties "^1.1.3" + +gopd@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" + integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== + dependencies: + get-intrinsic "^1.1.3" + +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmmirror.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== + dependencies: + "@sindresorhus/is" "^0.14.0" + "@szmarczak/http-timer" "^1.1.2" + cacheable-request "^6.0.0" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^4.1.0" + lowercase-keys "^1.0.1" + mimic-response "^1.0.1" + p-cancelable "^1.0.0" + to-readable-stream "^1.0.0" + url-parse-lax "^3.0.0" + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +has-bigints@^1.0.1, has-bigints@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" + integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== + dependencies: + get-intrinsic "^1.2.2" + +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.2, has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.npmmirror.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +http-cache-semantics@^4.0.0: + version "4.1.1" + resolved "https://registry.npmmirror.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" + integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== + +i18next-xhr-backend@^3.2.2: + version "3.2.2" + resolved "https://registry.npmmirror.com/i18next-xhr-backend/-/i18next-xhr-backend-3.2.2.tgz#769124441461b085291f539d91864e3691199178" + integrity sha512-OtRf2Vo3IqAxsttQbpjYnmMML12IMB5e0fc5B7qKJFLScitYaXa1OhMX0n0X/3vrfFlpHL9Ro/H+ps4Ej2j7QQ== + dependencies: + "@babel/runtime" "^7.5.5" + +i18next@^17.3.1: + version "17.3.1" + resolved "https://registry.npmmirror.com/i18next/-/i18next-17.3.1.tgz#5fe75e054aae39a6f38f1a79f7ab49184c6dc7a1" + integrity sha512-4nY+yaENaoZKmpbiDXPzucVHCN3hN9Z9Zk7LyQXVOKVIpnYOJ3L/yxHJlBPtJDq3PGgjFwA0QBFm/26Z0iDT5A== + dependencies: + "@babel/runtime" "^7.3.1" + +iconv-lite@^0.6.0: + version "0.6.3" + resolved "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-replace-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg== + +icss-utils@^5.0.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmmirror.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== + dependencies: + import-from "^3.0.0" + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmmirror.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmmirror.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +internal-slot@^1.0.5: + version "1.0.6" + resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.0.6.tgz#37e756098c4911c5e912b8edbf71ed3aa116f930" + integrity sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg== + dependencies: + get-intrinsic "^1.2.2" + hasown "^2.0.0" + side-channel "^1.0.4" + +is-array-buffer@^3.0.1, is-array-buffer@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe" + integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.0" + is-typed-array "^1.1.10" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmmirror.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" + integrity sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA== + dependencies: + has-tostringtag "^1.0.0" + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0: + version "2.13.1" + resolved "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + dependencies: + hasown "^2.0.0" + +is-date-object@^1.0.1, is-date-object@^1.0.5: + version "1.0.5" + resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz#c8749b65f17c133313e661b1289b95ad3dbd62e6" + integrity sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw== + dependencies: + call-bind "^1.0.2" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.10: + version "1.0.10" + resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-map@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g== + +is-negative-zero@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.0.7.tgz#59d50ada4c45251784e9904f5246c742f07a42fc" + integrity sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-reference@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-set@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== + +is-shared-array-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" + integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== + dependencies: + call-bind "^1.0.2" + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.10, is-typed-array@^1.1.12, is-typed-array@^1.1.9: + version "1.1.12" + resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.12.tgz#d0bab5686ef4a76f7a73097b95470ab199c57d4a" + integrity sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg== + dependencies: + which-typed-array "^1.1.11" + +is-weakmap@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.1.tgz#5008b59bdc43b698201d18f62b37b2ca243e8cf2" + integrity sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA== + +is-weakref@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" + integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== + dependencies: + call-bind "^1.0.2" + +is-weakset@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.2.tgz#4569d67a747a1ce5a994dfd4ef6dcea76e7c0a1d" + integrity sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^3.0.2: + version "3.0.3" + resolved "https://registry.npmmirror.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +iterator.prototype@^1.1.2: + version "1.1.2" + resolved "https://registry.npmmirror.com/iterator.prototype/-/iterator.prototype-1.1.2.tgz#5e29c8924f01916cb9335f1ff80619dcff22b0c0" + integrity sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w== + dependencies: + define-properties "^1.2.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + reflect.getprototypeof "^1.0.4" + set-function-name "^2.0.1" + +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmmirror.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.npmmirror.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.npmmirror.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +"jsx-ast-utils@^2.4.1 || ^3.0.0": + version "3.3.5" + resolved "https://registry.npmmirror.com/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz#4766bd05a8e2a11af222becd19e15575e52a853a" + integrity sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ== + dependencies: + array-includes "^3.1.6" + array.prototype.flat "^1.3.1" + object.assign "^4.1.4" + object.values "^1.1.6" + +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== + +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmmirror.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== + dependencies: + json-buffer "3.0.0" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.npmmirror.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmmirror.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +lilconfig@^2.0.3, lilconfig@^2.0.5: + version "2.1.0" + resolved "https://registry.npmmirror.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" + integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== + +livereload-js@^3.3.1: + version "3.4.1" + resolved "https://registry.npmmirror.com/livereload-js/-/livereload-js-3.4.1.tgz#ba90fbc708ed1b9a024bb89c4ee12c96ea03d66f" + integrity sha512-5MP0uUeVCec89ZbNOT/i97Mc+q3SxXmiUGhRFOTmhrGPn//uWVQdCvcLJDy64MSBR5MidFdOR7B9viumoavy6g== + +livereload@^0.9.1: + version "0.9.3" + resolved "https://registry.npmmirror.com/livereload/-/livereload-0.9.3.tgz#a714816375ed52471408bede8b49b2ee6a0c55b1" + integrity sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw== + dependencies: + chokidar "^3.5.0" + livereload-js "^3.3.1" + opts ">= 1.2.0" + ws "^7.4.3" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha512-3p6ZOGNbiX4CdvEd1VcE6yi78UrGNpjHO33noGwHCnT/o2fyllJDepsm8+mFFv/DvtwFHht5HIHSyOy5a+ChVQ== + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw== + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +loader-utils@^3.2.0: + version "3.2.1" + resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.npmmirror.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.get@^4.0.0: + version "4.4.2" + resolved "https://registry.npmmirror.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.memoize@^4.1.2: + version "4.1.2" + resolved "https://registry.npmmirror.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmmirror.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmmirror.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash.uniq@^4.5.0: + version "4.5.0" + resolved "https://registry.npmmirror.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" + integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ== + +lodash@^4.17.10: + version "4.17.21" + resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@0.26.7: + version "0.26.7" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.25.2, magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +matcher@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/matcher/-/matcher-3.0.0.tgz#bd9060f4c5b70aa8041ccc6f80368760994f30ca" + integrity sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng== + dependencies: + escape-string-regexp "^4.0.0" + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.npmmirror.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +mime@>=2.4.6: + version "3.0.0" + resolved "https://registry.npmmirror.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1, mkdirp@^0.5.4: + version "0.5.6" + resolved "https://registry.npmmirror.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmmirror.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-releases@^2.0.13: + version "2.0.13" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.13.tgz#d5ed1627c23e3461e819b02e57b75e4899b1c81d" + integrity sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ== + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1: + version "6.1.0" + resolved "https://registry.npmmirror.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-conf@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-run-all@^4.1.5: + version "4.1.5" + resolved "https://registry.npmmirror.com/npm-run-all/-/npm-run-all-4.1.5.tgz#04476202a15ee0e2e214080861bff12a51d98fba" + integrity sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ== + dependencies: + ansi-styles "^3.2.1" + chalk "^2.4.1" + cross-spawn "^6.0.5" + memorystream "^0.3.1" + minimatch "^3.0.4" + pidtree "^0.3.0" + read-pkg "^3.0.0" + shell-quote "^1.6.1" + string.prototype.padend "^3.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.1, object-inspect@^1.9.0: + version "1.13.1" + resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4: + version "4.1.4" + resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f" + integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.4" + has-symbols "^1.0.3" + object-keys "^1.1.1" + +object.entries@^1.1.6: + version "1.1.7" + resolved "https://registry.npmmirror.com/object.entries/-/object.entries-1.1.7.tgz#2b47760e2a2e3a752f39dd874655c61a7f03c131" + integrity sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.fromentries@^2.0.6: + version "2.0.7" + resolved "https://registry.npmmirror.com/object.fromentries/-/object.fromentries-2.0.7.tgz#71e95f441e9a0ea6baf682ecaaf37fa2a8d7e616" + integrity sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.hasown@^1.1.2: + version "1.1.3" + resolved "https://registry.npmmirror.com/object.hasown/-/object.hasown-1.1.3.tgz#6a5f2897bb4d3668b8e79364f98ccf971bda55ae" + integrity sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA== + dependencies: + define-properties "^1.2.0" + es-abstract "^1.22.1" + +object.values@^1.1.6: + version "1.1.7" + resolved "https://registry.npmmirror.com/object.values/-/object.values-1.1.7.tgz#617ed13272e7e1071b43973aa1655d9291b8442a" + integrity sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmmirror.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +opener@1: + version "1.5.2" + resolved "https://registry.npmmirror.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" + integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== + +optionator@^0.9.1: + version "0.9.3" + resolved "https://registry.npmmirror.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" + integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg== + dependencies: + "@aashutoshrathi/word-wrap" "^1.2.3" + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + +"opts@>= 1.2.0": + version "2.0.2" + resolved "https://registry.npmmirror.com/opts/-/opts-2.0.2.tgz#a17e189fbbfee171da559edd8a42423bc5993ce1" + integrity sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg== + +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmmirror.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow== + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.npmmirror.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== + dependencies: + p-limit "^1.1.0" + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-timeout@^3.2.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== + dependencies: + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-author@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/parse-author/-/parse-author-2.0.0.tgz#d3460bf1ddd0dfaeed42da754242e65fb684a81f" + integrity sha512-yx5DfvkN8JsHL2xk2Os9oTia467qnvRgey4ahSm2X8epehBLx/gWLcy5KI+Y36ful5DzGbCS6RazqZGgy1gHNw== + dependencies: + author-regex "^1.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ== + dependencies: + error-ex "^1.2.0" + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw== + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmmirror.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha512-dUnb5dXUf+kzhC/W/F4e5/SkluXIFf5VUHolW1Eg1irn1hGWjPGdsRcvYJ1nD6lhk8Ir7VM0bHJKsYTx8Jx9OQ== + dependencies: + pify "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.3.1" + resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pidtree@^0.3.0: + version "0.3.1" + resolved "https://registry.npmmirror.com/pidtree/-/pidtree-0.3.1.tgz#ef09ac2cc0533df1f3250ccf2c4d366b0d12114a" + integrity sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg== + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + +plist@^3.0.0, plist@^3.0.1: + version "3.1.0" + resolved "https://registry.npmmirror.com/plist/-/plist-3.1.0.tgz#797a516a93e62f5bde55e0b9cc9c967f860893c9" + integrity sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ== + dependencies: + "@xmldom/xmldom" "^0.8.8" + base64-js "^1.5.1" + xmlbuilder "^15.1.1" + +postcss-calc@^8.2.3: + version "8.2.4" + resolved "https://registry.npmmirror.com/postcss-calc/-/postcss-calc-8.2.4.tgz#77b9c29bfcbe8a07ff6693dc87050828889739a5" + integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q== + dependencies: + postcss-selector-parser "^6.0.9" + postcss-value-parser "^4.2.0" + +postcss-colormin@^5.3.1: + version "5.3.1" + resolved "https://registry.npmmirror.com/postcss-colormin/-/postcss-colormin-5.3.1.tgz#86c27c26ed6ba00d96c79e08f3ffb418d1d1988f" + integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + colord "^2.9.1" + postcss-value-parser "^4.2.0" + +postcss-convert-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmmirror.com/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz#04998bb9ba6b65aa31035d669a6af342c5f9d393" + integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-discard-comments@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz#8df5e81d2925af2780075840c1526f0660e53696" + integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ== + +postcss-discard-duplicates@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz#9eb4fe8456706a4eebd6d3b7b777d07bad03e848" + integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw== + +postcss-discard-empty@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz#e57762343ff7f503fe53fca553d18d7f0c369c6c" + integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A== + +postcss-discard-overridden@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz#7e8c5b53325747e9d90131bb88635282fb4a276e" + integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw== + +postcss-load-config@^3.0.0: + version "3.1.4" + resolved "https://registry.npmmirror.com/postcss-load-config/-/postcss-load-config-3.1.4.tgz#1ab2571faf84bb078877e1d07905eabe9ebda855" + integrity sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg== + dependencies: + lilconfig "^2.0.5" + yaml "^1.10.2" + +postcss-merge-longhand@^5.1.7: + version "5.1.7" + resolved "https://registry.npmmirror.com/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz#24a1bdf402d9ef0e70f568f39bdc0344d568fb16" + integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ== + dependencies: + postcss-value-parser "^4.2.0" + stylehacks "^5.1.1" + +postcss-merge-rules@^5.1.4: + version "5.1.4" + resolved "https://registry.npmmirror.com/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz#2f26fa5cacb75b1402e213789f6766ae5e40313c" + integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + cssnano-utils "^3.1.0" + postcss-selector-parser "^6.0.5" + +postcss-minify-font-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz#f1df0014a726083d260d3bd85d7385fb89d1f01b" + integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-minify-gradients@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz#f1fe1b4f498134a5068240c2f25d46fcd236ba2c" + integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw== + dependencies: + colord "^2.9.1" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-params@^5.1.4: + version "5.1.4" + resolved "https://registry.npmmirror.com/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz#c06a6c787128b3208b38c9364cfc40c8aa5d7352" + integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw== + dependencies: + browserslist "^4.21.4" + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-minify-selectors@^5.2.1: + version "5.2.1" + resolved "https://registry.npmmirror.com/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz#d4e7e6b46147b8117ea9325a915a801d5fe656c6" + integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-modules-extract-imports@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" + integrity sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw== + +postcss-modules-local-by-default@^4.0.0: + version "4.0.3" + resolved "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz#b08eb4f083050708998ba2c6061b50c2870ca524" + integrity sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^6.0.2" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz#9ef3151456d3bbfa120ca44898dfca6f2fa01f06" + integrity sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-modules@^4.0.0: + version "4.3.1" + resolved "https://registry.npmmirror.com/postcss-modules/-/postcss-modules-4.3.1.tgz#517c06c09eab07d133ae0effca2c510abba18048" + integrity sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q== + dependencies: + generic-names "^4.0.0" + icss-replace-symbols "^1.1.0" + lodash.camelcase "^4.3.0" + postcss-modules-extract-imports "^3.0.0" + postcss-modules-local-by-default "^4.0.0" + postcss-modules-scope "^3.0.0" + postcss-modules-values "^4.0.0" + string-hash "^1.1.1" + +postcss-normalize-charset@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz#9302de0b29094b52c259e9b2cf8dc0879879f0ed" + integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg== + +postcss-normalize-display-values@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz#72abbae58081960e9edd7200fcf21ab8325c3da8" + integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-positions@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz#ef97279d894087b59325b45c47f1e863daefbb92" + integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-repeat-style@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz#e9eb96805204f4766df66fd09ed2e13545420fb2" + integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-string@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz#411961169e07308c82c1f8c55f3e8a337757e228" + integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-timing-functions@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz#d5614410f8f0b2388e9f240aa6011ba6f52dafbb" + integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-normalize-unicode@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz#f67297fca3fea7f17e0d2caa40769afc487aa030" + integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA== + dependencies: + browserslist "^4.21.4" + postcss-value-parser "^4.2.0" + +postcss-normalize-url@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz#ed9d88ca82e21abef99f743457d3729a042adcdc" + integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew== + dependencies: + normalize-url "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-normalize-whitespace@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz#08a1a0d1ffa17a7cc6efe1e6c9da969cc4493cfa" + integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-ordered-values@^5.1.3: + version "5.1.3" + resolved "https://registry.npmmirror.com/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz#b6fd2bd10f937b23d86bc829c69e7732ce76ea38" + integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ== + dependencies: + cssnano-utils "^3.1.0" + postcss-value-parser "^4.2.0" + +postcss-reduce-initial@^5.1.2: + version "5.1.2" + resolved "https://registry.npmmirror.com/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz#798cd77b3e033eae7105c18c9d371d989e1382d6" + integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg== + dependencies: + browserslist "^4.21.4" + caniuse-api "^3.0.0" + +postcss-reduce-transforms@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz#333b70e7758b802f3dd0ddfe98bb1ccfef96b6e9" + integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9: + version "6.0.13" + resolved "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" + integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-svgo@^5.1.0: + version "5.1.0" + resolved "https://registry.npmmirror.com/postcss-svgo/-/postcss-svgo-5.1.0.tgz#0a317400ced789f233a28826e77523f15857d80d" + integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA== + dependencies: + postcss-value-parser "^4.2.0" + svgo "^2.7.0" + +postcss-unique-selectors@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz#a9f273d1eacd09e9aa6088f4b0507b18b1b541b6" + integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA== + dependencies: + postcss-selector-parser "^6.0.5" + +postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@^8.3.6: + version "8.4.31" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d" + integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + integrity sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +progress@^2.0.0, progress@^2.0.3: + version "2.0.3" + resolved "https://registry.npmmirror.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise.series@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/promise.series/-/promise.series-0.2.0.tgz#2cc7ebe959fc3a6619c04ab4dbdc9e452d864bbd" + integrity sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ== + +prop-types@^15.7.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.npmmirror.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA== + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@^2.1.0: + version "2.3.1" + resolved "https://registry.npmmirror.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +rcedit@^2.0.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/rcedit/-/rcedit-2.3.0.tgz#951685a079db98a4cc8c21ebab75e374d5a0b108" + integrity sha512-h1gNEl9Oai1oijwyJ1WYqYSXTStHnOcv1KYljg/8WM4NAg3H1KBK3azIaKkQ1WQl+d7PoJpcBMscPfLXVKgCLQ== + +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.npmmirror.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha512-1orxQfbWGUiTn9XsPlChs6rLie/AV9jwZTGmu2NZw/CUDJQchXJFYE0Fq5j7+n558T1JhDWLdhyd1Zj+wLY//w== + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha512-eFIBOPW7FGjzBuk3hdXEuNSiTZS/xEMlH49HxMyzb0hyPfu4EhVjT2DH32K1hSSmVq4sebAWnZuuY5auISUTGA== + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA== + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmmirror.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect.getprototypeof@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz#aaccbf41aca3821b87bb71d9dcbc7ad0ba50a3f3" + integrity sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + globalthis "^1.0.3" + which-builtin-type "^1.1.3" + +regenerator-runtime@^0.14.0: + version "0.14.0" + resolved "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" + integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== + +regexp.prototype.flags@^1.5.0, regexp.prototype.flags@^1.5.1: + version "1.5.1" + resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz#90ce989138db209f81492edd734183ce99f9677e" + integrity sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + set-function-name "^2.0.0" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmmirror.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.19.0: + version "1.22.8" + resolved "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" + integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^2.0.0-next.4: + version "2.0.0-next.5" + resolved "https://registry.npmmirror.com/resolve/-/resolve-2.0.0-next.5.tgz#6b0ec3107e671e52b68cd068ef327173b90dc03c" + integrity sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA== + dependencies: + is-core-module "^2.13.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + integrity sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ== + dependencies: + lowercase-keys "^1.0.0" + +rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmmirror.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +roarr@^2.15.3: + version "2.15.4" + resolved "https://registry.npmmirror.com/roarr/-/roarr-2.15.4.tgz#f5fe795b7b838ccfe35dc608e0282b9eba2e7afd" + integrity sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A== + dependencies: + boolean "^3.0.1" + detect-node "^2.0.4" + globalthis "^1.0.1" + json-stringify-safe "^5.0.1" + semver-compare "^1.0.0" + sprintf-js "^1.1.2" + +rollup-plugin-babel@^4.4.0: + version "4.4.0" + resolved "https://registry.npmmirror.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-bundle-worker@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/rollup-plugin-bundle-worker/-/rollup-plugin-bundle-worker-0.1.0.tgz#f9aaaae8fb302a3f8c8952fd8e622617abaf659d" + integrity sha512-68jYj5Z2YHgKZskjc2WBRbt8HrwHrYquxAYcw9S/o3n/zh5ZbugNVO+Idz9l21OFGAoqA+8tLH2wKXxKInZhKQ== + +rollup-plugin-livereload@^2.0.5: + version "2.0.5" + resolved "https://registry.npmmirror.com/rollup-plugin-livereload/-/rollup-plugin-livereload-2.0.5.tgz#4747fa292a2cceb0c972c573d71b3d66b4252b37" + integrity sha512-vqQZ/UQowTW7VoiKEM5ouNW90wE5/GZLfdWuR0ELxyKOJUIaj+uismPZZaICU4DnWPVjnpCDDxEqwU7pcKY/PA== + dependencies: + livereload "^0.9.1" + +rollup-plugin-node-resolve@^4.2.4: + version "4.2.4" + resolved "https://registry.npmmirror.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-4.2.4.tgz#7d370f8d6fd3031006a0032c38262dd9be3c6250" + integrity sha512-t/64I6l7fZ9BxqD3XlX4ZeO6+5RLKyfpwE2CiPNUKa+GocPlQhf/C208ou8y3AwtNsc6bjSk/8/6y/YAyxCIvw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.10.0" + +rollup-plugin-postcss@^4.0.0: + version "4.0.2" + resolved "https://registry.npmmirror.com/rollup-plugin-postcss/-/rollup-plugin-postcss-4.0.2.tgz#15e9462f39475059b368ce0e49c800fa4b1f7050" + integrity sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w== + dependencies: + chalk "^4.1.0" + concat-with-sourcemaps "^1.1.0" + cssnano "^5.0.1" + import-cwd "^3.0.0" + p-queue "^6.6.2" + pify "^5.0.0" + postcss-load-config "^3.0.0" + postcss-modules "^4.0.0" + promise.series "^0.2.0" + resolve "^1.19.0" + rollup-pluginutils "^2.8.2" + safe-identifier "^0.4.2" + style-inject "^0.3.0" + +rollup-plugin-replace@^2.2.0: + version "2.2.0" + resolved "https://registry.npmmirror.com/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz#f41ae5372e11e7a217cde349c8b5d5fd115e70e3" + integrity sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA== + dependencies: + magic-string "^0.25.2" + rollup-pluginutils "^2.6.0" + +rollup-plugin-serve@^2.0.2: + version "2.0.2" + resolved "https://registry.npmmirror.com/rollup-plugin-serve/-/rollup-plugin-serve-2.0.2.tgz#f49958b0725c9bd2fef976d23025a361e20bdee2" + integrity sha512-ALqyTbPhlf7FZ5RzlbDvMYvbKuCHWginJkTo6dMsbgji/a78IbsXox+pC83HENdkTRz8OXrTj+aShp3+3ratpg== + dependencies: + mime ">=2.4.6" + opener "1" + +rollup-plugin-strip-banner@^2.0.0: + version "2.1.0" + resolved "https://registry.npmmirror.com/rollup-plugin-strip-banner/-/rollup-plugin-strip-banner-2.1.0.tgz#51d49aa78d8590dbedd34746ace116b88538be83" + integrity sha512-lA391GTfTz4yEFlUnV1xFowYPxfVSFWSXZ17gc/qXFCfGhTRuRuhio8oEZfi4HbMxY/BC6Rh2JZHSGQCH7ehKA== + dependencies: + extract-banner "0.1.2" + magic-string "0.26.7" + rollup-pluginutils "2.8.2" + +rollup-pluginutils@2.8.2, rollup-pluginutils@^2.6.0, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.npmmirror.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^2.53.2: + version "2.79.1" + resolved "https://registry.npmmirror.com/rollup/-/rollup-2.79.1.tgz#bedee8faef7c9f93a2647ac0108748f497f081c7" + integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw== + optionalDependencies: + fsevents "~2.3.2" + +safe-array-concat@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.0.1.tgz#91686a63ce3adbea14d61b14c99572a8ff84754c" + integrity sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + isarray "^2.0.5" + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-identifier@^0.4.2: + version "0.4.2" + resolved "https://registry.npmmirror.com/safe-identifier/-/safe-identifier-0.4.2.tgz#cf6bfca31c2897c588092d1750d30ef501d59fcb" + integrity sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w== + +safe-regex-test@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.0.0.tgz#793b874d524eb3640d1873aad03596db2d4f2295" + integrity sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + is-regex "^1.1.4" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sanitize-filename@^1.6.0: + version "1.6.3" + resolved "https://registry.npmmirror.com/sanitize-filename/-/sanitize-filename-1.6.3.tgz#755ebd752045931977e30b2025d340d7c9090378" + integrity sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg== + dependencies: + truncate-utf8-bytes "^1.0.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow== + +"semver@2 || 3 || 4 || 5", semver@^5.5.0: + version "5.7.2" + resolved "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.2.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.npmmirror.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.2.1, semver@^7.3.2: + version "7.5.4" + resolved "https://registry.npmmirror.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" + integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== + dependencies: + lru-cache "^6.0.0" + +serialize-error@^7.0.1: + version "7.0.1" + resolved "https://registry.npmmirror.com/serialize-error/-/serialize-error-7.0.1.tgz#f1360b0447f61ffb483ec4157c737fab7d778e18" + integrity sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw== + dependencies: + type-fest "^0.13.1" + +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + +set-function-name@^2.0.0, set-function-name@^2.0.1: + version "2.0.1" + resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" + integrity sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA== + dependencies: + define-data-property "^1.0.1" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.0" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@^1.6.1: + version "1.8.1" + resolved "https://registry.npmmirror.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680" + integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.npmmirror.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmmirror.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmmirror.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.16" + resolved "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz#a14f64e0954f6e25cc6587bd4f392522db0d998f" + integrity sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw== + +sprintf-js@^1.1.2: + version "1.1.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmmirror.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +string-hash@^1.1.1: + version "1.1.3" + resolved "https://registry.npmmirror.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A== + +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string.prototype.matchall@^4.0.8: + version "4.0.10" + resolved "https://registry.npmmirror.com/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz#a1553eb532221d4180c51581d6072cd65d1ee100" + integrity sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + get-intrinsic "^1.2.1" + has-symbols "^1.0.3" + internal-slot "^1.0.5" + regexp.prototype.flags "^1.5.0" + set-function-name "^2.0.0" + side-channel "^1.0.4" + +string.prototype.padend@^3.0.0: + version "3.1.5" + resolved "https://registry.npmmirror.com/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz#311ef3a4e3c557dd999cdf88fbdde223f2ac0f95" + integrity sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trim@^1.2.8: + version "1.2.8" + resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz#f9ac6f8af4bd55ddfa8895e6aea92a96395393bd" + integrity sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimend@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz#1bb3afc5008661d73e2dc015cd4853732d6c471e" + integrity sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string.prototype.trimstart@^1.0.7: + version "1.0.7" + resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz#d4cdb44b83a4737ffbac2d406e405d43d0184298" + integrity sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg== + dependencies: + call-bind "^1.0.2" + define-properties "^1.2.0" + es-abstract "^1.22.1" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom-string@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/strip-bom-string/-/strip-bom-string-0.1.2.tgz#9c6e720a313ba9836589518405ccfb88a5f41b9c" + integrity sha512-3DgNqQFTfOwWgxn3cXsa6h/WRgFa7dVb6/7YqwfJlBpLSSQbiU1VhaBNRKmtLI59CHjc9awLp9yGJREu7AnaMQ== + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-use-strict@^0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/strip-use-strict/-/strip-use-strict-0.1.0.tgz#e30e8fd2206834e41e5eb3f3dc1ea7a4e4258f5f" + integrity sha512-E7gSkFVwkg3jge5tUrBM6u9S1lfcao2qPjliJqDw2+nWLmtyS5amnSJqDaMk6kCYvBqU/eIG25pN78uMtaj/Ig== + +style-inject@^0.3.0: + version "0.3.0" + resolved "https://registry.npmmirror.com/style-inject/-/style-inject-0.3.0.tgz#d21c477affec91811cc82355832a700d22bf8dd3" + integrity sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw== + +stylehacks@^5.1.1: + version "5.1.1" + resolved "https://registry.npmmirror.com/stylehacks/-/stylehacks-5.1.1.tgz#7934a34eb59d7152149fa69d6e9e56f2fc34bcc9" + integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw== + dependencies: + browserslist "^4.21.4" + postcss-selector-parser "^6.0.4" + +sumchecker@^3.0.1: + version "3.0.1" + resolved "https://registry.npmmirror.com/sumchecker/-/sumchecker-3.0.1.tgz#6377e996795abb0b6d348e9b3e1dfb24345a8e42" + integrity sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg== + dependencies: + debug "^4.1.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +svgo@^2.7.0: + version "2.8.0" + resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" + integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== + dependencies: + "@trysound/sax" "0.2.0" + commander "^7.2.0" + css-select "^4.1.3" + css-tree "^1.1.3" + csso "^4.2.0" + picocolors "^1.0.0" + stable "^0.1.8" + +table@^6.0.9: + version "6.8.1" + resolved "https://registry.npmmirror.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmmirror.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +tmp-promise@^1.0.5: + version "1.1.0" + resolved "https://registry.npmmirror.com/tmp-promise/-/tmp-promise-1.1.0.tgz#bb924d239029157b9bc1d506a6aa341f8b13e64c" + integrity sha512-8+Ah9aB1IRXCnIOxXZ0uFozV1nMU5xiu7hhFVUSxZ3bYu+psD4TzagCzVbexUCgNNGJnsmNDQlS4nG3mTyoNkw== + dependencies: + bluebird "^3.5.0" + tmp "0.1.0" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.npmmirror.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== + +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +truncate-utf8-bytes@^1.0.0: + version "1.0.2" + resolved "https://registry.npmmirror.com/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz#405923909592d56f78a5818434b0b78489ca5f2b" + integrity sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ== + dependencies: + utf8-byte-length "^1.0.1" + +tunnel@^0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/tunnel/-/tunnel-0.0.6.tgz#72f1314b34a5b192db012324df2cc587ca47f92c" + integrity sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmmirror.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-fest@^0.13.1: + version "0.13.1" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" + integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmmirror.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typed-array-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz#18de3e7ed7974b0a729d3feecb94338d1472cd60" + integrity sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.2.1" + is-typed-array "^1.1.10" + +typed-array-byte-length@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz#d787a24a995711611fb2b87a4052799517b230d0" + integrity sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-byte-offset@^1.0.0: + version "1.0.0" + resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz#cbbe89b51fdef9cd6aaf07ad4707340abbc4ea0b" + integrity sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + for-each "^0.3.3" + has-proto "^1.0.1" + is-typed-array "^1.1.10" + +typed-array-length@^1.0.4: + version "1.0.4" + resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.4.tgz#89d83785e5c4098bec72e08b319651f0eac9c1bb" + integrity sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng== + dependencies: + call-bind "^1.0.2" + for-each "^0.3.3" + is-typed-array "^1.1.9" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.npmmirror.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +unbox-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" + integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== + dependencies: + call-bind "^1.0.2" + has-bigints "^1.0.2" + has-symbols "^1.0.3" + which-boxed-primitive "^1.0.2" + +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.npmmirror.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +update-browserslist-db@^1.0.13: + version "1.0.13" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" + integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmmirror.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmmirror.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ== + dependencies: + prepend-http "^2.0.0" + +utf8-byte-length@^1.0.1: + version "1.0.4" + resolved "https://registry.npmmirror.com/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz#f45f150c4c66eee968186505ab93fcbb8ad6bf61" + integrity sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA== + +util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +v8-compile-cache@^2.0.3: + version "2.4.0" + resolved "https://registry.npmmirror.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" + integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmmirror.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-builtin-type@^1.1.3: + version "1.1.3" + resolved "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.1.3.tgz#b1b8443707cc58b6e9bf98d32110ff0c2cbd029b" + integrity sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw== + dependencies: + function.prototype.name "^1.1.5" + has-tostringtag "^1.0.0" + is-async-function "^2.0.0" + is-date-object "^1.0.5" + is-finalizationregistry "^1.0.2" + is-generator-function "^1.0.10" + is-regex "^1.1.4" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.9" + +which-collection@^1.0.1: + version "1.0.1" + resolved "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.1.tgz#70eab71ebbbd2aefaf32f917082fc62cdcb70906" + integrity sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A== + dependencies: + is-map "^2.0.1" + is-set "^2.0.1" + is-weakmap "^2.0.1" + is-weakset "^2.0.1" + +which-typed-array@^1.1.11, which-typed-array@^1.1.13, which-typed-array@^1.1.9: + version "1.1.13" + resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.13.tgz#870cd5be06ddb616f504e7b039c4c24898184d36" + integrity sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.4" + for-each "^0.3.3" + gopd "^1.0.1" + has-tostringtag "^1.0.0" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmmirror.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@^7.4.3: + version "7.5.9" + resolved "https://registry.npmmirror.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" + integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== + +xmlbuilder@^15.1.1: + version "15.1.1" + resolved "https://registry.npmmirror.com/xmlbuilder/-/xmlbuilder-15.1.1.tgz#9dcdce49eea66d8d10b42cae94a79c3c8d0c2ec5" + integrity sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.npmmirror.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.2: + version "1.10.2" + resolved "https://registry.npmmirror.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^16.0.0: + version "16.1.0" + resolved "https://registry.npmmirror.com/yargs-parser/-/yargs-parser-16.1.0.tgz#73747d53ae187e7b8dbe333f95714c76ea00ecf1" + integrity sha512-H/V41UNZQPkUMIT5h5hiwg4QKIY1RPvoBV4XcjUbRM8Bk2oKqqyZ0DIEbTFZB0XjbtSPG8SAa/0DxCQmiRgzKg== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.npmmirror.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0"