yichael 5 месяцев назад
Родитель
Сommit
ef47e26f9d

+ 82 - 1
START.BAT

@@ -1 +1,82 @@
-npm run electron:dev
+@echo off
+chcp 65001 >nul
+setlocal enabledelayedexpansion
+
+echo ========================================
+echo Starting Auto Android Controller
+echo ========================================
+echo.
+
+REM Get the directory where this batch file is located
+cd /d "%~dp0"
+
+REM Check if npm is available
+echo [1/3] Checking npm...
+where npm >nul 2>&1
+if errorlevel 1 (
+    echo Error: npm is not found in PATH
+    echo.
+    echo Please ensure Node.js is installed and npm is in your system PATH.
+    echo You can download Node.js from: https://nodejs.org/
+    echo.
+    echo If Node.js is installed but npm is not in PATH, you may need to:
+    echo 1. Restart your computer after installing Node.js
+    echo 2. Or add Node.js to your system PATH manually
+    echo.
+    pause
+    exit /b 1
+)
+echo npm is available
+echo.
+
+REM Check if node_modules exists and key dependencies are installed
+echo [2/3] Checking dependencies...
+if not exist "node_modules" (
+    echo Warning: node_modules not found. Installing dependencies...
+    call npm install
+    if errorlevel 1 (
+        echo Error: Failed to install dependencies
+        pause
+        exit /b 1
+    )
+) else (
+    echo Dependencies directory found
+    REM Check if key dependencies are properly installed
+    set "NEED_REINSTALL=0"
+    if not exist "node_modules\concurrently\dist\bin\concurrently.js" (
+        echo Warning: concurrently module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if not exist "node_modules\rxjs\dist\cjs\index.js" (
+        echo Warning: rxjs module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if not exist "node_modules\electron\package.json" (
+        echo Warning: electron module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if "!NEED_REINSTALL!"=="1" (
+        echo Warning: Key dependencies appear incomplete. Reinstalling...
+        call npm install
+        if errorlevel 1 (
+            echo Error: Failed to reinstall dependencies
+            pause
+            exit /b 1
+        )
+        echo Dependencies reinstalled successfully
+    ) else (
+        echo Dependencies verified
+    )
+)
+echo.
+
+REM Start the application
+echo [3/3] Starting application...
+echo.
+call npm run electron:dev
+if errorlevel 1 (
+    echo.
+    echo Error: Failed to start application
+    pause
+    exit /b 1
+)

+ 1 - 1
config.js

@@ -1,3 +1,3 @@
 module.exports = {
-	"adb-path": "C:\\Users\\GIGABYTE\\AppData\\Local\\Android\\Sdk\\platform-tools"
+	"adb-path": "E:\\SDK\\platform-tools"
 };

+ 38 - 48
node_modules/.package-lock.json

@@ -35,6 +35,7 @@
       "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
       "dev": true,
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^7.27.1",
         "@babel/generator": "^7.28.5",
@@ -318,12 +319,12 @@
         "global-agent": "^3.0.0"
       }
     },
-    "node_modules/@esbuild/win32-x64": {
+    "node_modules/@esbuild/win32-arm64": {
       "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
-      "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+      "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
+      "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
       "cpu": [
-        "x64"
+        "arm64"
       ],
       "dev": true,
       "license": "MIT",
@@ -409,26 +410,12 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@rollup/rollup-win32-x64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz",
-      "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==",
+    "node_modules/@rollup/rollup-win32-arm64-msvc": {
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz",
+      "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==",
       "cpu": [
-        "x64"
-      ],
-      "dev": true,
-      "license": "MIT",
-      "optional": true,
-      "os": [
-        "win32"
-      ]
-    },
-    "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz",
-      "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==",
-      "cpu": [
-        "x64"
+        "arm64"
       ],
       "dev": true,
       "license": "MIT",
@@ -705,6 +692,7 @@
         }
       ],
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -2041,6 +2029,7 @@
       "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
       "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "loose-envify": "^1.1.0"
       },
@@ -2137,9 +2126,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz",
-      "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz",
+      "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -2153,28 +2142,28 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.53.5",
-        "@rollup/rollup-android-arm64": "4.53.5",
-        "@rollup/rollup-darwin-arm64": "4.53.5",
-        "@rollup/rollup-darwin-x64": "4.53.5",
-        "@rollup/rollup-freebsd-arm64": "4.53.5",
-        "@rollup/rollup-freebsd-x64": "4.53.5",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.53.5",
-        "@rollup/rollup-linux-arm-musleabihf": "4.53.5",
-        "@rollup/rollup-linux-arm64-gnu": "4.53.5",
-        "@rollup/rollup-linux-arm64-musl": "4.53.5",
-        "@rollup/rollup-linux-loong64-gnu": "4.53.5",
-        "@rollup/rollup-linux-ppc64-gnu": "4.53.5",
-        "@rollup/rollup-linux-riscv64-gnu": "4.53.5",
-        "@rollup/rollup-linux-riscv64-musl": "4.53.5",
-        "@rollup/rollup-linux-s390x-gnu": "4.53.5",
-        "@rollup/rollup-linux-x64-gnu": "4.53.5",
-        "@rollup/rollup-linux-x64-musl": "4.53.5",
-        "@rollup/rollup-openharmony-arm64": "4.53.5",
-        "@rollup/rollup-win32-arm64-msvc": "4.53.5",
-        "@rollup/rollup-win32-ia32-msvc": "4.53.5",
-        "@rollup/rollup-win32-x64-gnu": "4.53.5",
-        "@rollup/rollup-win32-x64-msvc": "4.53.5",
+        "@rollup/rollup-android-arm-eabi": "4.54.0",
+        "@rollup/rollup-android-arm64": "4.54.0",
+        "@rollup/rollup-darwin-arm64": "4.54.0",
+        "@rollup/rollup-darwin-x64": "4.54.0",
+        "@rollup/rollup-freebsd-arm64": "4.54.0",
+        "@rollup/rollup-freebsd-x64": "4.54.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.54.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.54.0",
+        "@rollup/rollup-linux-arm64-musl": "4.54.0",
+        "@rollup/rollup-linux-loong64-gnu": "4.54.0",
+        "@rollup/rollup-linux-ppc64-gnu": "4.54.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.54.0",
+        "@rollup/rollup-linux-riscv64-musl": "4.54.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.54.0",
+        "@rollup/rollup-linux-x64-gnu": "4.54.0",
+        "@rollup/rollup-linux-x64-musl": "4.54.0",
+        "@rollup/rollup-openharmony-arm64": "4.54.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.54.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.54.0",
+        "@rollup/rollup-win32-x64-gnu": "4.54.0",
+        "@rollup/rollup-win32-x64-msvc": "4.54.0",
         "fsevents": "~2.3.2"
       }
     },
