diff --git a/package.json b/package.json index 6fb97d4..ba271b1 100644 --- a/package.json +++ b/package.json @@ -10,18 +10,20 @@ "tauri": "tauri" }, "dependencies": { + "@ant-design/icons": "^5.5.2", "@tauri-apps/api": "^2", "@tauri-apps/plugin-shell": "^2", "antd": "^5.22.3", - "react": "^18.2.0", - "react-dom": "^18.2.0" + "react": "^19.0.0", + "react-dom": "^19.0.0" }, "devDependencies": { "@tauri-apps/cli": "^2", - "@types/react": "^18.2.15", - "@types/react-dom": "^18.2.7", + "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", "@vitejs/plugin-react": "^4.2.1", + "sass": "^1.82.0", "typescript": "^5.2.2", - "vite": "^5.3.1" + "vite": "^6.0.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f1cc64d..233fc8a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ importers: .: dependencies: + '@ant-design/icons': + specifier: ^5.5.2 + version: 5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@tauri-apps/api': specifier: ^2 version: 2.1.1 @@ -16,32 +19,35 @@ importers: version: 2.0.1 antd: specifier: ^5.22.3 - version: 5.22.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + version: 5.22.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react: - specifier: ^18.2.0 - version: 18.3.1 + specifier: ^19.0.0 + version: 19.0.0 react-dom: - specifier: ^18.2.0 - version: 18.3.1(react@18.3.1) + specifier: ^19.0.0 + version: 19.0.0(react@19.0.0) devDependencies: '@tauri-apps/cli': specifier: ^2 version: 2.1.0 '@types/react': - specifier: ^18.2.15 - version: 18.3.14 + specifier: ^19.0.0 + version: 19.0.1 '@types/react-dom': - specifier: ^18.2.7 - version: 18.3.2 + specifier: ^19.0.0 + version: 19.0.1 '@vitejs/plugin-react': specifier: ^4.2.1 - version: 4.3.4(vite@5.4.11) + version: 4.3.4(vite@6.0.3(sass@1.82.0)) + sass: + specifier: ^1.82.0 + version: 1.82.0 typescript: specifier: ^5.2.2 version: 5.7.2 vite: - specifier: ^5.3.1 - version: 5.4.11 + specifier: ^6.0.0 + version: 6.0.3(sass@1.82.0) packages: @@ -176,141 +182,147 @@ packages: '@emotion/unitless@0.7.5': resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - '@esbuild/aix-ppc64@0.21.5': - resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==} - engines: {node: '>=12'} + '@esbuild/aix-ppc64@0.24.0': + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': - resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==} - engines: {node: '>=12'} + '@esbuild/android-arm64@0.24.0': + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': - resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==} - engines: {node: '>=12'} + '@esbuild/android-arm@0.24.0': + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': - resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==} - engines: {node: '>=12'} + '@esbuild/android-x64@0.24.0': + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': - resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==} - engines: {node: '>=12'} + '@esbuild/darwin-arm64@0.24.0': + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': - resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==} - engines: {node: '>=12'} + '@esbuild/darwin-x64@0.24.0': + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': - resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==} - engines: {node: '>=12'} + '@esbuild/freebsd-arm64@0.24.0': + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': - resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==} - engines: {node: '>=12'} + '@esbuild/freebsd-x64@0.24.0': + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': - resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==} - engines: {node: '>=12'} + '@esbuild/linux-arm64@0.24.0': + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': - resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==} - engines: {node: '>=12'} + '@esbuild/linux-arm@0.24.0': + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': - resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==} - engines: {node: '>=12'} + '@esbuild/linux-ia32@0.24.0': + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': - resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==} - engines: {node: '>=12'} + '@esbuild/linux-loong64@0.24.0': + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': - resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==} - engines: {node: '>=12'} + '@esbuild/linux-mips64el@0.24.0': + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': - resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==} - engines: {node: '>=12'} + '@esbuild/linux-ppc64@0.24.0': + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': - resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==} - engines: {node: '>=12'} + '@esbuild/linux-riscv64@0.24.0': + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': - resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==} - engines: {node: '>=12'} + '@esbuild/linux-s390x@0.24.0': + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': - resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==} - engines: {node: '>=12'} + '@esbuild/linux-x64@0.24.0': + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': - resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==} - engines: {node: '>=12'} + '@esbuild/netbsd-x64@0.24.0': + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': - resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==} - engines: {node: '>=12'} + '@esbuild/openbsd-arm64@0.24.0': + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.24.0': + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': - resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==} - engines: {node: '>=12'} + '@esbuild/sunos-x64@0.24.0': + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': - resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==} - engines: {node: '>=12'} + '@esbuild/win32-arm64@0.24.0': + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': - resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==} - engines: {node: '>=12'} + '@esbuild/win32-ia32@0.24.0': + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': - resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==} - engines: {node: '>=12'} + '@esbuild/win32-x64@0.24.0': + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -332,6 +344,88 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@parcel/watcher-android-arm64@2.5.0': + resolution: {integrity: sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [android] + + '@parcel/watcher-darwin-arm64@2.5.0': + resolution: {integrity: sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [darwin] + + '@parcel/watcher-darwin-x64@2.5.0': + resolution: {integrity: sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [darwin] + + '@parcel/watcher-freebsd-x64@2.5.0': + resolution: {integrity: sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [freebsd] + + '@parcel/watcher-linux-arm-glibc@2.5.0': + resolution: {integrity: sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm-musl@2.5.0': + resolution: {integrity: sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==} + engines: {node: '>= 10.0.0'} + cpu: [arm] + os: [linux] + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + resolution: {integrity: sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-arm64-musl@2.5.0': + resolution: {integrity: sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [linux] + + '@parcel/watcher-linux-x64-glibc@2.5.0': + resolution: {integrity: sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-linux-x64-musl@2.5.0': + resolution: {integrity: sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [linux] + + '@parcel/watcher-win32-arm64@2.5.0': + resolution: {integrity: sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==} + engines: {node: '>= 10.0.0'} + cpu: [arm64] + os: [win32] + + '@parcel/watcher-win32-ia32@2.5.0': + resolution: {integrity: sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==} + engines: {node: '>= 10.0.0'} + cpu: [ia32] + os: [win32] + + '@parcel/watcher-win32-x64@2.5.0': + resolution: {integrity: sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==} + engines: {node: '>= 10.0.0'} + cpu: [x64] + os: [win32] + + '@parcel/watcher@2.5.0': + resolution: {integrity: sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==} + engines: {node: '>= 10.0.0'} + '@rc-component/async-validator@5.0.4': resolution: {integrity: sha512-qgGdcVIF604M9EqjNF0hbUTz42bz/RDtxWdWuU5EQe3hi7M8ob54B6B35rOsvX5eSvIHIzT9iH1R3n+hk3CGfg==} engines: {node: '>=14.x'} @@ -568,14 +662,11 @@ packages: '@types/estree@1.0.6': resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/prop-types@15.7.14': - resolution: {integrity: sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==} + '@types/react-dom@19.0.1': + resolution: {integrity: sha512-hljHij7MpWPKF6u5vojuyfV0YA4YURsQG7KT6SzV0Zs2BXAtgdTxG6A229Ub/xiWV4w/7JL8fi6aAyjshH4meA==} - '@types/react-dom@18.3.2': - resolution: {integrity: sha512-Fqp+rcvem9wEnGr3RY8dYNvSQ8PoLqjZ9HLgaPUOjJJD120uDyOxOjc/39M4Kddp9JQCxpGQbnhVQF0C0ncYVg==} - - '@types/react@18.3.14': - resolution: {integrity: sha512-NzahNKvjNhVjuPBQ+2G7WlxstQ+47kXZNHlUvFakDViuIEfGY926GqhMueQFZ7woG+sPiQKlF36XfrIUVSUfFg==} + '@types/react@19.0.1': + resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==} '@vitejs/plugin-react@4.3.4': resolution: {integrity: sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==} @@ -589,6 +680,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + browserslist@4.24.2: resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -597,6 +692,10 @@ packages: caniuse-lite@1.0.30001687: resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==} + chokidar@4.0.1: + resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} + engines: {node: '>= 14.16.0'} + classnames@2.5.1: resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} @@ -624,18 +723,27 @@ packages: supports-color: optional: true + detect-libc@1.0.3: + resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} + engines: {node: '>=0.10'} + hasBin: true + electron-to-chromium@1.5.71: resolution: {integrity: sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==} - esbuild@0.21.5: - resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==} - engines: {node: '>=12'} + esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} hasBin: true escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} @@ -649,6 +757,21 @@ packages: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -665,13 +788,13 @@ packages: engines: {node: '>=6'} hasBin: true - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - lru-cache@5.1.1: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -680,12 +803,19 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + node-addon-api@7.1.1: + resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} + node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + postcss@8.4.49: resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} engines: {node: ^10 || ^12 || >=14} @@ -918,10 +1048,10 @@ packages: react: '>=16.9.0' react-dom: '>=16.9.0' - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} + react-dom@19.0.0: + resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} peerDependencies: - react: ^18.3.1 + react: ^19.0.0 react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} @@ -930,10 +1060,14 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} + react@19.0.0: + resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} engines: {node: '>=0.10.0'} + readdirp@4.0.2: + resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} + engines: {node: '>= 14.16.0'} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -945,8 +1079,13 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} + sass@1.82.0: + resolution: {integrity: sha512-j4GMCTa8elGyN9A7x7bEglx0VgSpNUG4W4wNedQ33wSMdnkqQCT8HTwOaVSV4e6yQovcu/3Oc4coJP/l0xhL2Q==} + engines: {node: '>=14.0.0'} + hasBin: true + + scheduler@0.25.0: + resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} scroll-into-view-if-needed@3.1.0: resolution: {integrity: sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==} @@ -969,6 +1108,10 @@ packages: resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==} engines: {node: '>=12.22'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + toggle-selection@1.0.6: resolution: {integrity: sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==} @@ -983,22 +1126,27 @@ packages: peerDependencies: browserslist: '>= 4.21.0' - vite@5.4.11: - resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==} - engines: {node: ^18.0.0 || >=20.0.0} + vite@6.0.3: + resolution: {integrity: sha512-Cmuo5P0ENTN6HxLSo6IHsjCLn/81Vgrp81oaiFFMRa8gGDj5xEjIcEpf2ZymZtZR8oU0P2JX5WuUp/rlXcHkAw==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + jiti: '>=1.21.0' less: '*' lightningcss: ^1.21.0 sass: '*' sass-embedded: '*' stylus: '*' sugarss: '*' - terser: ^5.4.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -1013,6 +1161,10 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} @@ -1028,24 +1180,24 @@ snapshots: dependencies: '@ctrl/tinycolor': 3.6.1 - '@ant-design/cssinjs-utils@1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ant-design/cssinjs-utils@1.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: - '@ant-design/cssinjs': 1.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@ant-design/cssinjs': 1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) '@babel/runtime': 7.26.0 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@ant-design/cssinjs@1.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ant-design/cssinjs@1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 '@emotion/hash': 0.8.0 '@emotion/unitless': 0.7.5 classnames: 2.5.1 csstype: 3.1.3 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) stylis: 4.3.4 '@ant-design/fast-color@2.0.6': @@ -1054,22 +1206,22 @@ snapshots: '@ant-design/icons-svg@4.4.2': {} - '@ant-design/icons@5.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@ant-design/icons@5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@ant-design/colors': 7.1.0 '@ant-design/icons-svg': 4.4.2 '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@ant-design/react-slick@1.1.2(react@18.3.1)': + '@ant-design/react-slick@1.1.2(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 json2mq: 0.2.0 - react: 18.3.1 + react: 19.0.0 resize-observer-polyfill: 1.5.1 throttle-debounce: 5.0.2 @@ -1193,73 +1345,76 @@ snapshots: '@emotion/unitless@0.7.5': {} - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.24.0': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.24.0': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.24.0': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.24.0': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.24.0': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.24.0': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.24.0': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.24.0': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.24.0': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.24.0': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.24.0': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.24.0': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.24.0': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.24.0': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.24.0': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.24.0': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.24.0': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.24.0': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.24.0': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-x64@0.24.0': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/sunos-x64@0.24.0': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-arm64@0.24.0': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-ia32@0.24.0': + optional: true + + '@esbuild/win32-x64@0.24.0': optional: true '@jridgewell/gen-mapping@0.3.5': @@ -1279,74 +1434,135 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@parcel/watcher-android-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-arm64@2.5.0': + optional: true + + '@parcel/watcher-darwin-x64@2.5.0': + optional: true + + '@parcel/watcher-freebsd-x64@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-arm64-musl@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-glibc@2.5.0': + optional: true + + '@parcel/watcher-linux-x64-musl@2.5.0': + optional: true + + '@parcel/watcher-win32-arm64@2.5.0': + optional: true + + '@parcel/watcher-win32-ia32@2.5.0': + optional: true + + '@parcel/watcher-win32-x64@2.5.0': + optional: true + + '@parcel/watcher@2.5.0': + dependencies: + detect-libc: 1.0.3 + is-glob: 4.0.3 + micromatch: 4.0.8 + node-addon-api: 7.1.1 + optionalDependencies: + '@parcel/watcher-android-arm64': 2.5.0 + '@parcel/watcher-darwin-arm64': 2.5.0 + '@parcel/watcher-darwin-x64': 2.5.0 + '@parcel/watcher-freebsd-x64': 2.5.0 + '@parcel/watcher-linux-arm-glibc': 2.5.0 + '@parcel/watcher-linux-arm-musl': 2.5.0 + '@parcel/watcher-linux-arm64-glibc': 2.5.0 + '@parcel/watcher-linux-arm64-musl': 2.5.0 + '@parcel/watcher-linux-x64-glibc': 2.5.0 + '@parcel/watcher-linux-x64-musl': 2.5.0 + '@parcel/watcher-win32-arm64': 2.5.0 + '@parcel/watcher-win32-ia32': 2.5.0 + '@parcel/watcher-win32-x64': 2.5.0 + optional: true + '@rc-component/async-validator@5.0.4': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/color-picker@2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/color-picker@2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@ant-design/fast-color': 2.0.6 '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/context@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/context@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@rc-component/mini-decimal@1.1.0': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/mutate-observer@1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/mutate-observer@1.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/portal@1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/portal@1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/qrcode@1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/qrcode@1.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/tour@1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/tour@1.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - '@rc-component/trigger@2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@rc-component/trigger@2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) '@rollup/rollup-android-arm-eabi@4.28.1': optional: true @@ -1477,79 +1693,76 @@ snapshots: '@types/estree@1.0.6': {} - '@types/prop-types@15.7.14': {} - - '@types/react-dom@18.3.2': + '@types/react-dom@19.0.1': dependencies: - '@types/react': 18.3.14 + '@types/react': 19.0.1 - '@types/react@18.3.14': + '@types/react@19.0.1': dependencies: - '@types/prop-types': 15.7.14 csstype: 3.1.3 - '@vitejs/plugin-react@4.3.4(vite@5.4.11)': + '@vitejs/plugin-react@4.3.4(vite@6.0.3(sass@1.82.0))': dependencies: '@babel/core': 7.26.0 '@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.26.0) '@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.26.0) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.4.11 + vite: 6.0.3(sass@1.82.0) transitivePeerDependencies: - supports-color - antd@5.22.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + antd@5.22.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@ant-design/colors': 7.1.0 - '@ant-design/cssinjs': 1.22.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ant-design/cssinjs-utils': 1.1.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ant-design/icons': 5.5.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@ant-design/react-slick': 1.1.2(react@18.3.1) + '@ant-design/cssinjs': 1.22.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/cssinjs-utils': 1.1.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/icons': 5.5.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@ant-design/react-slick': 1.1.2(react@19.0.0) '@babel/runtime': 7.26.0 '@ctrl/tinycolor': 3.6.1 - '@rc-component/color-picker': 2.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/mutate-observer': 1.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/qrcode': 1.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/tour': 1.15.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/color-picker': 2.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/mutate-observer': 1.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/qrcode': 1.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/tour': 1.15.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 copy-to-clipboard: 3.3.3 dayjs: 1.11.13 - rc-cascader: 3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-checkbox: 3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-collapse: 3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-drawer: 7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-dropdown: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-field-form: 2.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-image: 7.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-input: 1.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-input-number: 9.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-mentions: 2.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-menu: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-notification: 5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-pagination: 4.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-picker: 4.8.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-progress: 4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-rate: 2.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-segmented: 2.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-select: 14.16.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-slider: 11.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-steps: 6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-switch: 4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-table: 7.49.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tabs: 15.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-textarea: 1.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tooltip: 6.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tree: 5.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tree-select: 5.24.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-upload: 4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-cascader: 3.30.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-checkbox: 3.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-collapse: 3.9.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-dialog: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-drawer: 7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-dropdown: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-field-form: 2.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-image: 7.11.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-input-number: 9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-mentions: 2.17.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-notification: 5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-pagination: 4.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-picker: 4.8.3(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-progress: 4.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-rate: 2.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-segmented: 2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-slider: 11.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-steps: 6.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-switch: 4.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-table: 7.49.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tabs: 15.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-textarea: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tooltip: 6.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree-select: 5.24.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-upload: 4.8.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) scroll-into-view-if-needed: 3.1.0 throttle-debounce: 5.0.2 transitivePeerDependencies: @@ -1557,6 +1770,11 @@ snapshots: - luxon - moment + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + optional: true + browserslist@4.24.2: dependencies: caniuse-lite: 1.0.30001687 @@ -1566,6 +1784,10 @@ snapshots: caniuse-lite@1.0.30001687: {} + chokidar@4.0.1: + dependencies: + readdirp: 4.0.2 + classnames@2.5.1: {} compute-scroll-into-view@3.1.0: {} @@ -1584,36 +1806,45 @@ snapshots: dependencies: ms: 2.1.3 + detect-libc@1.0.3: + optional: true + electron-to-chromium@1.5.71: {} - esbuild@0.21.5: + esbuild@0.24.0: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 escalade@3.2.0: {} + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + optional: true + fsevents@2.3.3: optional: true @@ -1621,6 +1852,19 @@ snapshots: globals@11.12.0: {} + immutable@5.0.3: {} + + is-extglob@2.1.1: + optional: true + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + optional: true + + is-number@7.0.0: + optional: true + js-tokens@4.0.0: {} jsesc@3.0.2: {} @@ -1631,359 +1875,366 @@ snapshots: json5@2.2.3: {} - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - lru-cache@5.1.1: dependencies: yallist: 3.1.1 + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + optional: true + ms@2.1.3: {} nanoid@3.3.8: {} + node-addon-api@7.1.1: + optional: true + node-releases@2.0.18: {} picocolors@1.1.1: {} + picomatch@2.3.1: + optional: true + postcss@8.4.49: dependencies: nanoid: 3.3.8 picocolors: 1.1.1 source-map-js: 1.2.1 - rc-cascader@3.30.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-cascader@3.30.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-select: 14.16.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tree: 5.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-checkbox@3.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-checkbox@3.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-collapse@3.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-collapse@3.9.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-dialog@9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-dialog@9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-drawer@7.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-drawer@7.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-dropdown@4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-dropdown@4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-field-form@2.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-field-form@2.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 '@rc-component/async-validator': 5.0.4 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-image@7.11.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-image@7.11.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/portal': 1.1.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/portal': 1.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-dialog: 9.6.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-dialog: 9.6.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-input-number@9.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-input-number@9.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 '@rc-component/mini-decimal': 1.1.0 classnames: 2.5.1 - rc-input: 1.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-input@1.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-input@1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-mentions@2.17.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-mentions@2.17.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-input: 1.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-menu: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-textarea: 1.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-textarea: 1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-menu@9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-menu@9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-motion@2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-motion@2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-notification@5.6.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-notification@5.6.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-overflow@1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-overflow@1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-pagination@4.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-pagination@4.3.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-picker@4.8.3(dayjs@1.11.13)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-picker@4.8.3(dayjs@1.11.13)(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) optionalDependencies: dayjs: 1.11.13 - rc-progress@4.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-progress@4.0.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-rate@2.13.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-rate@2.13.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-resize-observer@1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-resize-observer@1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) resize-observer-polyfill: 1.5.1 - rc-segmented@2.5.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-segmented@2.5.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-select@14.16.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-select@14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-overflow: 1.3.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-virtual-list: 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-overflow: 1.3.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-slider@11.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-slider@11.1.7(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-steps@6.0.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-steps@6.0.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-switch@4.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-switch@4.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-table@7.49.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-table@7.49.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/context': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/context': 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-virtual-list: 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-tabs@15.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tabs@15.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-dropdown: 4.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-menu: 9.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-dropdown: 4.2.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-menu: 9.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-textarea@1.8.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-textarea@1.8.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-input: 1.6.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-input: 1.6.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-tooltip@6.2.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tooltip@6.2.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - '@rc-component/trigger': 2.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@rc-component/trigger': 2.2.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0) classnames: 2.5.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-tree-select@5.24.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tree-select@5.24.5(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-select: 14.16.4(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-tree: 5.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-select: 14.16.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-tree: 5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-tree@5.10.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-tree@5.10.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-motion: 2.9.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-virtual-list: 3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-motion: 2.9.3(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-virtual-list: 3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-upload@4.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-upload@4.8.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - rc-util@5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-util@5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) react-is: 18.3.1 - rc-virtual-list@3.16.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + rc-virtual-list@3.16.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: '@babel/runtime': 7.26.0 classnames: 2.5.1 - rc-resize-observer: 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - rc-util: 5.44.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + rc-resize-observer: 1.4.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + rc-util: 5.44.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + react: 19.0.0 + react-dom: 19.0.0(react@19.0.0) - react-dom@18.3.1(react@18.3.1): + react-dom@19.0.0(react@19.0.0): dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 + react: 19.0.0 + scheduler: 0.25.0 react-is@18.3.1: {} react-refresh@0.14.2: {} - react@18.3.1: - dependencies: - loose-envify: 1.4.0 + react@19.0.0: {} + + readdirp@4.0.2: {} regenerator-runtime@0.14.1: {} @@ -2014,9 +2265,15 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.28.1 fsevents: 2.3.3 - scheduler@0.23.2: + sass@1.82.0: dependencies: - loose-envify: 1.4.0 + chokidar: 4.0.1 + immutable: 5.0.3 + source-map-js: 1.2.1 + optionalDependencies: + '@parcel/watcher': 2.5.0 + + scheduler@0.25.0: {} scroll-into-view-if-needed@3.1.0: dependencies: @@ -2032,6 +2289,11 @@ snapshots: throttle-debounce@5.0.2: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + optional: true + toggle-selection@1.0.6: {} typescript@5.7.2: {} @@ -2042,12 +2304,13 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - vite@5.4.11: + vite@6.0.3(sass@1.82.0): dependencies: - esbuild: 0.21.5 + esbuild: 0.24.0 postcss: 8.4.49 rollup: 4.28.1 optionalDependencies: fsevents: 2.3.3 + sass: 1.82.0 yallist@3.1.1: {} diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index addf4ba..e625a47 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -1763,6 +1763,16 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memmap" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6585fd95e7bb50d6cc31e20d4cf9afb4e2ba16c5846fc76793f11218da9c475b" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "memoffset" version = "0.9.1" @@ -3445,6 +3455,8 @@ dependencies = [ name = "test-tauri" version = "0.1.0" dependencies = [ + "bitflags 2.6.0", + "memmap", "serde", "serde_json", "tauri", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index f20df20..8cd952c 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -23,4 +23,6 @@ tauri-plugin-shell = "2" serde = { version = "1", features = ["derive"] } serde_json = "1" thiserror = "2.0.4" +bitflags = "2.6.0" +memmap = "0.7.0" diff --git a/src-tauri/src/app_error.rs b/src-tauri/src/app_error.rs index e69de29..5b685ad 100644 --- a/src-tauri/src/app_error.rs +++ b/src-tauri/src/app_error.rs @@ -0,0 +1,20 @@ +use thiserror; + +#[derive(Debug, thiserror::Error)] +pub enum AppError { + #[error(transparent)] + Io(#[from] std::io::Error), + + // 未打开文件映射 + #[error("文件未打开!")] + NoFileOpened, +} + +impl serde::Serialize for AppError { + fn serialize(&self, serializer: S) -> Result + where + S: serde::ser::Serializer, + { + serializer.serialize_str(self.to_string().as_ref()) + } +} diff --git a/src-tauri/src/commands.rs b/src-tauri/src/commands.rs index 5febbb8..fe2f619 100644 --- a/src-tauri/src/commands.rs +++ b/src-tauri/src/commands.rs @@ -1,16 +1,74 @@ -use thiserror; - -#[derive(Debug, thiserror::Error)] -enum AppError { - #[error(transparent)] - Io(#[from] std::io::Error), +use crate::{app_error::AppError, services}; +use serde::Serialize; +#[tauri::command] +pub fn greet(name: &str) -> String { + format!("Hello, {}! You've been greeted from Rust!", name) +} +#[derive(Serialize)] +pub struct PeNodeTreeData { + title: String, + key: String, + children: Vec, } -impl serde::Serialize for AppError { - fn serialize(&self, serializer: S) -> Result - where - S: serde::ser::Serializer, - { - serializer.serialize_str(self.to_string().as_ref()) +// TODO: 获取PE节点树的JSON数据 +#[tauri::command] +pub fn command_get_file_pe_node_tree_data() -> Result, AppError> { + // 1. 如果全局内存映射句柄为空,则返回错误 + if unsafe { services::GLOBAL_MEMMAP_HANDLE.is_none() } { + return Err(AppError::NoFileOpened); + } + // 从文件路径中获取文件名 + let file_name: &str = unsafe { + let file_path = services::GLOBAL_FILE_PATH.as_ref().unwrap(); + let file_name = std::path::Path::new(file_path).file_name().unwrap(); + file_name.to_str().unwrap() + }; + let result = PeNodeTreeData { + title: format!("文件: {}", file_name), + key: "fileName".to_string(), + children: vec![ + PeNodeTreeData { + title: "DOS 头部".to_string(), + key: "DOS Header".to_string(), + children: vec![], // 空数组表示没有子节点 + }, + PeNodeTreeData { + title: "NT 头部".to_string(), + key: "NT Headers".to_string(), + children: vec![ + PeNodeTreeData { + title: "文件头部".to_string(), + key: "File Header".to_string(), + children: vec![], + }, + PeNodeTreeData { + title: "可选头部".to_string(), + key: "Optional Header".to_string(), + children: vec![PeNodeTreeData { + title: "数据目录".to_string(), + key: "Data Directories".to_string(), + children: vec![], + }], + }, + ], + }, + PeNodeTreeData { + title: "节区头部".to_string(), + key: "Section Headers".to_string(), + children: vec![], + }, + ], + }; + Ok(vec![result]) +} + +// 命令,打开文件 +#[tauri::command] +pub fn command_open_file(file_path: &str) -> Result<(), AppError> { + unsafe { + services::GLOBAL_MEMMAP_HANDLE = Some(services::file::mmap_mut_file(file_path)?); + services::GLOBAL_FILE_PATH = Some(file_path.to_string()); + Ok(()) } } diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index f91b35e..515ac62 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,14 +1,17 @@ // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ -#[tauri::command] -fn greet(name: &str) -> String { - format!("Hello, {}! You've been greeted from Rust!", name) -} +pub mod app_error; +pub mod commands; +pub mod pe_parse; +pub mod services; #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_shell::init()) - .invoke_handler(tauri::generate_handler![greet]) + .invoke_handler(tauri::generate_handler![ + commands::command_open_file, + commands::command_get_file_pe_node_tree_data + ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); } diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 176523a..5075516 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1,8 +1,6 @@ // Prevents additional console window on Windows in release, DO NOT REMOVE!! #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] -mod commands; -mod app_error; fn main() { test_tauri_lib::run() diff --git a/src-tauri/src/pe_parse/error.rs b/src-tauri/src/pe_parse/error.rs new file mode 100644 index 0000000..503316b --- /dev/null +++ b/src-tauri/src/pe_parse/error.rs @@ -0,0 +1,15 @@ +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum PEParseError { + #[error("无效的DOSMagic值")] + InvalidDOSMagic, + #[error("Invalid NT header signature")] + InvalidNTSignature, + #[error("Invalid optional header magic number")] + InvalidOptionalMagic, + #[error("Invalid optional header size")] + InvalidOptionalSize, + #[error("解析超出了文件范围")] + OutOfBounds +} \ No newline at end of file diff --git a/src-tauri/src/pe_parse/header.rs b/src-tauri/src/pe_parse/header.rs new file mode 100644 index 0000000..0c4c9f1 --- /dev/null +++ b/src-tauri/src/pe_parse/header.rs @@ -0,0 +1,113 @@ +use super::types::*; +use bitflags::bitflags; +#[repr(C)] +pub struct ImageDosHeader { + pub e_magic: u16, // Magic number 固定值 0x5A4D + pub e_cblp: u16, + pub e_cp: u16, + pub e_crlc: u16, + pub e_cparhdr: u16, + pub e_minalloc: u16, + pub e_maxalloc: u16, + pub e_ss: u16, + pub e_sp: u16, + pub e_csum: u16, + pub e_ip: u16, + pub e_cs: u16, + pub e_lfarlc: u16, + pub e_ovno: u16, + pub e_res: [u16; 4], + pub e_oemid: u16, + pub e_oeminfo: u16, + pub e_res2: [u16; 10], + pub e_lfanew: Offset, // File address of new exe header nt头的偏移 +} + +#[repr(C)] +pub struct ImageNTHeaders32 { + pub signature: u32, + pub file_header: ImageFileHeader, + pub optional_header: ImageOptionalHeader32, +} + +#[repr(C)] +pub struct ImageFileHeader { + pub machine: u16, + pub number_of_sections: u16, + pub time_date_stamp: u32, + pub pointer_to_symbol_table: Offset, + pub number_of_symbols: u32, + pub size_of_optional_header: u16, + pub characteristics: FileCharacteristics, +} +bitflags! { + #[repr(C)] + pub struct FileCharacteristics: u16 { + const RELOCS_STRIPPED = 0x0001; + const EXECUTABLE_IMAGE = 0x0002; + const LINE_NUMS_STRIPPED = 0x0004; + const LOCAL_SYMS_STRIPPED = 0x0008; + const AGGRESSIVE_WS_TRIM = 0x0010; + const LARGE_ADDRESS_AWARE = 0x0020; + const BYTES_REVERSED_LO = 0x0080; + const MACHINE_32BIT = 0x0100; + const DEBUG_STRIPPED = 0x0200; + const REMOVABLE_RUN_FROM_SWAP = 0x0400; + const NET_RUN_FROM_SWAP = 0x0800; + const SYSTEM = 0x1000; + const DLL = 0x2000; + const UP_SYSTEM_ONLY = 0x4000; + const BYTES_REVERSED_HI = 0x8000; + } + #[repr(C)] + pub struct DLLCharacteristics: u16 { + const RESERVED1 = 0x0001; + const RESERVED2 = 0x0002; + const RESERVED4 = 0x0004; + const RESERVED8 = 0x0008; + const HIGH_ENTROPY_VA = 0x0020; + const DYNAMIC_BASE = 0x0040; + const FORCE_INTEGRITY = 0x0080; + const NX_COMPAT = 0x0100; + const NO_ISOLATION = 0x0200; + const NO_SEH = 0x0400; + const NO_BIND = 0x0800; + const APPCONTAINER = 0x1000; + const WDM_DRIVER = 0x2000; + const GUARD_CF = 0x4000; + const TERMINAL_SERVER_AWARE = 0x8000; + } +} +#[repr(C)] +pub struct ImageOptionalHeader32 { + pub magic: u16, + pub major_linker_version: u8, + pub minor_linker_version: u8, + pub size_of_code: u32, + pub size_of_initialized_data: u32, + pub size_of_uninitialized_data: u32, + pub address_of_entry_point: RVA, + pub base_of_code: RVA, + pub base_of_data: RVA, + pub image_base: u32, + pub section_alignment: u32, + pub file_alignment: u32, + pub major_operating_system_version: u16, + pub minor_operating_system_version: u16, + pub major_image_version: u16, + pub minor_image_version: u16, + pub major_subsystem_version: u16, + pub minor_subsystem_version: u16, + pub win32_version_value: u32, + pub size_of_image: u32, + pub size_of_headers: u32, + pub checksum: u32, + pub subsystem: u16, + pub dll_characteristics: DLLCharacteristics, + pub size_of_stack_reserve: u32, + pub size_of_stack_commit: u32, + pub size_of_heap_reserve: u32, + pub size_of_heap_commit: u32, + pub loader_flags: u32, + pub number_of_rva_and_sizes: u32, +} diff --git a/src-tauri/src/pe_parse/mod.rs b/src-tauri/src/pe_parse/mod.rs new file mode 100644 index 0000000..54df619 --- /dev/null +++ b/src-tauri/src/pe_parse/mod.rs @@ -0,0 +1,4 @@ +pub mod header; +pub mod types; +pub mod pe; +pub mod error; \ No newline at end of file diff --git a/src-tauri/src/pe_parse/pe.rs b/src-tauri/src/pe_parse/pe.rs new file mode 100644 index 0000000..ac82222 --- /dev/null +++ b/src-tauri/src/pe_parse/pe.rs @@ -0,0 +1,35 @@ +use std::ops::{Deref, DerefMut}; +use super::{error::PEParseError, header::*}; + +pub trait PE: Deref + DerefMut + Sized { + /// Get a reference to a type at a given offset. + fn get_ref(&self, offset: usize) -> Result<&T, PEParseError> { + let len = std::mem::size_of::(); + if offset + len > self.len() { + return Err(PEParseError::OutOfBounds); + } + let ptr = self.as_ptr().wrapping_offset(offset as isize) as *const T; + Ok(unsafe { &*ptr }) + } + + /// Get a mutable reference to a type at a given offset. + fn get_mut(&mut self, offset: usize) -> Result<&mut T, PEParseError> { + let len = std::mem::size_of::(); + if offset + len > self.len() { + return Err(PEParseError::OutOfBounds); + } + let ptr = self.as_mut_ptr().wrapping_offset(offset as isize) as *mut T; + Ok(unsafe { &mut *ptr }) + } + + /// Get the DOS header without verifying its contents. + fn get_dos_header(&self) -> Result<&ImageDosHeader, PEParseError> { + let result = self.get_ref::(0)?; + Ok(result) + } + /// Get the DOS header without mutating its contents. + fn get_dos_header_mut(&mut self) -> Result<&mut ImageDosHeader, PEParseError> { + let result = self.get_mut::(0)?; + Ok(result) + } +} diff --git a/src-tauri/src/pe_parse/types.rs b/src-tauri/src/pe_parse/types.rs new file mode 100644 index 0000000..385bff0 --- /dev/null +++ b/src-tauri/src/pe_parse/types.rs @@ -0,0 +1,4 @@ +#[repr(C)] +pub struct Offset(pub u32); + +pub struct RVA(pub u32); \ No newline at end of file diff --git a/src-tauri/src/services/file.rs b/src-tauri/src/services/file.rs new file mode 100644 index 0000000..5ed04b0 --- /dev/null +++ b/src-tauri/src/services/file.rs @@ -0,0 +1,15 @@ +use memmap::*; + +// TODO: 打开文件,并将文件映射到内存 +pub fn mmap_mut_file(file_path: &str) -> Result { + let file = std::fs::OpenOptions::new() + .read(true) + .write(true) + .open(file_path)?; + + unsafe { + MmapOptions::new() + .map_mut(&file) + .map_err(|e| std::io::Error::new(std::io::ErrorKind::Other, e.to_string())) + } +} diff --git a/src-tauri/src/services/mod.rs b/src-tauri/src/services/mod.rs new file mode 100644 index 0000000..fe427b6 --- /dev/null +++ b/src-tauri/src/services/mod.rs @@ -0,0 +1,9 @@ +use memmap::MmapMut; + +pub mod file; + +// 映射到内存的文件句柄 +pub static mut GLOBAL_MEMMAP_HANDLE: Option = None; + +// 全局文件路径 +pub static mut GLOBAL_FILE_PATH: Option = None; \ No newline at end of file diff --git a/src/App.css b/src/App.css index 85f7a4a..3c925ac 100644 --- a/src/App.css +++ b/src/App.css @@ -1,116 +1,7 @@ -.logo.vite:hover { - filter: drop-shadow(0 0 2em #747bff); -} - -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafb); -} -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -.container { +body { margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: 0.75s; -} - -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); -} - -.row { - display: flex; - justify-content: center; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} - -a:hover { - color: #535bf2; -} - -h1 { - text-align: center; -} - -input, -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - color: #0f0f0f; - background-color: #ffffff; - transition: border-color 0.25s; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2); -} - -button { - cursor: pointer; -} - -button:hover { - border-color: #396cd8; -} -button:active { - border-color: #396cd8; - background-color: #e8e8e8; -} - -input, -button { - outline: none; -} - -#greet-input { - margin-right: 5px; -} - -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; - } - - a:hover { - color: #24c8db; - } - - input, - button { - color: #ffffff; - background-color: #0f0f0f98; - } - button:active { - background-color: #0f0f0f69; - } + } +.ant-layout{ + background-color: #e5e5e5; +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index 9855368..fddd5d5 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,50 +1,11 @@ -import { useState } from "react"; -import reactLogo from "./assets/react.svg"; -import { invoke } from "@tauri-apps/api/core"; +// import MainLayout from "./layouts/MainLayout"; +import MainPage from "./pages/MainPage"; + import "./App.css"; function App() { - const [greetMsg, setGreetMsg] = useState(""); - const [name, setName] = useState(""); - - async function greet() { - // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ - setGreetMsg(await invoke("greet", { name })); - } - return ( -
-

Welcome to Tauri + React

- - -

Click on the Tauri, Vite, and React logos to learn more.

- -
{ - e.preventDefault(); - greet(); - }} - > - setName(e.currentTarget.value)} - placeholder="Enter a name..." - /> - -
-

