From 6d442ed30bb7bf29c423888e8df371329447c34f Mon Sep 17 00:00:00 2001 From: wuyanchen <307378529@qq.com> Date: Thu, 11 Dec 2025 14:47:27 +0800 Subject: [PATCH] =?UTF-8?q?=C2=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 11 - .vscode/extensions.json | 3 + README.md | 2 +- index.html | 13 + package-lock.json | 1541 +++++++++++++++++++++ package.json | 26 + public/img/flare.png | Bin 0 -> 24403 bytes public/vite.svg | 1 + src/App.vue | 32 + src/assets/vue.svg | 1 + src/components/helloworld/HelloWorld.less | 0 src/components/helloworld/HelloWorld.ts | 14 + src/components/helloworld/HelloWorld.vue | 40 + src/main.ts | 21 + src/pages/index/Index.less | 182 +++ src/pages/index/Index.ts | 211 +++ src/pages/index/Index.vue | 58 + src/router/index.ts | 24 + src/style.css | 79 ++ src/vite-env.d.ts | 1 + tsconfig.app.json | 21 + tsconfig.json | 7 + tsconfig.node.json | 25 + vite.config.ts | 14 + 24 files changed, 2315 insertions(+), 12 deletions(-) create mode 100644 .vscode/extensions.json create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/img/flare.png create mode 100644 public/vite.svg create mode 100644 src/App.vue create mode 100644 src/assets/vue.svg create mode 100644 src/components/helloworld/HelloWorld.less create mode 100644 src/components/helloworld/HelloWorld.ts create mode 100644 src/components/helloworld/HelloWorld.vue create mode 100644 src/main.ts create mode 100644 src/pages/index/Index.less create mode 100644 src/pages/index/Index.ts create mode 100644 src/pages/index/Index.vue create mode 100644 src/router/index.ts create mode 100644 src/style.css create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.gitignore b/.gitignore index e78baed..ceaea36 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,3 @@ -# ---> Vue -# gitignore template for Vue.js projects -# -# Recommended template: Node.gitignore - -# TODO: where does this rule come from? -docs/_book - -# TODO: where does this rule come from? -test/ - # ---> Node # Logs logs diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a7cea0b --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["Vue.volar"] +} diff --git a/README.md b/README.md index 12530bc..583be1f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ # xysite -H5 3D项目 展示官网。 \ No newline at end of file +xy88的官网 \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..cad5524 --- /dev/null +++ b/index.html @@ -0,0 +1,13 @@ + + + + + + + 3D案例 + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0c8f3e3 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1541 @@ +{ + "name": "xysite", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "xysite", + "version": "0.0.0", + "dependencies": { + "@babylonjs/core": "^7.54.0", + "vant": "^4.9.18", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@types/node": "^22.13.10", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/tsconfig": "^0.7.0", + "less": "^4.2.2", + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vue-tsc": "^2.2.4" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.10", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.10.tgz", + "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==", + "dependencies": { + "@babel/types": "^7.26.10" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.10", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.10.tgz", + "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babylonjs/core": { + "version": "7.54.0", + "resolved": "https://registry.npmmirror.com/@babylonjs/core/-/core-7.54.0.tgz", + "integrity": "sha512-K9NvHkmJD42/x1X8ZrFbLfwR/j3S4wdrpWrPDVNjS7+kDb4KKgqRDnmXHnigAPh5ddxJT+6DbtLyRmlzdQUZug==" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz", + "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.1.tgz", + "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz", + "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.1.tgz", + "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz", + "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz", + "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz", + "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz", + "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz", + "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz", + "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz", + "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz", + "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz", + "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz", + "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz", + "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz", + "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz", + "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz", + "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz", + "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz", + "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz", + "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz", + "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz", + "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz", + "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz", + "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz", + "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz", + "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz", + "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz", + "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz", + "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz", + "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz", + "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz", + "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz", + "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz", + "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz", + "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz", + "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz", + "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz", + "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz", + "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz", + "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz", + "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz", + "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz", + "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "22.13.10", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-22.13.10.tgz", + "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "dev": true, + "dependencies": { + "undici-types": "~6.20.0" + } + }, + "node_modules/@vant/popperjs": { + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz", + "integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==" + }, + "node_modules/@vant/use": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz", + "integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==", + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.2.3", + "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.3.tgz", + "integrity": "sha512-IYSLEQj4LgZZuoVpdSUCw3dIynTWQgPlaRP6iAvMle4My0HdYwr5g5wQAfwOeHQBmYwEkqF70nRpSilr6PoUDg==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0 || ^6.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.12.tgz", + "integrity": "sha512-RLrFdXEaQBWfSnYGVxvR2WrO6Bub0unkdHYIdC31HzIEqATIuuhRRzYu76iGPZ6OtA4Au1SnW0ZwIqPP217YhA==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.12" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.12.tgz", + "integrity": "sha512-bUFIKvn2U0AWojOaqf63ER0N/iHIBYZPpNGogfLPQ68F5Eet6FnLlyho7BS0y2HJ1jFhSif7AcuTx1TqsCzRzw==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.12", + "resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.12.tgz", + "integrity": "sha512-HJB73OTJDgPc80K30wxi3if4fSsZZAOScbj2fcicMuOPoOkcf9NNAINb33o+DzhBdF9xTKC1gnPmIRDous5S0g==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.12", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", + "dependencies": { + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, + "node_modules/@vue/language-core": { + "version": "2.2.8", + "resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.2.8.tgz", + "integrity": "sha512-rrzB0wPGBvcwaSNRriVWdNAbHQWSf0NlGqgKHK5mEkXpefjUlVRP62u03KvwZpvKVjRnBIQ/Lwre+Mx9N6juUQ==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.11", + "@vue/compiler-dom": "^3.5.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.5.0", + "alien-signals": "^1.0.3", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.13.tgz", + "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", + "dependencies": { + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.13.tgz", + "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", + "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", + "dependencies": { + "@vue/reactivity": "3.5.13", + "@vue/runtime-core": "3.5.13", + "@vue/shared": "3.5.13", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.13.tgz", + "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", + "dependencies": { + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "vue": "3.5.13" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==" + }, + "node_modules/@vue/tsconfig": { + "version": "0.7.0", + "resolved": "https://registry.npmmirror.com/@vue/tsconfig/-/tsconfig-0.7.0.tgz", + "integrity": "sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==", + "dev": true, + "peerDependencies": { + "typescript": "5.x", + "vue": "^3.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue": { + "optional": true + } + } + }, + "node_modules/alien-signals": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-1.0.4.tgz", + "integrity": "sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmmirror.com/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmmirror.com/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/esbuild": { + "version": "0.25.1", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.1.tgz", + "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.1", + "@esbuild/android-arm": "0.25.1", + "@esbuild/android-arm64": "0.25.1", + "@esbuild/android-x64": "0.25.1", + "@esbuild/darwin-arm64": "0.25.1", + "@esbuild/darwin-x64": "0.25.1", + "@esbuild/freebsd-arm64": "0.25.1", + "@esbuild/freebsd-x64": "0.25.1", + "@esbuild/linux-arm": "0.25.1", + "@esbuild/linux-arm64": "0.25.1", + "@esbuild/linux-ia32": "0.25.1", + "@esbuild/linux-loong64": "0.25.1", + "@esbuild/linux-mips64el": "0.25.1", + "@esbuild/linux-ppc64": "0.25.1", + "@esbuild/linux-riscv64": "0.25.1", + "@esbuild/linux-s390x": "0.25.1", + "@esbuild/linux-x64": "0.25.1", + "@esbuild/netbsd-arm64": "0.25.1", + "@esbuild/netbsd-x64": "0.25.1", + "@esbuild/openbsd-arm64": "0.25.1", + "@esbuild/openbsd-x64": "0.25.1", + "@esbuild/sunos-x64": "0.25.1", + "@esbuild/win32-arm64": "0.25.1", + "@esbuild/win32-ia32": "0.25.1", + "@esbuild/win32-x64": "0.25.1" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "optional": true + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmmirror.com/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmmirror.com/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/less": { + "version": "4.2.2", + "resolved": "https://registry.npmmirror.com/less/-/less-4.2.2.tgz", + "integrity": "sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmmirror.com/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmmirror.com/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/rollup": { + "version": "4.36.0", + "resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.36.0.tgz", + "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.36.0", + "@rollup/rollup-android-arm64": "4.36.0", + "@rollup/rollup-darwin-arm64": "4.36.0", + "@rollup/rollup-darwin-x64": "4.36.0", + "@rollup/rollup-freebsd-arm64": "4.36.0", + "@rollup/rollup-freebsd-x64": "4.36.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.36.0", + "@rollup/rollup-linux-arm-musleabihf": "4.36.0", + "@rollup/rollup-linux-arm64-gnu": "4.36.0", + "@rollup/rollup-linux-arm64-musl": "4.36.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.36.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0", + "@rollup/rollup-linux-riscv64-gnu": "4.36.0", + "@rollup/rollup-linux-s390x-gnu": "4.36.0", + "@rollup/rollup-linux-x64-gnu": "4.36.0", + "@rollup/rollup-linux-x64-musl": "4.36.0", + "@rollup/rollup-win32-arm64-msvc": "4.36.0", + "@rollup/rollup-win32-ia32-msvc": "4.36.0", + "@rollup/rollup-win32-x64-msvc": "4.36.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmmirror.com/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "optional": true + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmmirror.com/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "optional": true + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmmirror.com/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "node_modules/vant": { + "version": "4.9.18", + "resolved": "https://registry.npmmirror.com/vant/-/vant-4.9.18.tgz", + "integrity": "sha512-1bmWv/G0xz45btPqSasgv4TUdTqCneyFfnrQJ3xgerGvfTC5aP/rpO4wJb5FItCZjaSw5+9FNBj2Tz6n9TLXYA==", + "dependencies": { + "@vant/popperjs": "^1.3.0", + "@vant/use": "^1.6.0", + "@vue/shared": "^3.5.13" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vite": { + "version": "6.2.2", + "resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.2.tgz", + "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.25.0", + "postcss": "^8.5.3", + "rollup": "^4.30.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@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.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true + }, + "node_modules/vue": { + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz", + "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", + "dependencies": { + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-sfc": "3.5.13", + "@vue/runtime-dom": "3.5.13", + "@vue/server-renderer": "3.5.13", + "@vue/shared": "3.5.13" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.2.8", + "resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.2.8.tgz", + "integrity": "sha512-jBYKBNFADTN+L+MdesNX/TB3XuDSyaWynKMDgR+yCSln0GQ9Tfb7JS2lr46s2LiFUT1WsmfWsSvIElyxzOPqcQ==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.11", + "@vue/language-core": "2.2.8" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..37fe8c7 --- /dev/null +++ b/package.json @@ -0,0 +1,26 @@ +{ + "name": "xysite", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vue-tsc -b && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@babylonjs/core": "^7.54.0", + "vant": "^4.9.18", + "vue": "^3.5.13", + "vue-router": "^4.5.0" + }, + "devDependencies": { + "@types/node": "^22.13.10", + "@vitejs/plugin-vue": "^5.2.1", + "@vue/tsconfig": "^0.7.0", + "less": "^4.2.2", + "typescript": "~5.7.2", + "vite": "^6.2.0", + "vue-tsc": "^2.2.4" + } +} diff --git a/public/img/flare.png b/public/img/flare.png new file mode 100644 index 0000000000000000000000000000000000000000..3a7991117d3c92ade668f8dba4852d5f63cea5ab GIT binary patch literal 24403 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 literal 0 HcmV?d00001 diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..d89bb7e --- /dev/null +++ b/src/App.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/src/assets/vue.svg b/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/components/helloworld/HelloWorld.less b/src/components/helloworld/HelloWorld.less new file mode 100644 index 0000000..e69de29 diff --git a/src/components/helloworld/HelloWorld.ts b/src/components/helloworld/HelloWorld.ts new file mode 100644 index 0000000..a0f6ca5 --- /dev/null +++ b/src/components/helloworld/HelloWorld.ts @@ -0,0 +1,14 @@ +import { defineComponent } from 'vue' + +export default defineComponent({ + name: 'HelloWorld', + // setup(props, context) { + setup() { + // const renderCanvasRef = ref() + // const isPopupViewChangeOption = ref(false) + // const buttonsColorStatus = ref>([true, false, false, false]) + + return { + } + } +}) diff --git a/src/components/helloworld/HelloWorld.vue b/src/components/helloworld/HelloWorld.vue new file mode 100644 index 0000000..294a7e2 --- /dev/null +++ b/src/components/helloworld/HelloWorld.vue @@ -0,0 +1,40 @@ + + + + + + + diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..a265a53 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,21 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' + + +import router from './router' + +// 1. 引入你需要的Vant组件 +import * as vant from 'vant' +// 2. 引入Vant组件样式 +import 'vant/lib/index.css' + + + +const app = createApp(App) + +app.use(router) + +app.use(vant) + +app.mount('#app') diff --git a/src/pages/index/Index.less b/src/pages/index/Index.less new file mode 100644 index 0000000..9fffd91 --- /dev/null +++ b/src/pages/index/Index.less @@ -0,0 +1,182 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Helvetica Neue', Arial, sans-serif; + line-height: 1.6; + color: #fff; + background-color: #121212; + overflow: hidden; +} + +/* 导航栏 */ +.nav { + background-color: rgba(30, 30, 30, 0.9); + position: fixed; + top: 0; + left: 0; + width: 100%; + z-index: 1000; + padding: 1rem 0; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +.nav__list { + list-style-type: none; + display: flex; + justify-content: center; +} + +.nav__item { + margin: 0 1.5rem; +} + +.nav__link { + color: #fff; + text-decoration: none; + transition: color 0.3s ease; + user-select: none; +} + +.nav__link:hover { + color: #aaa; +} + +/* 3D 场景容器 */ +.canvas3d { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100vh; + z-index: -1; +} + +/* 主视觉区域 */ +.hero { + height: 100vh; + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + text-align: center; + color: #fff; + text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); +} + +.hero__title { + font-size: 3.5rem; + margin-bottom: 1rem; + user-select: none; +} + +.hero__subtitle { + font-size: 1.5rem; + margin-bottom: 2rem; + user-select: none; +} + +.hero__btn { + background-color: #007aff; + color: white; + padding: 1rem 2rem; + border: none; + border-radius: 5px; + text-decoration: none; + font-size: 1.2rem; + transition: background-color 0.3s ease; + user-select: none; +} + +.hero__btn:hover { + background-color: #0056b3; +} + +/* 特色介绍区域 */ +.features { + position: relative; + padding: 5rem 0; + text-align: center; + background-color: rgba(30, 30, 30, 0.9); + color: #fff; + box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1); +} + +.features__title { + font-size: 2.5rem; + margin-bottom: 3rem; + user-select: none; +} + +.features__list { + display: flex; + justify-content: center; + flex-wrap: wrap; +} + +.features__item { + width: 300px; + margin: 2rem; +} + +.features__icon { + font-size: 3rem; + color: #007aff; + margin-bottom: 1rem; + user-select: none; +} + +.features__item-title { + font-size: 1.5rem; + margin-bottom: 1rem; + user-select: none; +} + +.features__item-description { + color: #aaa; + user-select: none; +} + +/* 底部区域 */ +.footer { + background-color: rgba(30, 30, 30, 0.9); + padding: 2rem 0; + text-align: center; + color: #aaa; + box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.1); +} + +.footer__text { + color: #aaa; + user-select: none; +} + +/* 响应式设计 */ +@media (max-width: 768px) { + .nav { + display: none; + } + .nav__list { + flex-direction: column; + align-items: center; + } + + .nav__item { + margin: 0.5rem 0; + } + + .hero__title { + font-size: 2.5rem; + } + + .hero__subtitle { + font-size: 1.2rem; + } + + .features__item { + width: 100%; + } +} diff --git a/src/pages/index/Index.ts b/src/pages/index/Index.ts new file mode 100644 index 0000000..247711d --- /dev/null +++ b/src/pages/index/Index.ts @@ -0,0 +1,211 @@ +import { defineComponent, onMounted, ref } from 'vue' +import * as BABYLON from '@babylonjs/core/Legacy/legacy' + +export default defineComponent({ + name: 'Index', + // setup(props, context) { + setup() { + const canvas3d = ref() + // const isPopupViewChangeOption = ref(false) + // const buttonsColorStatus = ref>([true, false, false, false]) + + const init = () => { + // 创建引擎 + const engine = new BABYLON.Engine(canvas3d.value!, true); + + // 创建场景 + const createScene = function () { + const scene = new BABYLON.Scene(engine); + // 设置场景背景色为暗色系 + scene.clearColor = BABYLON.Color4.FromHexString("#121212ff"); + + // 创建相机 + const camera = new BABYLON.ArcRotateCamera("camera", -Math.PI / 2, Math.PI / 2.5, 5, new BABYLON.Vector3(0, 0, 0), scene); + camera.attachControl(canvas3d, true); + + // 创建光源 + new BABYLON.HemisphericLight("light", new BABYLON.Vector3(0, 1, 0), scene); + + + // 定义顶点着色器 + const vertexShader = ` + precision highp float; + + // Attributes + attribute vec3 position; + attribute vec2 uv; + + // Uniforms + uniform mat4 worldViewProjection; + + // Varying + varying vec2 vUV; + + void main(void) { + gl_Position = worldViewProjection * vec4(position, 1.0); + vUV = uv; + } + `; + + // 定义片段着色器 + const fragmentShader = ` + precision highp float; + + // Varying + varying vec2 vUV; + + // Uniforms + uniform float time; + + void main(void) { + // 计算流光效果 + float wave = sin(vUV.x * 10.0 + time * 2.0); + float glow = (wave + 1.0) * 0.5; + + // 基础颜色(半透明蓝色) + vec4 baseColor = vec4(0.0, 0.2, 0.8, 0.5); + + // 应用流光效果 + vec4 finalColor = baseColor + vec4(glow, glow, glow, 0.0); + + gl_FragColor = finalColor; + } + `; + + const customMaterial = new BABYLON.ShaderMaterial("customShader", scene, { + vertexSource: vertexShader, + fragmentSource: fragmentShader, + }, { + attributes: ["position", "uv"], + uniforms: ["worldViewProjection", "time"] + }); + + // 设置材质透明度 + customMaterial.alpha = 0.95; + + // 创建更扁平、更小的莫比乌斯环 + const mobius = BABYLON.MeshBuilder.CreateTorusKnot("mobius", { + radius: 0.3, + tube: 0.05, + radialSegments: 128, + tubularSegments: 128, + p: 2, + q: 3 + }, scene); + mobius.position.y = 1; + // 将材质应用到莫比乌斯环 + mobius.material = customMaterial; + + // 将时间变量传递给着色器 + let time = 0; + scene.registerBeforeRender(() => { + customMaterial.setFloat("time", time); + time += 0.01; + }); + + // 创建点光源 + const pointLight = new BABYLON.PointLight("pointLight", new BABYLON.Vector3(0, 2, 2), scene); + pointLight.diffuse = new BABYLON.Color3(1, 1, 1); + pointLight.specular = new BABYLON.Color3(1, 1, 1); + + // 让点光源围绕莫比乌斯环旋转 + scene.registerBeforeRender(() => { + mobius.rotation.y += 0.01; + const angle = performance.now() * 0.001; + pointLight.position = new BABYLON.Vector3( + Math.cos(angle) * 2, + 2, + Math.sin(angle) * 2 + ); + }); + + + // 创建星空粒子系统 + const starSystem = new BABYLON.ParticleSystem("starSystem", 10000, scene); + starSystem.particleTexture = new BABYLON.Texture("./img/flare.png", scene); + starSystem.emitter = new BABYLON.Vector3(0, 0, 0); + starSystem.minEmitBox = new BABYLON.Vector3(-100, -100, -100); + starSystem.maxEmitBox = new BABYLON.Vector3(100, 100, 100); + starSystem.color1 = new BABYLON.Color4(1, 1, 1, 1); + starSystem.color2 = new BABYLON.Color4(1, 1, 1, 1); + starSystem.colorDead = new BABYLON.Color4(1, 1, 1, 0); + starSystem.minSize = 0.05; + starSystem.maxSize = 0.2; + starSystem.minLifeTime = 1; + starSystem.maxLifeTime = 3; + starSystem.emitRate = 1000; + starSystem.blendMode = BABYLON.ParticleSystem.BLENDMODE_ONEONE; + starSystem.gravity = new BABYLON.Vector3(0, 0, 0); + starSystem.direction1 = new BABYLON.Vector3(-1, -1, -1); + starSystem.direction2 = new BABYLON.Vector3(1, 1, 1); + starSystem.minAngularSpeed = 0; + starSystem.maxAngularSpeed = Math.PI; + starSystem.minEmitPower = 1; + starSystem.maxEmitPower = 3; + starSystem.updateSpeed = 0.01; + + // 启动星空粒子系统 + starSystem.start(); + + // 应用材质到莫比乌斯环 + // mobius.material = customMaterial; + + + + // starSystem.updateFunction = (particles) => { + // const center = mobius.position; + // for (let i = 0; i < particles.length; i++) { + // const particle = particles[i]; + // const distance = BABYLON.Vector3.Distance(particle.position, center); + // const angle = Math.atan2(particle.position.z - center.z, particle.position.x - center.x); + // const newAngle = angle + 0.01; + // particle.position.x = center.x + distance * Math.cos(newAngle); + // particle.position.z = center.z + distance * Math.sin(newAngle); + // } + // }; + + // // 添加后处理效果 + // const defaultPipeline = new BABYLON.DefaultRenderingPipeline( + // "defaultPipeline", + // true, // 是否启用HDR + // scene, + // [scene.activeCamera!], // 应用到的相机 + // true + // ) + + // defaultPipeline.bloomEnabled = false//!isMobile // 启用泛光效果 + // defaultPipeline.bloomThreshold = 0.9 // 泛光阈值 + // defaultPipeline.bloomWeight = 0.3 // 泛光权重 + // defaultPipeline.bloomKernel = 64 // 泛光内核大小 + // defaultPipeline.bloomScale = 0.5 // 泛光缩放 + + // defaultPipeline.glowLayerEnabled = true + // defaultPipeline.glowLayer!.intensity = 1.2//isMobile ? 0.7 : 0.66 + + // defaultPipeline.imageProcessingEnabled = false + + return scene; + }; + + const scene = createScene(); + + // 渲染循环 + engine.runRenderLoop(function () { + scene.render(); + }); + + // 响应式处理,当窗口大小改变时更新引擎 + window.addEventListener('resize', function () { + engine.resize(); + }); + } + + onMounted(() => { + init() + }) + + return { + canvas3d + } + } +}) diff --git a/src/pages/index/Index.vue b/src/pages/index/Index.vue new file mode 100644 index 0000000..5e5b40f --- /dev/null +++ b/src/pages/index/Index.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..b89d3de --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,24 @@ +import { createRouter, createWebHashHistory } from 'vue-router' +// import { defineAsyncComponent, markRaw } from 'vue' + +const router = createRouter({ + history: createWebHashHistory(import.meta.env.BASE_URL), + routes: [ + { + path: '/', + name: 'index', + component: + // markRaw( + // defineAsyncComponent(() => import('@/components/3d/show360/ShowObject360.vue')) + // ) //当前显示的组件 + () => import('@/pages/index/Index.vue') + }, + // { + // path: '/', + // name: 'vrroom', + // component: () => import('@/components/3d/vrroom/ShowVrRoom.vue') + // } + ] +}) + +export default router diff --git a/src/style.css b/src/style.css new file mode 100644 index 0000000..f691315 --- /dev/null +++ b/src/style.css @@ -0,0 +1,79 @@ +:root { + font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +.card { + padding: 2em; +} + +#app { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..771a57b --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,21 @@ +{ + "extends": "@vue/tsconfig/tsconfig.dom.json", + "compilerOptions": { + "incremental": true, // 启用增量编译 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + // "noUncheckedSideEffectImports": true + "baseUrl": ".", + "paths": { + "@/*": [ + "./src/*" + ] + } + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..bcf0aef --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "incremental": true, // 启用增量编译 + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "ES2022", + "lib": ["ES2023"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + // "noUncheckedSideEffectImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..7eaec3c --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,14 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' +import { fileURLToPath, URL } from 'node:url' + +// https://vite.dev/config/ +export default defineConfig({ + base: "./", + plugins: [vue()], + resolve: { + alias: { + '@': fileURLToPath(new URL('./src', import.meta.url)) + } + } +})