@@ -2454,6 +2443,7 @@
       "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
       "dev": true,
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "esbuild": "^0.21.3",
         "postcss": "^8.4.43",

+ 9 - 9
node_modules/.vite/deps/_metadata.json

@@ -1,37 +1,37 @@
 {
-  "hash": "13477738",
-  "configHash": "342035e2",
-  "lockfileHash": "3c482f06",
-  "browserHash": "557a6523",
+  "hash": "3a82690b",
+  "configHash": "b4044a2b",
+  "lockfileHash": "ab36e052",
+  "browserHash": "9e04f8bb",
   "optimized": {
     "react": {
       "src": "../../react/index.js",
       "file": "react.js",
-      "fileHash": "94414c37",
+      "fileHash": "1aa7b97a",
       "needsInterop": true
     },
     "react-dom": {
       "src": "../../react-dom/index.js",
       "file": "react-dom.js",
-      "fileHash": "72b90088",
+      "fileHash": "0ef3dca8",
       "needsInterop": true
     },
     "react/jsx-dev-runtime": {
       "src": "../../react/jsx-dev-runtime.js",
       "file": "react_jsx-dev-runtime.js",
-      "fileHash": "344f0f0d",
+      "fileHash": "b3bcf590",
       "needsInterop": true
     },
     "react/jsx-runtime": {
       "src": "../../react/jsx-runtime.js",
       "file": "react_jsx-runtime.js",
-      "fileHash": "4f091645",
+      "fileHash": "306c185b",
       "needsInterop": true
     },
     "react-dom/client": {
       "src": "../../react-dom/client.js",
       "file": "react-dom_client.js",
-      "fileHash": "127b009c",
+      "fileHash": "b7081479",
       "needsInterop": true
     }
   },

+ 0 - 3
node_modules/@esbuild/win32-x64/README.md

@@ -1,3 +0,0 @@
-# esbuild
-
-This is the Windows 64-bit binary for esbuild, a JavaScript bundler and minifier. See https://github.com/evanw/esbuild for details.

BIN
node_modules/@esbuild/win32-x64/esbuild.exe


+ 0 - 20
node_modules/@esbuild/win32-x64/package.json

@@ -1,20 +0,0 @@
-{
-  "name": "@esbuild/win32-x64",
-  "version": "0.21.5",
-  "description": "The Windows 64-bit binary for esbuild, a JavaScript bundler.",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/evanw/esbuild.git"
-  },
-  "license": "MIT",
-  "preferUnplugged": true,
-  "engines": {
-    "node": ">=12"
-  },
-  "os": [
-    "win32"
-  ],
-  "cpu": [
-    "x64"
-  ]
-}

+ 0 - 3
node_modules/@rollup/rollup-win32-x64-gnu/README.md

@@ -1,3 +0,0 @@
-# `@rollup/rollup-win32-x64-gnu`
-
-This is the **x86_64-pc-windows-gnu** binary for `rollup`

+ 0 - 22
node_modules/@rollup/rollup-win32-x64-gnu/package.json

@@ -1,22 +0,0 @@
-{
-  "name": "@rollup/rollup-win32-x64-gnu",
-  "version": "4.53.5",
-  "os": [
-    "win32"
-  ],
-  "cpu": [
-    "x64"
-  ],
-  "files": [
-    "rollup.win32-x64-gnu.node"
-  ],
-  "description": "Native bindings for Rollup",
-  "author": "Lukas Taegert-Atkinson",
-  "homepage": "https://rollupjs.org/",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/rollup/rollup.git"
-  },
-  "main": "./rollup.win32-x64-gnu.node"
-}

BIN
node_modules/@rollup/rollup-win32-x64-gnu/rollup.win32-x64-gnu.node


+ 0 - 3
node_modules/@rollup/rollup-win32-x64-msvc/README.md

@@ -1,3 +0,0 @@
-# `@rollup/rollup-win32-x64-msvc`
-
-This is the **x86_64-pc-windows-msvc** binary for `rollup`

+ 0 - 22
node_modules/@rollup/rollup-win32-x64-msvc/package.json

@@ -1,22 +0,0 @@
-{
-  "name": "@rollup/rollup-win32-x64-msvc",
-  "version": "4.53.5",
-  "os": [
-    "win32"
-  ],
-  "cpu": [
-    "x64"
-  ],
-  "files": [
-    "rollup.win32-x64-msvc.node"
-  ],
-  "description": "Native bindings for Rollup",
-  "author": "Lukas Taegert-Atkinson",
-  "homepage": "https://rollupjs.org/",
-  "license": "MIT",
-  "repository": {
-    "type": "git",
-    "url": "git+https://github.com/rollup/rollup.git"
-  },
-  "main": "./rollup.win32-x64-msvc.node"
-}

BIN
node_modules/@rollup/rollup-win32-x64-msvc/rollup.win32-x64-msvc.node


+ 32 - 32
node_modules/rollup/package.json