{greetMsg}

-
+ ); } diff --git a/src/components/DosHeader/DosHeader.module.scss b/src/components/DosHeader/DosHeader.module.scss new file mode 100644 index 0000000..54e9c35 --- /dev/null +++ b/src/components/DosHeader/DosHeader.module.scss @@ -0,0 +1,8 @@ +.root { + margin: 8px; + margin-top: 0; + height: 100%; + background-color: white; + border-radius: 5px; + padding: 16px; +} \ No newline at end of file diff --git a/src/components/DosHeader/DosHeader.tsx b/src/components/DosHeader/DosHeader.tsx new file mode 100644 index 0000000..0e21752 --- /dev/null +++ b/src/components/DosHeader/DosHeader.tsx @@ -0,0 +1,230 @@ +import styles from "./DosHeader.module.scss"; +import { Flex } from "antd"; +import React, { useContext, useEffect, useRef, useState } from "react"; +import type { GetRef, InputRef, TableProps } from "antd"; +import { Button, Form, Input, Popconfirm, Table } from "antd"; + +type FormInstance = GetRef>; + +const EditableContext = React.createContext | null>(null); + +interface Item { + key: string; + name: string; + age: string; + address: string; +} + +interface EditableRowProps { + index: number; +} + +const EditableRow: React.FC = ({ index, ...props }) => { + const [form] = Form.useForm(); + return ( +
+ + + +
+ ); +}; + +interface EditableCellProps { + title: React.ReactNode; + editable: boolean; + dataIndex: keyof Item; + record: Item; + handleSave: (record: Item) => void; +} + +const EditableCell: React.FC> = ({ + title, + editable, + children, + dataIndex, + record, + handleSave, + ...restProps +}) => { + const [editing, setEditing] = useState(false); + const inputRef = useRef(null); + const form = useContext(EditableContext)!; + + useEffect(() => { + if (editing) { + inputRef.current?.focus(); + } + }, [editing]); + + const toggleEdit = () => { + setEditing(!editing); + form.setFieldsValue({ [dataIndex]: record[dataIndex] }); + }; + + const save = async () => { + try { + const values = await form.validateFields(); + + toggleEdit(); + handleSave({ ...record, ...values }); + } catch (errInfo) { + console.log("Save failed:", errInfo); + } + }; + + let childNode = children; + + if (editable) { + childNode = editing ? ( + + + + ) : ( +
+ {children} +
+ ); + } + + return {childNode}; +}; + +interface DataType { + key: React.Key; + name: string; + age: string; + address: string; +} + +type ColumnTypes = Exclude["columns"], undefined>; + +const App: React.FC = () => { + const [dataSource, setDataSource] = useState([ + { + key: "0", + name: "Edward King 0", + age: "32", + address: "London, Park Lane no. 0", + }, + { + key: "1", + name: "Edward King 1", + age: "32", + address: "London, Park Lane no. 1", + }, + ]); + + const [count, setCount] = useState(2); + + const handleDelete = (key: React.Key) => { + const newData = dataSource.filter((item) => item.key !== key); + setDataSource(newData); + }; + + const defaultColumns: (ColumnTypes[number] & { + editable?: boolean; + dataIndex: string; + })[] = [ + { + title: "name", + dataIndex: "name", + width: "30%", + editable: true, + }, + { + title: "age", + dataIndex: "age", + }, + { + title: "address", + dataIndex: "address", + }, + { + title: "operation", + dataIndex: "operation", + render: (_, record) => + dataSource.length >= 1 ? ( + handleDelete(record.key)} + > + Delete + + ) : null, + }, + ]; + + const handleAdd = () => { + const newData: DataType = { + key: count, + name: `Edward King ${count}`, + age: "32", + address: `London, Park Lane no. ${count}`, + }; + setDataSource([...dataSource, newData]); + setCount(count + 1); + }; + + const handleSave = (row: DataType) => { + const newData = [...dataSource]; + const index = newData.findIndex((item) => row.key === item.key); + const item = newData[index]; + newData.splice(index, 1, { + ...item, + ...row, + }); + setDataSource(newData); + }; + + const components = { + body: { + row: EditableRow, + cell: EditableCell, + }, + }; + + const columns = defaultColumns.map((col) => { + if (!col.editable) { + return col; + } + return { + ...col, + onCell: (record: DataType) => ({ + record, + editable: col.editable, + dataIndex: col.dataIndex, + title: col.title, + handleSave, + }), + }; + }); + + return ( + + components={components} + rowClassName={() => "editable-row"} + bordered + style={{ width: "100%" }} + dataSource={dataSource} + columns={columns as ColumnTypes} + pagination={false} + /> + ); +}; + +export default function DosHeader() { + return ( + + + + ); +} diff --git a/src/components/side_tree/SideTree.module.scss b/src/components/side_tree/SideTree.module.scss new file mode 100644 index 0000000..84c3eb1 --- /dev/null +++ b/src/components/side_tree/SideTree.module.scss @@ -0,0 +1,8 @@ +.root { + background-color: white; + min-height: 500px; + width: 100%; + margin: 8px; + margin-top: 0; + border-radius: 5px; +} \ No newline at end of file diff --git a/src/components/side_tree/SideTree.tsx b/src/components/side_tree/SideTree.tsx new file mode 100644 index 0000000..aa278b7 --- /dev/null +++ b/src/components/side_tree/SideTree.tsx @@ -0,0 +1,112 @@ +import styles from "./SideTree.module.scss"; +import { Flex } from "antd"; +import { Tree } from "antd"; +import { DownOutlined } from "@ant-design/icons"; +import type { TreeProps } from "antd"; +import { useEffect, useState } from "react"; + +// const treeData: TreeDataNode[] = [ +// { +// title: "文件: Test.exe", +// key: "0-0", +// children: [ +// { +// title: "Dos 头部", +// key: "0-0-0", +// }, +// { +// title: "Nt 头部", +// key: "0-0-1", +// children: [ +// { +// title: "文件头部", +// key: "0-0-1-0", +// }, +// { +// title: "可选头部", +// key: "0-0-2-0", +// children: [ +// { +// title: "数据目录", +// key: "0-0-1-1", +// }, +// ], +// }, +// ], +// }, +// { +// title: "节 头部", +// key: "0-0-2", +// }, +// { +// title: "导入目录", +// key: "0-0-3", +// }, +// { +// title: "资源目录", +// key: "0-0-4", +// }, +// { +// title: "地址转换", +// key: "0-0-5", +// }, +// { +// title: "依赖性分析", +// key: "0-0-6", +// }, +// ], +// }, +// ]; + +export default function SiderTree({ treeData, defaultSelectedKey }) { + // 展开的节点 + const [expandedKeys, setExpandedKeys] = useState([]); + + // 受控 选择的节点 + const [selectedKey, setSelectedKey] = useState(defaultSelectedKey); + + const onSelect: TreeProps["onSelect"] = (selectedKeys, info) => { + console.log("selected", selectedKeys, info); + setSelectedKey(selectedKeys[0] as any); + }; + + const onExpand: TreeProps["onExpand"] = (_expandedKeys) => { + setExpandedKeys(_expandedKeys as any); + }; + + // 每次 treeData 变化时,更新 expandedKeys + useEffect(() => { + // 递归获取所有的 key + const getKeys = (nodes) => { + const keys = nodes.map((node) => node.key); + nodes.forEach((node) => { + if (node.children) { + keys.push(...getKeys(node.children)); + } + }); + return keys; + }; + setExpandedKeys(getKeys(treeData)); + // 设置默认选中的节点 + setSelectedKey(defaultSelectedKey); + }, [treeData]); + console.log("selectedKey", selectedKey); + + return ( + + } + onSelect={onSelect} + onExpand={onExpand} + expandedKeys={expandedKeys} + /> + + ); +} diff --git a/src/pages/MainPage.module.scss b/src/pages/MainPage.module.scss new file mode 100644 index 0000000..97eebbe --- /dev/null +++ b/src/pages/MainPage.module.scss @@ -0,0 +1,25 @@ +.mainLayout { + display: flex; + height: 100vh; + +} + + +.sider { + width: 250px; + height: 100%; + margin: 8px; + margin-top: 0; + padding: 8px; + background-color: white; + // 圆角 + border-radius: 5px; +} +.header { + margin: 8px; + padding: 8px 20px; + background-color: white; + height: 55px; + // 圆角 + border-radius: 5px; +} \ No newline at end of file diff --git a/src/pages/MainPage.tsx b/src/pages/MainPage.tsx new file mode 100644 index 0000000..f5b5d32 --- /dev/null +++ b/src/pages/MainPage.tsx @@ -0,0 +1,55 @@ +import styles from "./MainPage.module.scss"; +import { useEffect, useState } from "react"; +import { Layout, Flex, Button } from "antd"; +import { listen } from "@tauri-apps/api/event"; +import { invoke } from "@tauri-apps/api/core"; +const { Content } = Layout; +import { SaveOutlined } from "@ant-design/icons"; +import SiderTree from "../components/side_tree/SideTree"; +import DosHeader from "../components/DosHeader/DosHeader"; + +export default function MainPage() { + const [treeData, setTreeData] = useState([]); + const [filePath, setFilePath] = useState(""); + + useEffect(() => { + const unlisten = listen<{ paths: Array }>( + "tauri://drag-drop", + (event) => { + const filePath = event.payload.paths[0]; + console.log("file path:", filePath); + setFilePath(filePath); + invoke("command_open_file", { filePath }).then(() => { + invoke("command_get_file_pe_node_tree_data").then((res) => { + console.log("tree nodes:", res); + setTreeData(res as any); + }); + }); + } + ); + return () => { + unlisten.then((f) => f()); + }; + }, []); + + return ( + + + + + + + + + + + + + + ); +} diff --git a/tsconfig.json b/tsconfig.json index a7fc6fb..e5b04e4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -13,9 +13,9 @@ "isolatedModules": true, "noEmit": true, "jsx": "react-jsx", - + "noImplicitAny": false, /* Linting */ - "strict": true, + "strict": false, "noUnusedLocals": true, "noUnusedParameters": true, "noFallthroughCasesInSwitch": true