@@ -1,6 +1,6 @@
 {
   "name": "rollup",
-  "version": "4.53.5",
+  "version": "4.54.0",
   "description": "Next-generation ES module bundler",
   "main": "dist/rollup.js",
   "module": "dist/es/rollup.js",
@@ -111,28 +111,28 @@
   "homepage": "https://rollupjs.org/",
   "optionalDependencies": {
     "fsevents": "~2.3.2",
-    "@rollup/rollup-darwin-arm64": "4.53.5",
-    "@rollup/rollup-android-arm64": "4.53.5",
-    "@rollup/rollup-win32-arm64-msvc": "4.53.5",
-    "@rollup/rollup-freebsd-arm64": "4.53.5",
-    "@rollup/rollup-linux-arm64-gnu": "4.53.5",
-    "@rollup/rollup-linux-arm64-musl": "4.53.5",
-    "@rollup/rollup-android-arm-eabi": "4.53.5",
-    "@rollup/rollup-linux-arm-gnueabihf": "4.53.5",
-    "@rollup/rollup-linux-arm-musleabihf": "4.53.5",
-    "@rollup/rollup-win32-ia32-msvc": "4.53.5",
-    "@rollup/rollup-linux-loong64-gnu": "4.53.5",
-    "@rollup/rollup-linux-riscv64-gnu": "4.53.5",
-    "@rollup/rollup-linux-riscv64-musl": "4.53.5",
-    "@rollup/rollup-linux-ppc64-gnu": "4.53.5",
-    "@rollup/rollup-linux-s390x-gnu": "4.53.5",
-    "@rollup/rollup-darwin-x64": "4.53.5",
-    "@rollup/rollup-win32-x64-gnu": "4.53.5",
-    "@rollup/rollup-win32-x64-msvc": "4.53.5",
-    "@rollup/rollup-freebsd-x64": "4.53.5",
-    "@rollup/rollup-linux-x64-gnu": "4.53.5",
-    "@rollup/rollup-linux-x64-musl": "4.53.5",
-    "@rollup/rollup-openharmony-arm64": "4.53.5"
+    "@rollup/rollup-darwin-arm64": "4.54.0",
+    "@rollup/rollup-android-arm64": "4.54.0",
+    "@rollup/rollup-win32-arm64-msvc": "4.54.0",
+    "@rollup/rollup-freebsd-arm64": "4.54.0",
+    "@rollup/rollup-linux-arm64-gnu": "4.54.0",
+    "@rollup/rollup-linux-arm64-musl": "4.54.0",
+    "@rollup/rollup-android-arm-eabi": "4.54.0",
+    "@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
+    "@rollup/rollup-linux-arm-musleabihf": "4.54.0",
+    "@rollup/rollup-win32-ia32-msvc": "4.54.0",
+    "@rollup/rollup-linux-loong64-gnu": "4.54.0",
+    "@rollup/rollup-linux-riscv64-gnu": "4.54.0",
+    "@rollup/rollup-linux-riscv64-musl": "4.54.0",
+    "@rollup/rollup-linux-ppc64-gnu": "4.54.0",
+    "@rollup/rollup-linux-s390x-gnu": "4.54.0",
+    "@rollup/rollup-darwin-x64": "4.54.0",
+    "@rollup/rollup-win32-x64-gnu": "4.54.0",
+    "@rollup/rollup-win32-x64-msvc": "4.54.0",
+    "@rollup/rollup-freebsd-x64": "4.54.0",
+    "@rollup/rollup-linux-x64-gnu": "4.54.0",
+    "@rollup/rollup-linux-x64-musl": "4.54.0",
+    "@rollup/rollup-openharmony-arm64": "4.54.0"
   },
   "dependencies": {
     "@types/estree": "1.0.8"
@@ -146,8 +146,8 @@
     "@codemirror/language": "^6.11.3",
     "@codemirror/search": "^6.5.11",
     "@codemirror/state": "^6.5.2",
-    "@codemirror/view": "^6.39.3",
-    "@eslint/js": "^9.39.1",
+    "@codemirror/view": "^6.39.4",
+    "@eslint/js": "^9.39.2",
     "@inquirer/prompts": "^7.10.1",
     "@jridgewell/sourcemap-codec": "^1.5.5",
     "@mermaid-js/mermaid-cli": "^11.12.0",
@@ -161,9 +161,9 @@
     "@rollup/plugin-terser": "^0.4.4",
     "@rollup/plugin-typescript": "^12.3.0",
     "@rollup/pluginutils": "^5.3.0",
-    "@shikijs/vitepress-twoslash": "^3.19.0",
+    "@shikijs/vitepress-twoslash": "^3.20.0",
     "@types/mocha": "^10.0.10",
-    "@types/node": "^20.19.26",
+    "@types/node": "^20.19.27",
     "@types/picomatch": "^4.0.2",
     "@types/semver": "^7.7.1",
     "@types/yargs-parser": "^21.0.3",
@@ -180,7 +180,7 @@
     "date-time": "^4.0.0",
     "es5-shim": "^4.6.7",
     "es6-shim": "^0.35.8",
-    "eslint": "^9.39.1",
+    "eslint": "^9.39.2",
     "eslint-config-prettier": "^10.1.8",
     "eslint-plugin-prettier": "^5.5.4",
     "eslint-plugin-unicorn": "^62.0.0",
@@ -209,7 +209,7 @@
     "pretty-bytes": "^7.1.0",
     "pretty-ms": "^9.3.0",
     "requirejs": "^2.3.8",
-    "rollup": "^4.53.3",
+    "rollup": "^4.53.4",
     "rollup-plugin-license": "^3.6.0",
     "rollup-plugin-string": "^3.0.0",
     "semver": "^7.7.3",
@@ -221,8 +221,8 @@
     "terser": "^5.44.1",
     "tslib": "^2.8.1",
     "typescript": "^5.9.3",
-    "typescript-eslint": "^8.49.0",
-    "vite": "^7.2.7",
+    "typescript-eslint": "^8.50.0",
+    "vite": "^7.3.0",
     "vitepress": "^1.6.4",
     "vue": "^3.5.25",
     "vue-eslint-parser": "^10.2.0",
@@ -237,7 +237,7 @@
     "semver": "^7.7.3",
     "vite": "$vite",
     "path-scurry": {
-      "lru-cache": "^11.2.2"
+      "lru-cache": "^11.2.4"
     }
   },
   "comments": {

+ 95 - 91
package-lock.json

@@ -52,6 +52,7 @@
       "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
       "dev": true,
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "@babel/code-frame": "^7.27.1",
         "@babel/generator": "^7.28.5",
@@ -801,9 +802,9 @@
       "license": "MIT"
     },
     "node_modules/@rollup/rollup-android-arm-eabi": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.53.5.tgz",
-      "integrity": "sha512-iDGS/h7D8t7tvZ1t6+WPK04KD0MwzLZrG0se1hzBjSi5fyxlsiggoJHwh18PCFNn7tG43OWb6pdZ6Y+rMlmyNQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.54.0.tgz",
+      "integrity": "sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==",
       "cpu": [
         "arm"
       ],
@@ -815,9 +816,9 @@
       ]
     },
     "node_modules/@rollup/rollup-android-arm64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.53.5.tgz",
-      "integrity": "sha512-wrSAViWvZHBMMlWk6EJhvg8/rjxzyEhEdgfMMjREHEq11EtJ6IP6yfcCH57YAEca2Oe3FNCE9DSTgU70EIGmVw==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.54.0.tgz",
+      "integrity": "sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==",
       "cpu": [
         "arm64"
       ],
@@ -829,9 +830,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-arm64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.53.5.tgz",
-      "integrity": "sha512-S87zZPBmRO6u1YXQLwpveZm4JfPpAa6oHBX7/ghSiGH3rz/KDgAu1rKdGutV+WUI6tKDMbaBJomhnT30Y2t4VQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.54.0.tgz",
+      "integrity": "sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==",
       "cpu": [
         "arm64"
       ],
@@ -843,9 +844,9 @@
       ]
     },
     "node_modules/@rollup/rollup-darwin-x64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.53.5.tgz",
-      "integrity": "sha512-YTbnsAaHo6VrAczISxgpTva8EkfQus0VPEVJCEaboHtZRIb6h6j0BNxRBOwnDciFTZLDPW5r+ZBmhL/+YpTZgA==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.54.0.tgz",
+      "integrity": "sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==",
       "cpu": [
         "x64"
       ],
@@ -857,9 +858,9 @@
       ]
     },
     "node_modules/@rollup/rollup-freebsd-arm64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.53.5.tgz",
-      "integrity": "sha512-1T8eY2J8rKJWzaznV7zedfdhD1BqVs1iqILhmHDq/bqCUZsrMt+j8VCTHhP0vdfbHK3e1IQ7VYx3jlKqwlf+vw==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.54.0.tgz",
+      "integrity": "sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==",
       "cpu": [
         "arm64"
       ],
@@ -871,9 +872,9 @@
       ]
     },
     "node_modules/@rollup/rollup-freebsd-x64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.53.5.tgz",
-      "integrity": "sha512-sHTiuXyBJApxRn+VFMaw1U+Qsz4kcNlxQ742snICYPrY+DDL8/ZbaC4DVIB7vgZmp3jiDaKA0WpBdP0aqPJoBQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.54.0.tgz",
+      "integrity": "sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==",
       "cpu": [
         "x64"
       ],
@@ -885,9 +886,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-gnueabihf": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.53.5.tgz",
-      "integrity": "sha512-dV3T9MyAf0w8zPVLVBptVlzaXxka6xg1f16VAQmjg+4KMSTWDvhimI/Y6mp8oHwNrmnmVl9XxJ/w/mO4uIQONA==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.54.0.tgz",
+      "integrity": "sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==",
       "cpu": [
         "arm"
       ],
@@ -899,9 +900,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm-musleabihf": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.53.5.tgz",
-      "integrity": "sha512-wIGYC1x/hyjP+KAu9+ewDI+fi5XSNiUi9Bvg6KGAh2TsNMA3tSEs+Sh6jJ/r4BV/bx/CyWu2ue9kDnIdRyafcQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.54.0.tgz",
+      "integrity": "sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==",
       "cpu": [
         "arm"
       ],
@@ -913,9 +914,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.53.5.tgz",
-      "integrity": "sha512-Y+qVA0D9d0y2FRNiG9oM3Hut/DgODZbU9I8pLLPwAsU0tUKZ49cyV1tzmB/qRbSzGvY8lpgGkJuMyuhH7Ma+Vg==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.54.0.tgz",
+      "integrity": "sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==",
       "cpu": [
         "arm64"
       ],
@@ -927,9 +928,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-arm64-musl": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.53.5.tgz",
-      "integrity": "sha512-juaC4bEgJsyFVfqhtGLz8mbopaWD+WeSOYr5E16y+1of6KQjc0BpwZLuxkClqY1i8sco+MdyoXPNiCkQou09+g==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.54.0.tgz",
+      "integrity": "sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==",
       "cpu": [
         "arm64"
       ],
@@ -941,9 +942,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-loong64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.53.5.tgz",
-      "integrity": "sha512-rIEC0hZ17A42iXtHX+EPJVL/CakHo+tT7W0pbzdAGuWOt2jxDFh7A/lRhsNHBcqL4T36+UiAgwO8pbmn3dE8wA==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.54.0.tgz",
+      "integrity": "sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==",
       "cpu": [
         "loong64"
       ],
@@ -955,9 +956,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-ppc64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.53.5.tgz",
-      "integrity": "sha512-T7l409NhUE552RcAOcmJHj3xyZ2h7vMWzcwQI0hvn5tqHh3oSoclf9WgTl+0QqffWFG8MEVZZP1/OBglKZx52Q==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.54.0.tgz",
+      "integrity": "sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==",
       "cpu": [
         "ppc64"
       ],
@@ -969,9 +970,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.53.5.tgz",
-      "integrity": "sha512-7OK5/GhxbnrMcxIFoYfhV/TkknarkYC1hqUw1wU2xUN3TVRLNT5FmBv4KkheSG2xZ6IEbRAhTooTV2+R5Tk0lQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.54.0.tgz",
+      "integrity": "sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==",
       "cpu": [
         "riscv64"
       ],
@@ -983,9 +984,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-riscv64-musl": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.53.5.tgz",
-      "integrity": "sha512-GwuDBE/PsXaTa76lO5eLJTyr2k8QkPipAyOrs4V/KJufHCZBJ495VCGJol35grx9xryk4V+2zd3Ri+3v7NPh+w==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.54.0.tgz",
+      "integrity": "sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==",
       "cpu": [
         "riscv64"
       ],
@@ -997,9 +998,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-s390x-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.53.5.tgz",
-      "integrity": "sha512-IAE1Ziyr1qNfnmiQLHBURAD+eh/zH1pIeJjeShleII7Vj8kyEm2PF77o+lf3WTHDpNJcu4IXJxNO0Zluro8bOw==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.54.0.tgz",
+      "integrity": "sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==",
       "cpu": [
         "s390x"
       ],
@@ -1011,9 +1012,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.53.5.tgz",
-      "integrity": "sha512-Pg6E+oP7GvZ4XwgRJBuSXZjcqpIW3yCBhK4BcsANvb47qMvAbCjR6E+1a/U2WXz1JJxp9/4Dno3/iSJLcm5auw==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.54.0.tgz",
+      "integrity": "sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==",
       "cpu": [
         "x64"
       ],
@@ -1025,9 +1026,9 @@
       ]
     },
     "node_modules/@rollup/rollup-linux-x64-musl": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.53.5.tgz",
-      "integrity": "sha512-txGtluxDKTxaMDzUduGP0wdfng24y1rygUMnmlUJ88fzCCULCLn7oE5kb2+tRB+MWq1QDZT6ObT5RrR8HFRKqg==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.54.0.tgz",
+      "integrity": "sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==",
       "cpu": [
         "x64"
       ],
@@ -1039,9 +1040,9 @@
       ]
     },
     "node_modules/@rollup/rollup-openharmony-arm64": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.53.5.tgz",
-      "integrity": "sha512-3DFiLPnTxiOQV993fMc+KO8zXHTcIjgaInrqlG8zDp1TlhYl6WgrOHuJkJQ6M8zHEcntSJsUp1XFZSY8C1DYbg==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.54.0.tgz",
+      "integrity": "sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==",
       "cpu": [
         "arm64"
       ],
@@ -1053,9 +1054,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-arm64-msvc": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.53.5.tgz",
-      "integrity": "sha512-nggc/wPpNTgjGg75hu+Q/3i32R00Lq1B6N1DO7MCU340MRKL3WZJMjA9U4K4gzy3dkZPXm9E1Nc81FItBVGRlA==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.54.0.tgz",
+      "integrity": "sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==",
       "cpu": [
         "arm64"
       ],
@@ -1067,9 +1068,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-ia32-msvc": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.53.5.tgz",
-      "integrity": "sha512-U/54pTbdQpPLBdEzCT6NBCFAfSZMvmjr0twhnD9f4EIvlm9wy3jjQ38yQj1AGznrNO65EWQMgm/QUjuIVrYF9w==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.54.0.tgz",
+      "integrity": "sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==",
       "cpu": [
         "ia32"
       ],
@@ -1081,9 +1082,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-gnu": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.53.5.tgz",
-      "integrity": "sha512-2NqKgZSuLH9SXBBV2dWNRCZmocgSOx8OJSdpRaEcRlIfX8YrKxUT6z0F1NpvDVhOsl190UFTRh2F2WDWWCYp3A==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.54.0.tgz",
+      "integrity": "sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==",
       "cpu": [
         "x64"
       ],
@@ -1095,9 +1096,9 @@
       ]
     },
     "node_modules/@rollup/rollup-win32-x64-msvc": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.53.5.tgz",
-      "integrity": "sha512-JRpZUhCfhZ4keB5v0fe02gQJy05GqboPOaxvjugW04RLSYYoB/9t2lx2u/tMs/Na/1NXfY8QYjgRljRpN+MjTQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.54.0.tgz",
+      "integrity": "sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==",
       "cpu": [
         "x64"
       ],
@@ -1376,6 +1377,7 @@
         }
       ],
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "baseline-browser-mapping": "^2.9.0",
         "caniuse-lite": "^1.0.30001759",
@@ -2727,6 +2729,7 @@
       "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
       "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "loose-envify": "^1.1.0"
       },
@@ -2823,9 +2826,9 @@
       }
     },
     "node_modules/rollup": {
-      "version": "4.53.5",
-      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.53.5.tgz",
-      "integrity": "sha512-iTNAbFSlRpcHeeWu73ywU/8KuU/LZmNCSxp6fjQkJBD3ivUb8tpDrXhIxEzA05HlYMEwmtaUnb3RP+YNv162OQ==",
+      "version": "4.54.0",
+      "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.54.0.tgz",
+      "integrity": "sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -2839,28 +2842,28 @@
         "npm": ">=8.0.0"
       },
       "optionalDependencies": {
-        "@rollup/rollup-android-arm-eabi": "4.53.5",
-        "@rollup/rollup-android-arm64": "4.53.5",
-        "@rollup/rollup-darwin-arm64": "4.53.5",
-        "@rollup/rollup-darwin-x64": "4.53.5",
-        "@rollup/rollup-freebsd-arm64": "4.53.5",
-        "@rollup/rollup-freebsd-x64": "4.53.5",
-        "@rollup/rollup-linux-arm-gnueabihf": "4.53.5",
-        "@rollup/rollup-linux-arm-musleabihf": "4.53.5",
-        "@rollup/rollup-linux-arm64-gnu": "4.53.5",
-        "@rollup/rollup-linux-arm64-musl": "4.53.5",
-        "@rollup/rollup-linux-loong64-gnu": "4.53.5",
-        "@rollup/rollup-linux-ppc64-gnu": "4.53.5",
-        "@rollup/rollup-linux-riscv64-gnu": "4.53.5",
-        "@rollup/rollup-linux-riscv64-musl": "4.53.5",
-        "@rollup/rollup-linux-s390x-gnu": "4.53.5",
-        "@rollup/rollup-linux-x64-gnu": "4.53.5",
-        "@rollup/rollup-linux-x64-musl": "4.53.5",
-        "@rollup/rollup-openharmony-arm64": "4.53.5",
-        "@rollup/rollup-win32-arm64-msvc": "4.53.5",
-        "@rollup/rollup-win32-ia32-msvc": "4.53.5",
-        "@rollup/rollup-win32-x64-gnu": "4.53.5",
-        "@rollup/rollup-win32-x64-msvc": "4.53.5",
+        "@rollup/rollup-android-arm-eabi": "4.54.0",
+        "@rollup/rollup-android-arm64": "4.54.0",
+        "@rollup/rollup-darwin-arm64": "4.54.0",
+        "@rollup/rollup-darwin-x64": "4.54.0",
+        "@rollup/rollup-freebsd-arm64": "4.54.0",
+        "@rollup/rollup-freebsd-x64": "4.54.0",
+        "@rollup/rollup-linux-arm-gnueabihf": "4.54.0",
+        "@rollup/rollup-linux-arm-musleabihf": "4.54.0",
+        "@rollup/rollup-linux-arm64-gnu": "4.54.0",
+        "@rollup/rollup-linux-arm64-musl": "4.54.0",
+        "@rollup/rollup-linux-loong64-gnu": "4.54.0",
+        "@rollup/rollup-linux-ppc64-gnu": "4.54.0",
+        "@rollup/rollup-linux-riscv64-gnu": "4.54.0",
+        "@rollup/rollup-linux-riscv64-musl": "4.54.0",
+        "@rollup/rollup-linux-s390x-gnu": "4.54.0",
+        "@rollup/rollup-linux-x64-gnu": "4.54.0",
+        "@rollup/rollup-linux-x64-musl": "4.54.0",
+        "@rollup/rollup-openharmony-arm64": "4.54.0",
+        "@rollup/rollup-win32-arm64-msvc": "4.54.0",
+        "@rollup/rollup-win32-ia32-msvc": "4.54.0",
+        "@rollup/rollup-win32-x64-gnu": "4.54.0",
+        "@rollup/rollup-win32-x64-msvc": "4.54.0",
         "fsevents": "~2.3.2"
       }
     },
@@ -3140,6 +3143,7 @@
       "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==",
       "dev": true,
       "license": "MIT",
+      "peer": true,
       "dependencies": {
         "esbuild": "^0.21.3",
         "postcss": "^8.4.43",

+ 83 - 2
src/pages/0-START.BAT

@@ -1,3 +1,84 @@
 @echo off
-cd /d "%~dp0\..\.."
-npm run electron:dev
+chcp 65001 >nul
+setlocal enabledelayedexpansion
+
+echo ========================================
+echo Starting Auto Android Controller
+echo ========================================
+echo.
+
+REM Get the directory where this batch file is located and navigate to project root
+set "SCRIPT_DIR=%~dp0"
+set "PROJECT_ROOT=%SCRIPT_DIR%..\.."
+cd /d "%PROJECT_ROOT%"
+
+REM Check if npm is available
+echo [1/3] Checking npm...
+where npm >nul 2>&1
+if errorlevel 1 (
+    echo Error: npm is not found in PATH
+    echo.
+    echo Please ensure Node.js is installed and npm is in your system PATH.
+    echo You can download Node.js from: https://nodejs.org/
+    echo.
+    echo If Node.js is installed but npm is not in PATH, you may need to:
+    echo 1. Restart your computer after installing Node.js
+    echo 2. Or add Node.js to your system PATH manually
+    echo.
+    pause
+    exit /b 1
+)
+echo npm is available
+echo.
+
+REM Check if node_modules exists and key dependencies are installed
+echo [2/3] Checking dependencies...
+if not exist "node_modules" (
+    echo Warning: node_modules not found. Installing dependencies...
+    call npm install
+    if errorlevel 1 (
+        echo Error: Failed to install dependencies
+        pause
+        exit /b 1
+    )
+) else (
+    echo Dependencies directory found
+    REM Check if key dependencies are properly installed
+    set "NEED_REINSTALL=0"
+    if not exist "node_modules\concurrently\dist\bin\concurrently.js" (
+        echo Warning: concurrently module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if not exist "node_modules\rxjs\dist\cjs\index.js" (
+        echo Warning: rxjs module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if not exist "node_modules\electron\package.json" (
+        echo Warning: electron module appears incomplete
+        set "NEED_REINSTALL=1"
+    )
+    if "!NEED_REINSTALL!"=="1" (
+        echo Warning: Key dependencies appear incomplete. Reinstalling...
+        call npm install
+        if errorlevel 1 (
+            echo Error: Failed to reinstall dependencies
+            pause
+            exit /b 1
+        )
+        echo Dependencies reinstalled successfully
+    ) else (
+        echo Dependencies verified
+    )
+)
+echo.
+
+REM Start the application
+echo [3/3] Starting application...
+echo.
+call npm run electron:dev
+if errorlevel 1 (
+    echo.
+    echo Error: Failed to start application
+    pause
+    exit /b 1
+)

+ 23 - 2
src/pages/Chat/Chat.css

@@ -1,6 +1,6 @@
 .Chat-container {
   display: grid;
-  grid-template-rows: 7fr 3fr;
+  grid-template-columns: 60% 40%;
   height: 100%;
   width: 100%;
   padding: 0;
@@ -9,7 +9,28 @@
   align-items: stretch;
   overflow: hidden; /* prevent internal scrollbars */
   container-type: inline-size; /* enable cqw-based scaling */
-  border: 1px solid #3efc0f;
+  /* border: 1px solid #3efc0f; */
+}
+
+.Chat-dialog-container {
+  display: grid;
+  grid-template-rows: 90% 10%;
+  height: 100%;
+  width: 100%;
+  padding: 0;
+  margin: 0;
+  box-sizing: border-box;
+  align-items: stretch;
+  overflow: hidden; /* prevent internal scrollbars */
+  container-type: inline-size; /* enable cqw-based scaling */
+  /* border: 1px solid #3efc0f; */
+}
+
+.Chat-dialog {
+  min-height: 0;
+  margin: 0;
+  padding: 0;
+  overflow: hidden;
 }
 
 .Chat-history {

+ 12 - 3
src/pages/Chat/Chat.jsx

@@ -1,5 +1,6 @@
 import './Chat.css';
 import { ChatLogic } from './Chat.js';
+import Dialog from './Dialog/Dialog.jsx';
 import History from './History/History.jsx';
 import Input from './Input/Input.jsx';
 
@@ -8,12 +9,20 @@ function Chat() {
 
   return (
     <div className="Chat-container">
+
+      <div className="Chat-dialog-container">
+        <div className="Chat-dialog">
+          <Dialog />
+        </div>
+        <div className="Chat-input">
+          <Input />
+        </div>
+      </div>
+
       <div className="Chat-history">
         <History />
       </div>
-      <div className="Chat-input">
-        <Input />
-      </div>
+      
     </div>
   );
 }

+ 1 - 1
src/pages/Chat/History/History.css

@@ -5,5 +5,5 @@
   padding: 20px;
   box-sizing: border-box;
   overflow-y: auto;
-  border: 1px solid #1b02f8;
+  /* border: 1px solid #1b02f8; */
 }

+ 250 - 5
src/pages/Chat/Input/Input.css

@@ -1,9 +1,254 @@
-.Input-container {
+/* 极简主义:灰色背景 + 黑色线条 - 美化版 - 纯 Flex 布局 */
+.input-container {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  position: relative;
+  width: 100%;
   height: 100%;
+  padding: clamp(10px, 2.5cqw, 18px);
+  box-sizing: border-box;
+  container-type: inline-size;
+  font-size: clamp(13px, 2.5cqw, 16px);
+  gap: clamp(8px, 2cqw, 12px);
+}
+
+/* 输入框 - 响应式缩放 - 长方形 - 宽度90% - 自动缩放 - Flex 布局 */
+.input-text {
+  flex: 1;
   width: 100%;
-  margin: 0;
-  padding: 20px;
+  min-width: 0;
+  max-width: 100%;
+  height: clamp(32px, 6cqw, 40px);
+  min-height: clamp(32px, 6cqw, 40px);
+  background: #ffffff;
+  color: #0f0f0f;
+  border: 2px solid #0f0f0f;
+  border-radius: clamp(2px, 0.5cqw, 4px);
+  padding: 0 clamp(3em, 5cqw, 3.5em) 0 clamp(3em, 5cqw, 3.5em);
+  font-size: clamp(12px, 2.2cqw, 16px);
+  line-height: clamp(32px, 6cqw, 40px);
+  outline: none;
+  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
+  box-sizing: border-box;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+  font-weight: 400;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+.input-text::placeholder {
+  color: #999;
+  font-size: 1em;
+  opacity: 0.7;
+}
+
+.input-text:focus {
+  border-color: #000;
+  background: #ffffff;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 0 0 3px rgba(0, 0, 0, 0.05);
+}
+
+.input-text:hover:not(:focus) {
+  border-color: #333;
+  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
+}
+
+/* 发送按钮现在直接在容器中,不需要单独的容器 */
+
+/* 上传按钮 - 小回形针图标 - Flex 布局 - 无边框 */
+.upload-btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: clamp(32px, 6cqw, 40px);
+  height: clamp(32px, 6cqw, 40px);
+  min-width: clamp(32px, 6cqw, 40px);
+  min-height: clamp(32px, 6cqw, 40px);
+  aspect-ratio: 1;
+  padding: 0;
+  border: none;
+  background: transparent;
+  color: #0f0f0f;
+  cursor: pointer;
+  transition: background 0.2s ease, opacity 0.2s ease;
   box-sizing: border-box;
-  overflow-y: auto;
-  border: 1px solid #ff0000;
+  box-shadow: none;
+  flex-shrink: 0;
+  overflow: hidden;
+  outline: none;
+  position: absolute;
+  left: clamp(12px, 2.5cqw, 16px);
+  top: 50%;
+  transform: translateY(-50%);
+  z-index: 2;
+}
+
+.upload-btn svg {
+  width: clamp(12px, 2cqw, 14px);
+  height: clamp(12px, 2cqw, 14px);
+  flex-shrink: 0;
+}
+
+/* 发送按钮 - 圆形图标按钮 - Flex 布局 - 自动缩放 - 纵向对齐 */
+.send-btn {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  width: clamp(32px, 6cqw, 40px);
+  height: clamp(32px, 6cqw, 40px);
+  min-width: clamp(32px, 6cqw, 40px);
+  min-height: clamp(32px, 6cqw, 40px);
+  padding: 0;
+  border-radius: 50%;
+  border: 2px solid #0f0f0f;
+  background: #ffffff;
+  color: #0f0f0f;
+  cursor: pointer;
+  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
+  box-sizing: border-box;
+  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+  flex-shrink: 0;
+  overflow: hidden;
+  aspect-ratio: 1;
+  position: absolute;
+  right: clamp(12px, 2.5cqw, 16px);
+  top: 50%;
+  transform: translateY(-50%);
+  z-index: 2;
+}
+
+.upload-btn svg,
+.send-btn svg {
+  flex-shrink: 0;
+  transition: transform 0.2s ease;
+}
+
+.send-btn svg {
+  width: clamp(14px, 2.5cqw, 18px);
+  height: clamp(14px, 2.5cqw, 18px);
+  flex-shrink: 0;
+}
+
+.upload-btn:hover {
+  background: rgba(0, 0, 0, 0.05);
+}
+
+.send-btn:hover {
+  background: #f8f8f8;
+  border-color: #000;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
+}
+
+.upload-btn:hover svg,
+.send-btn:hover svg {
+  transform: scale(1.1);
+}
+
+.upload-btn:active {
+  background: rgba(0, 0, 0, 0.1);
+}
+
+.send-btn:active {
+  background: #f0f0f0;
+  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+
+.send-btn:disabled {
+  color: #aaa;
+  border-color: #ccc;
+  background: #f5f5f5;
+  cursor: not-allowed;
+  transform: none;
+  box-shadow: none;
+  opacity: 0.6;
+}
+
+.send-btn:not(:disabled) {
+  background: linear-gradient(135deg, #ffffff 0%, #f8f8f8 100%);
+}
+
+.send-btn:not(:disabled):hover {
+  background: linear-gradient(135deg, #f8f8f8 0%, #f0f0f0 100%);
+}
+
+.file-input {
+  display: none;
+}
+
+/* 按钮文字样式优化 - 自动缩放 */
+.upload-btn span {
+  font-weight: 500;
+  letter-spacing: 0.02em;
+  flex-shrink: 0;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+
+/* 焦点可见性增强 */
+.input-text:focus-visible,
+.upload-btn:focus-visible,
+.send-btn:focus-visible {
+  outline: 2px solid #0f0f0f;
+  outline-offset: 2px;
+}
+
+/* 加载状态(未来可扩展) */
+.send-btn:disabled::after {
+  content: '';
+  position: absolute;
+  width: 100%;
+  height: 100%;
+  background: rgba(0, 0, 0, 0.05);
+  border-radius: inherit;
+}
+
+/* 平滑滚动 */
+.input-container {
+  scroll-behavior: smooth;
+}
+
+/* 响应式:小屏幕优化 - 自动缩放 - Flex 布局 */
+@media (max-width: 480px) {
+  .input-text {
+    flex: 1;
+    width: 100%;
+    max-width: 100%;
+    padding: 0 clamp(2.6em, 4.5cqw, 3em) 0 clamp(2.6em, 4.5cqw, 3em);
+    font-size: clamp(11px, 2cqw, 15px);
+  }
+  
+  .upload-btn {
+    width: clamp(28px, 5.5cqw, 36px);
+    height: clamp(28px, 5.5cqw, 36px);
+    min-width: clamp(28px, 5.5cqw, 36px);
+    min-height: clamp(28px, 5.5cqw, 36px);
+    left: clamp(10px, 2cqw, 14px);
+  }
+  
+  .upload-btn svg {
+    width: clamp(10px, 1.8cqw, 12px);
+    height: clamp(10px, 1.8cqw, 12px);
+  }
+  
+  .send-btn {
+    width: clamp(28px, 5.5cqw, 36px);
+    height: clamp(28px, 5.5cqw, 36px);
+    min-width: clamp(28px, 5.5cqw, 36px);
+    min-height: clamp(28px, 5.5cqw, 36px);
+    right: clamp(10px, 2cqw, 14px);
+  }
+  
+  .send-btn svg {
+    width: clamp(12px, 2.2cqw, 16px);
+    height: clamp(12px, 2.2cqw, 16px);
+  }
+}
+
+/* 超小屏幕:只显示图标 */
+@media (max-width: 320px) {
+  .upload-btn,
+  .send-btn {
+    padding: 0.7em;
+  }
 }

+ 12 - 2
src/pages/Chat/Input/Input.js

@@ -1,7 +1,17 @@
+// InputLogic - 业务逻辑占位符
+// 当前所有逻辑已在 Input.jsx 组件中
+
 export function InputLogic() {
-  // business logic placeholder
+  const onSend = (text) => {
+    console.log('Send message:', text);
+  };
+
+  const onUpload = (file) => {
+    console.log('Upload file:', file.name);
+  };
 
   return {
-    // expose data or methods here
+    onSend,
+    onUpload,
   };
 }

+ 64 - 3
src/pages/Chat/Input/Input.jsx

@@ -1,12 +1,73 @@
 import './Input.css';
 import { InputLogic } from './Input.js';
+import { useRef, useState } from 'react';
 
 function Input() {
-  const logic = InputLogic();
+  const { onSend, onUpload } = InputLogic();
+  const [message, setMessage] = useState('');
+  const fileInputRef = useRef(null);
+
+  const handleSend = () => {
+    const trimmed = message.trim();
+    if (!trimmed) return;
+    onSend?.(trimmed);
+    setMessage('');
+  };
+
+  const handleFileChange = (event) => {
+    const file = event.target.files?.[0];
+    if (!file) return;
+    onUpload?.(file);
+    event.target.value = '';
+  };
 
   return (
-    <div className="Input-container">
-      <h2>Input</h2>
+    <div className="input-container">
+      <button
+        type="button"
+        className="upload-btn"
+        onClick={() => fileInputRef.current?.click()}
+        title="上传图片"
+      >
+        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
+          <path d="M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48"></path>
+        </svg>
+      </button>
+
+      <input
+        className="input-text"
+        type="text"
+        placeholder="输入消息..."
+        value={message}
+        onChange={(e) => setMessage(e.target.value)}
+        onKeyDown={(e) => {
+          if (e.key === 'Enter' && !e.shiftKey) {
+            e.preventDefault();
+            handleSend();
+          }
+        }}
+      />
+
+      <button
+        type="button"
+        className="send-btn"
+        onClick={handleSend}
+        disabled={!message.trim()}
+        title="发送消息"
+      >
+        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
+          <line x1="22" y1="2" x2="11" y2="13"></line>
+          <polygon points="22 2 15 22 11 13 2 9 22 2"></polygon>
+        </svg>
+      </button>
+
+      <input
+        type="file"
+        ref={fileInputRef}
+        className="file-input"
+        onChange={handleFileChange}
+        accept="image/*"
+      />
     </div>
   );
 }

+ 1 - 1
src/pages/home.css

@@ -1,6 +1,6 @@
 .Home-container {
   display: grid;
-  grid-template-columns: 20% 50% 30%;
+  grid-template-columns: 20% 40% 40%;
   width: 100vw;
   height: 100vh;
   box-sizing: border-box;