作者 万志伟

0.0.1

要显示太多修改。

为保证性能只显示 25 of 25+ 个文件。

# .env 通用环境配置
VITE_APP_TITLE=系统
#请求前缀
VITE_APP_CONTENT_TEXT_PATH=/package
... ...
# .env.development 开发环境配置
#dev请求地址
VITE_APP_BASE_URL=http://127.0.0.1:8080
#dev代理前缀
VITE_APP_PROXY_URL=/proxy-api
VITE_APP_BASE_USERNAME=admin
VITE_APP_BASE_PASSWORD=123456
... ...
# .env.production 生产环境配置
VITE_APP_BASE_URL=http://47.104.158.209:8080
... ...
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
... ...
{
"recommendations": ["Vue.volar"]
}
... ...
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
Learn more about the recommended Project Setup and IDE Support in the [Vue Docs TypeScript Guide](https://vuejs.org/guide/typescript/overview.html#project-setup).
... ...
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue + TS</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
... ...
{
"name": "web-package",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "web-package",
"version": "0.0.0",
"dependencies": {
"ant-design-vue": "^4.2.6",
"axios": "^1.8.1",
"cesium": "^1.127.0",
"dayjs": "^1.11.13",
"vue": "^3.5.13"
},
"devDependencies": {
"@types/cesium": "^1.67.14",
"@vitejs/plugin-vue": "^5.2.1",
"@vue/tsconfig": "^0.7.0",
"typescript": "~5.7.2",
"vite": "^6.2.0",
"vue-tsc": "^2.2.4"
}
},
"node_modules/@ant-design/colors": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/@ant-design/colors/-/colors-6.0.0.tgz",
"integrity": "sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==",
"license": "MIT",
"dependencies": {
"@ctrl/tinycolor": "^3.4.0"
}
},
"node_modules/@ant-design/icons-svg": {
"version": "4.4.2",
"resolved": "https://registry.npmmirror.com/@ant-design/icons-svg/-/icons-svg-4.4.2.tgz",
"integrity": "sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==",
"license": "MIT"
},
"node_modules/@ant-design/icons-vue": {
"version": "7.0.1",
"resolved": "https://registry.npmmirror.com/@ant-design/icons-vue/-/icons-vue-7.0.1.tgz",
"integrity": "sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==",
"license": "MIT",
"dependencies": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-svg": "^4.2.1"
},
"peerDependencies": {
"vue": ">=3.0.3"
}
},
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.26.9",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.9.tgz",
"integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.26.9"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/runtime": {
"version": "7.26.9",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.9.tgz",
"integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
"version": "7.26.9",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.9.tgz",
"integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@cesium/engine": {
"version": "15.0.0",
"resolved": "https://registry.npmmirror.com/@cesium/engine/-/engine-15.0.0.tgz",
"integrity": "sha512-jimj7khIf/mBkejsMZ+n6Y9PPvXh4QmWKkz2ekFz59icDCeGj8ZJrzl5p0caqiK/372mnHOwmYFWYEwThEw2ew==",
"license": "Apache-2.0",
"dependencies": {
"@tweenjs/tween.js": "^25.0.0",
"@zip.js/zip.js": "^2.7.34",
"autolinker": "^4.0.0",
"bitmap-sdf": "^1.0.3",
"dompurify": "^3.0.2",
"draco3d": "^1.5.1",
"earcut": "^3.0.0",
"grapheme-splitter": "^1.0.4",
"jsep": "^1.3.8",
"kdbush": "^4.0.1",
"ktx-parse": "^1.0.0",
"lerc": "^2.0.0",
"mersenne-twister": "^1.1.0",
"meshoptimizer": "^0.22.0",
"pako": "^2.0.4",
"protobufjs": "^7.1.0",
"rbush": "3.0.1",
"topojson-client": "^3.1.0",
"urijs": "^1.19.7"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@cesium/widgets": {
"version": "11.0.0",
"resolved": "https://registry.npmmirror.com/@cesium/widgets/-/widgets-11.0.0.tgz",
"integrity": "sha512-4ELgFuU2uwkvD6NI9MHIWNFKjmyI9wlDzZ9NuoPFSnUhf9XfVBI8sJekGx5dijxjK2S3aCuxB3dtUkdDZEsQmA==",
"license": "Apache-2.0",
"dependencies": {
"@cesium/engine": "^15.0.0",
"nosleep.js": "^0.12.0"
},
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/@ctrl/tinycolor": {
"version": "3.6.1",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
"integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==",
"license": "MIT",
"engines": {
"node": ">=10"
}
},
"node_modules/@emotion/hash": {
"version": "0.9.2",
"resolved": "https://registry.npmmirror.com/@emotion/hash/-/hash-0.9.2.tgz",
"integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==",
"license": "MIT"
},
"node_modules/@emotion/unitless": {
"version": "0.8.1",
"resolved": "https://registry.npmmirror.com/@emotion/unitless/-/unitless-0.8.1.tgz",
"integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==",
"license": "MIT"
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz",
"integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.0.tgz",
"integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz",
"integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.0.tgz",
"integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz",
"integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz",
"integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz",
"integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz",
"integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz",
"integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz",
"integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz",
"integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz",
"integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz",
"integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==",
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz",
"integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz",
"integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz",
"integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz",
"integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz",
"integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz",
"integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz",
"integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz",
"integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz",
"integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz",
"integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz",
"integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz",
"integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"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==",
"license": "MIT"
},
"node_modules/@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==",
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"node_modules/@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==",
"license": "BSD-3-Clause"
},
"node_modules/@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==",
"license": "BSD-3-Clause"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz",
"integrity": "sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz",
"integrity": "sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz",
"integrity": "sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz",
"integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz",
"integrity": "sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz",
"integrity": "sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz",
"integrity": "sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz",
"integrity": "sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz",
"integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz",
"integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz",
"integrity": "sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz",
"integrity": "sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz",
"integrity": "sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz",
"integrity": "sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz",
"integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz",
"integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz",
"integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz",
"integrity": "sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz",
"integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@simonwep/pickr": {
"version": "1.8.2",
"resolved": "https://registry.npmmirror.com/@simonwep/pickr/-/pickr-1.8.2.tgz",
"integrity": "sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==",
"license": "MIT",
"dependencies": {
"core-js": "^3.15.1",
"nanopop": "^2.1.0"
}
},
"node_modules/@tweenjs/tween.js": {
"version": "25.0.0",
"resolved": "https://registry.npmmirror.com/@tweenjs/tween.js/-/tween.js-25.0.0.tgz",
"integrity": "sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==",
"license": "MIT"
},
"node_modules/@types/cesium": {
"version": "1.67.14",
"resolved": "https://registry.npmmirror.com/@types/cesium/-/cesium-1.67.14.tgz",
"integrity": "sha512-BGek4o6VY25IqmpdBd1awlULSVjyRrbn111xI/LRZQf4QUPlYfsXOYkun8vcXr+u+iYQkh9LAYNf2h0lE95xcA==",
"dev": true,
"license": "MIT"
},
"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,
"license": "MIT"
},
"node_modules/@types/node": {
"version": "22.13.9",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-22.13.9.tgz",
"integrity": "sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw==",
"license": "MIT",
"dependencies": {
"undici-types": "~6.20.0"
}
},
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"license": "MIT",
"optional": true
},
"node_modules/@vitejs/plugin-vue": {
"version": "5.2.1",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz",
"integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==",
"dev": true,
"license": "MIT",
"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.11",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.11.tgz",
"integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/source-map": "2.4.11"
}
},
"node_modules/@volar/source-map": {
"version": "2.4.11",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.11.tgz",
"integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@volar/typescript": {
"version": "2.4.11",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.11.tgz",
"integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@volar/language-core": "2.4.11",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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,
"license": "MIT",
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"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,
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT",
"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==",
"license": "MIT"
},
"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,
"license": "MIT",
"peerDependencies": {
"typescript": "5.x",
"vue": "^3.4.0"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
},
"vue": {
"optional": true
}
}
},
"node_modules/@zip.js/zip.js": {
"version": "2.7.57",
"resolved": "https://registry.npmmirror.com/@zip.js/zip.js/-/zip.js-2.7.57.tgz",
"integrity": "sha512-BtonQ1/jDnGiMed6OkV6rZYW78gLmLswkHOzyMrMb+CAR7CZO8phOHO6c2qw6qb1g1betN7kwEHhhZk30dv+NA==",
"license": "BSD-3-Clause",
"engines": {
"bun": ">=0.7.0",
"deno": ">=1.0.0",
"node": ">=16.5.0"
}
},
"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,
"license": "MIT"
},
"node_modules/ant-design-vue": {
"version": "4.2.6",
"resolved": "https://registry.npmmirror.com/ant-design-vue/-/ant-design-vue-4.2.6.tgz",
"integrity": "sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==",
"license": "MIT",
"dependencies": {
"@ant-design/colors": "^6.0.0",
"@ant-design/icons-vue": "^7.0.0",
"@babel/runtime": "^7.10.5",
"@ctrl/tinycolor": "^3.5.0",
"@emotion/hash": "^0.9.0",
"@emotion/unitless": "^0.8.0",
"@simonwep/pickr": "~1.8.0",
"array-tree-filter": "^2.1.0",
"async-validator": "^4.0.0",
"csstype": "^3.1.1",
"dayjs": "^1.10.5",
"dom-align": "^1.12.1",
"dom-scroll-into-view": "^2.0.0",
"lodash": "^4.17.21",
"lodash-es": "^4.17.15",
"resize-observer-polyfill": "^1.5.1",
"scroll-into-view-if-needed": "^2.2.25",
"shallow-equal": "^1.0.0",
"stylis": "^4.1.3",
"throttle-debounce": "^5.0.0",
"vue-types": "^3.0.0",
"warning": "^4.0.0"
},
"engines": {
"node": ">=12.22.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/ant-design-vue"
},
"peerDependencies": {
"vue": ">=3.2.0"
}
},
"node_modules/array-tree-filter": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/array-tree-filter/-/array-tree-filter-2.1.0.tgz",
"integrity": "sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==",
"license": "MIT"
},
"node_modules/async-validator": {
"version": "4.2.5",
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==",
"license": "MIT"
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/autolinker": {
"version": "4.1.0",
"resolved": "https://registry.npmmirror.com/autolinker/-/autolinker-4.1.0.tgz",
"integrity": "sha512-mYzdZMei1zIXcHVS/LjnuCJG+C/hNi8O+5m0R8YWtrIBWGrjL8CVzEZXxOfH0l1kioEXHNpUJRkgZdyL4GgIHQ==",
"license": "MIT",
"dependencies": {
"tslib": "^2.8.1"
}
},
"node_modules/axios": {
"version": "1.8.1",
"resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.1.tgz",
"integrity": "sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"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,
"license": "MIT"
},
"node_modules/bitmap-sdf": {
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
"integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==",
"license": "MIT"
},
"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,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/cesium": {
"version": "1.127.0",
"resolved": "https://registry.npmmirror.com/cesium/-/cesium-1.127.0.tgz",
"integrity": "sha512-MRGkPb3ClEkAI9viZxxdD3LCu7ydOzOKdJ6/iPtBx1GUsPCZNbgB0IH7wmhwgbxA5sjv4/a90+mvR9CoLP1PWQ==",
"license": "Apache-2.0",
"workspaces": [
"packages/engine",
"packages/widgets"
],
"dependencies": {
"@cesium/engine": "^15.0.0",
"@cesium/widgets": "^11.0.0"
},
"engines": {
"node": ">=18.18.0"
}
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/commander": {
"version": "2.20.3",
"resolved": "https://registry.npmmirror.com/commander/-/commander-2.20.3.tgz",
"integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
"license": "MIT"
},
"node_modules/compute-scroll-into-view": {
"version": "1.0.20",
"resolved": "https://registry.npmmirror.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==",
"license": "MIT"
},
"node_modules/core-js": {
"version": "3.41.0",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.41.0.tgz",
"integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
"hasInstallScript": true,
"license": "MIT",
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/dayjs": {
"version": "1.11.13",
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.13.tgz",
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
"license": "MIT"
},
"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,
"license": "MIT"
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/dom-align": {
"version": "1.12.4",
"resolved": "https://registry.npmmirror.com/dom-align/-/dom-align-1.12.4.tgz",
"integrity": "sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==",
"license": "MIT"
},
"node_modules/dom-scroll-into-view": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/dom-scroll-into-view/-/dom-scroll-into-view-2.0.1.tgz",
"integrity": "sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==",
"license": "MIT"
},
"node_modules/dompurify": {
"version": "3.2.4",
"resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.2.4.tgz",
"integrity": "sha512-ysFSFEDVduQpyhzAob/kkuJjf5zWkZD8/A9ywSp1byueyuCfHamrCBa14/Oc2iiB0e51B+NpxSl5gmzn+Ms/mg==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
},
"node_modules/draco3d": {
"version": "1.5.7",
"resolved": "https://registry.npmmirror.com/draco3d/-/draco3d-1.5.7.tgz",
"integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==",
"license": "Apache-2.0"
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/earcut": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/earcut/-/earcut-3.0.1.tgz",
"integrity": "sha512-0l1/0gOjESMeQyYaK5IDiPNvFeu93Z/cO0TjZh9eZ1vyCtZnA7KMZ8rQggpsJHIbGSdrqYq9OhuveadOVHCshw==",
"license": "ISC"
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/esbuild": {
"version": "0.25.0",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.0.tgz",
"integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.25.0",
"@esbuild/android-arm": "0.25.0",
"@esbuild/android-arm64": "0.25.0",
"@esbuild/android-x64": "0.25.0",
"@esbuild/darwin-arm64": "0.25.0",
"@esbuild/darwin-x64": "0.25.0",
"@esbuild/freebsd-arm64": "0.25.0",
"@esbuild/freebsd-x64": "0.25.0",
"@esbuild/linux-arm": "0.25.0",
"@esbuild/linux-arm64": "0.25.0",
"@esbuild/linux-ia32": "0.25.0",
"@esbuild/linux-loong64": "0.25.0",
"@esbuild/linux-mips64el": "0.25.0",
"@esbuild/linux-ppc64": "0.25.0",
"@esbuild/linux-riscv64": "0.25.0",
"@esbuild/linux-s390x": "0.25.0",
"@esbuild/linux-x64": "0.25.0",
"@esbuild/netbsd-arm64": "0.25.0",
"@esbuild/netbsd-x64": "0.25.0",
"@esbuild/openbsd-arm64": "0.25.0",
"@esbuild/openbsd-x64": "0.25.0",
"@esbuild/sunos-x64": "0.25.0",
"@esbuild/win32-arm64": "0.25.0",
"@esbuild/win32-ia32": "0.25.0",
"@esbuild/win32-x64": "0.25.0"
}
},
"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==",
"license": "MIT"
},
"node_modules/follow-redirects": {
"version": "1.15.9",
"resolved": "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz",
"integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/form-data": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz",
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"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,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/grapheme-splitter": {
"version": "1.0.4",
"resolved": "https://registry.npmmirror.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz",
"integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==",
"license": "MIT"
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"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,
"license": "MIT",
"bin": {
"he": "bin/he"
}
},
"node_modules/is-plain-object": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-3.0.1.tgz",
"integrity": "sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"license": "MIT"
},
"node_modules/jsep": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/jsep/-/jsep-1.4.0.tgz",
"integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==",
"license": "MIT",
"engines": {
"node": ">= 10.16.0"
}
},
"node_modules/kdbush": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/kdbush/-/kdbush-4.0.2.tgz",
"integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==",
"license": "ISC"
},
"node_modules/ktx-parse": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/ktx-parse/-/ktx-parse-1.0.0.tgz",
"integrity": "sha512-Z31kVizz4DF/6vo9YiSYVBhuXAfyQy9bGxlW3+mB5OELoZjfXVZQpRoctsx8IEDKxBd6SagXKo7qRvu38i8Jfg==",
"license": "MIT"
},
"node_modules/lerc": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/lerc/-/lerc-2.0.0.tgz",
"integrity": "sha512-7qo1Mq8ZNmaR4USHHm615nEW2lPeeWJ3bTyoqFbd35DLx0LUH7C6ptt5FDCTAlbIzs3+WKrk5SkJvw8AFDE2hg==",
"license": "Apache-2.0"
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"license": "MIT"
},
"node_modules/lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==",
"license": "MIT"
},
"node_modules/long": {
"version": "5.3.1",
"resolved": "https://registry.npmmirror.com/long/-/long-5.3.1.tgz",
"integrity": "sha512-ka87Jz3gcx/I7Hal94xaN2tZEOPoUOEVftkQqZx2EeQRN7LGdfLlI3FvZ+7WDplm+vK2Urx9ULrvSowtdCieng==",
"license": "Apache-2.0"
},
"node_modules/loose-envify": {
"version": "1.4.0",
"resolved": "https://registry.npmmirror.com/loose-envify/-/loose-envify-1.4.0.tgz",
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
"license": "MIT",
"dependencies": {
"js-tokens": "^3.0.0 || ^4.0.0"
},
"bin": {
"loose-envify": "cli.js"
}
},
"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==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/mersenne-twister": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/mersenne-twister/-/mersenne-twister-1.1.0.tgz",
"integrity": "sha512-mUYWsMKNrm4lfygPkL3OfGzOPTR2DBlTkBNHM//F6hGp8cLThY897crAlk3/Jo17LEOOjQUrNAx6DvgO77QJkA==",
"license": "MIT"
},
"node_modules/meshoptimizer": {
"version": "0.22.0",
"resolved": "https://registry.npmmirror.com/meshoptimizer/-/meshoptimizer-0.22.0.tgz",
"integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==",
"license": "MIT"
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"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,
"license": "ISC",
"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,
"license": "MIT"
},
"node_modules/nanoid": {
"version": "3.3.8",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.8.tgz",
"integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/nanopop": {
"version": "2.4.2",
"resolved": "https://registry.npmmirror.com/nanopop/-/nanopop-2.4.2.tgz",
"integrity": "sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==",
"license": "MIT"
},
"node_modules/nosleep.js": {
"version": "0.12.0",
"resolved": "https://registry.npmmirror.com/nosleep.js/-/nosleep.js-0.12.0.tgz",
"integrity": "sha512-9d1HbpKLh3sdWlhXMhU6MMH+wQzKkrgfRkYV0EBdvt99YJfj0ilCJrWRDYG2130Tm4GXbEoTCx5b34JSaP+HhA==",
"license": "MIT"
},
"node_modules/pako": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/pako/-/pako-2.1.0.tgz",
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
"license": "(MIT AND Zlib)"
},
"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,
"license": "MIT"
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"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"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.8",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/protobufjs": {
"version": "7.4.0",
"resolved": "https://registry.npmmirror.com/protobufjs/-/protobufjs-7.4.0.tgz",
"integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==",
"hasInstallScript": true,
"license": "BSD-3-Clause",
"dependencies": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/node": ">=13.7.0",
"long": "^5.0.0"
},
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/quickselect": {
"version": "2.0.0",
"resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz",
"integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==",
"license": "ISC"
},
"node_modules/rbush": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz",
"integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==",
"license": "MIT",
"dependencies": {
"quickselect": "^2.0.0"
}
},
"node_modules/regenerator-runtime": {
"version": "0.14.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
"node_modules/resize-observer-polyfill": {
"version": "1.5.1",
"resolved": "https://registry.npmmirror.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
"integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==",
"license": "MIT"
},
"node_modules/rollup": {
"version": "4.34.9",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.34.9.tgz",
"integrity": "sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==",
"dev": true,
"license": "MIT",
"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.34.9",
"@rollup/rollup-android-arm64": "4.34.9",
"@rollup/rollup-darwin-arm64": "4.34.9",
"@rollup/rollup-darwin-x64": "4.34.9",
"@rollup/rollup-freebsd-arm64": "4.34.9",
"@rollup/rollup-freebsd-x64": "4.34.9",
"@rollup/rollup-linux-arm-gnueabihf": "4.34.9",
"@rollup/rollup-linux-arm-musleabihf": "4.34.9",
"@rollup/rollup-linux-arm64-gnu": "4.34.9",
"@rollup/rollup-linux-arm64-musl": "4.34.9",
"@rollup/rollup-linux-loongarch64-gnu": "4.34.9",
"@rollup/rollup-linux-powerpc64le-gnu": "4.34.9",
"@rollup/rollup-linux-riscv64-gnu": "4.34.9",
"@rollup/rollup-linux-s390x-gnu": "4.34.9",
"@rollup/rollup-linux-x64-gnu": "4.34.9",
"@rollup/rollup-linux-x64-musl": "4.34.9",
"@rollup/rollup-win32-arm64-msvc": "4.34.9",
"@rollup/rollup-win32-ia32-msvc": "4.34.9",
"@rollup/rollup-win32-x64-msvc": "4.34.9",
"fsevents": "~2.3.2"
}
},
"node_modules/scroll-into-view-if-needed": {
"version": "2.2.31",
"resolved": "https://registry.npmmirror.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.31.tgz",
"integrity": "sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==",
"license": "MIT",
"dependencies": {
"compute-scroll-into-view": "^1.0.20"
}
},
"node_modules/shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/shallow-equal/-/shallow-equal-1.2.1.tgz",
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==",
"license": "MIT"
},
"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==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/stylis": {
"version": "4.3.6",
"resolved": "https://registry.npmmirror.com/stylis/-/stylis-4.3.6.tgz",
"integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==",
"license": "MIT"
},
"node_modules/throttle-debounce": {
"version": "5.0.2",
"resolved": "https://registry.npmmirror.com/throttle-debounce/-/throttle-debounce-5.0.2.tgz",
"integrity": "sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==",
"license": "MIT",
"engines": {
"node": ">=12.22"
}
},
"node_modules/topojson-client": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/topojson-client/-/topojson-client-3.1.0.tgz",
"integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
"license": "ISC",
"dependencies": {
"commander": "2"
},
"bin": {
"topo2geo": "bin/topo2geo",
"topomerge": "bin/topomerge",
"topoquantize": "bin/topoquantize"
}
},
"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==",
"license": "0BSD"
},
"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,
"license": "Apache-2.0",
"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==",
"license": "MIT"
},
"node_modules/urijs": {
"version": "1.19.11",
"resolved": "https://registry.npmmirror.com/urijs/-/urijs-1.19.11.tgz",
"integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==",
"license": "MIT"
},
"node_modules/vite": {
"version": "6.2.0",
"resolved": "https://registry.npmmirror.com/vite/-/vite-6.2.0.tgz",
"integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==",
"dev": true,
"license": "MIT",
"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,
"license": "MIT"
},
"node_modules/vue": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.13.tgz",
"integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==",
"license": "MIT",
"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-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,
"license": "MIT",
"dependencies": {
"@volar/typescript": "~2.4.11",
"@vue/language-core": "2.2.8"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
"typescript": ">=5.0.0"
}
},
"node_modules/vue-types": {
"version": "3.0.2",
"resolved": "https://registry.npmmirror.com/vue-types/-/vue-types-3.0.2.tgz",
"integrity": "sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==",
"license": "MIT",
"dependencies": {
"is-plain-object": "3.0.1"
},
"engines": {
"node": ">=10.15.0"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/warning": {
"version": "4.0.3",
"resolved": "https://registry.npmmirror.com/warning/-/warning-4.0.3.tgz",
"integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==",
"license": "MIT",
"dependencies": {
"loose-envify": "^1.0.0"
}
}
}
}
... ...
{
"name": "web-package",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vue-tsc -b && vite build",
"preview": "vite preview"
},
"dependencies": {
"@ant-design/icons-vue": "^7.0.1",
"@element-plus/icons-vue": "^2.3.1",
"@icon-park/vue-next": "^1.4.2",
"@vitejs/plugin-vue-jsx": "^4.1.1",
"ant-design-vue": "^4.2.6",
"axios": "^1.8.1",
"cesium": "^1.127.0",
"dayjs": "^1.11.13",
"element-plus": "^2.9.6",
"pinia": "^3.0.1",
"vue": "^3.5.13",
"vue-router": "^4.5.0",
"xml-js": "^1.6.11"
},
"devDependencies": {
"@types/cesium": "^1.67.14",
"@vitejs/plugin-vue": "^5.2.1",
"@vue/tsconfig": "^0.7.0",
"typescript": "~5.7.2",
"vite": "^6.2.0",
"vite-plugin-cesium": "^1.2.23",
"vue-tsc": "^2.2.4"
}
}
... ...
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.6">
<Document>
<wpml:author>1364078416@qq.com</wpml:author>
<wpml:createTime>1739075482858</wpml:createTime>
<wpml:updateTime>1739075547467</wpml:updateTime>
<wpml:missionConfig>
<wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode>
<wpml:finishAction>goHome</wpml:finishAction>
<wpml:exitOnRCLost>goContinue</wpml:exitOnRCLost>
<wpml:executeRCLostAction>goBack</wpml:executeRCLostAction>
<wpml:takeOffSecurityHeight>70</wpml:takeOffSecurityHeight>
<wpml:takeOffRefPoint>23.233762,102.812308,233.158754</wpml:takeOffRefPoint>
<wpml:takeOffRefPointAGLHeight>0</wpml:takeOffRefPointAGLHeight>
<wpml:globalTransitionalSpeed>15</wpml:globalTransitionalSpeed>
<wpml:globalRTHHeight>100</wpml:globalRTHHeight>
<wpml:droneInfo>
<wpml:droneEnumValue>67</wpml:droneEnumValue>
<wpml:droneSubEnumValue>1</wpml:droneSubEnumValue>
</wpml:droneInfo>
<wpml:payloadInfo>
<wpml:payloadEnumValue>53</wpml:payloadEnumValue>
<wpml:payloadSubEnumValue>1</wpml:payloadSubEnumValue>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
</wpml:payloadInfo>
</wpml:missionConfig>
<Folder>
<wpml:templateType>waypoint</wpml:templateType>
<wpml:templateId>0</wpml:templateId>
<wpml:waylineCoordinateSysParam>
<wpml:coordinateMode>WGS84</wpml:coordinateMode>
<wpml:heightMode>relativeToStartPoint</wpml:heightMode>
</wpml:waylineCoordinateSysParam>
<wpml:autoFlightSpeed>10</wpml:autoFlightSpeed>
<wpml:globalHeight>67.199632961</wpml:globalHeight>
<wpml:caliFlightEnable>0</wpml:caliFlightEnable>
<wpml:gimbalPitchMode>manual</wpml:gimbalPitchMode>
<wpml:globalWaypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:globalWaypointHeadingParam>
<wpml:globalWaypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:globalWaypointTurnMode>
<wpml:globalUseStraightLine>1</wpml:globalUseStraightLine>
<Placemark>
<Point>
<coordinates>
102.814068783866,23.2359655022029
</coordinates>
</Point>
<wpml:index>0</wpml:index>
<wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
<wpml:height>67.199632961</wpml:height>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useGlobalHeight>1</wpml:useGlobalHeight>
<wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
<wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
<wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>0</wpml:actionGroupId>
<wpml:actionGroupStartIndex>0</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>0</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-51.148</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-51.148</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>a2f692e0-420b-4868-8693-3062d2aaf1ab</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>4bbe6c02-18b5-481d-a957-610240ff955c</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:isRisky>0</wpml:isRisky>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.813728813702,23.2361906183568
</coordinates>
</Point>
<wpml:index>1</wpml:index>
<wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
<wpml:height>67.199632961</wpml:height>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useGlobalHeight>1</wpml:useGlobalHeight>
<wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
<wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
<wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>1</wpml:actionGroupId>
<wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>e34fd1b6-c2f8-4eb7-a7e9-210047029c6b</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>2ec97c52-0ca8-4e17-90e9-d50ac3e3dbd9</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:isRisky>0</wpml:isRisky>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.8136078157,23.2364742507511
</coordinates>
</Point>
<wpml:index>2</wpml:index>
<wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
<wpml:height>67.199632961</wpml:height>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useGlobalHeight>1</wpml:useGlobalHeight>
<wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
<wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
<wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>2</wpml:actionGroupId>
<wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>c5b670bc-7e02-4ee3-a7de-d3bfb1743847</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>2b63ee8a-751a-4370-ab6d-a6625640851c</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:isRisky>0</wpml:isRisky>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.813597685565,23.2363064208282
</coordinates>
</Point>
<wpml:index>3</wpml:index>
<wpml:ellipsoidHeight>67.199632961</wpml:ellipsoidHeight>
<wpml:height>67.199632961</wpml:height>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0.2</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useGlobalHeight>1</wpml:useGlobalHeight>
<wpml:useGlobalSpeed>1</wpml:useGlobalSpeed>
<wpml:useGlobalHeadingParam>1</wpml:useGlobalHeadingParam>
<wpml:useGlobalTurnParam>1</wpml:useGlobalTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>3</wpml:actionGroupId>
<wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-41.107</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-38.933</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>384</wpml:focalLength>
<wpml:aircraftHeading>-38.933</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>77078303-bffc-4565-81d3-763b2d105e06</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>aa00b71e-339c-4b38-9486-2fea43711004</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>1</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-40.068</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-25.848</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>192</wpml:focalLength>
<wpml:aircraftHeading>-25.848</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>2902f57f-778f-4aed-bfdc-0aa52c65a88a</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>519c9fa4-d6c8-4108-80f7-27ed0dfdffd9</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>2</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-30.922</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-32.302</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>672</wpml:focalLength>
<wpml:aircraftHeading>-32.302</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>5325086b-6bb6-49de-8b4f-6024cf8663e7</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>b02a1705-aa5f-4d45-bb16-1a0196dc9e7a</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>3</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>672</wpml:focalLength>
<wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>7807e00d-eef9-40f7-b500-fa97f77a6b8b</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>eb74a2e8-5b9b-49c7-9d07-e1be206d05f2</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>4</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>384</wpml:focalLength>
<wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>ec0f9dbf-7b94-482c-93a1-2692f865bd91</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>32025061-f405-4f1e-9c2c-e8979dfd07d2</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:isRisky>0</wpml:isRisky>
</Placemark>
<wpml:payloadParam>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:focusMode>firstPoint</wpml:focusMode>
<wpml:meteringMode>average</wpml:meteringMode>
<wpml:returnMode>singleReturnFirst</wpml:returnMode>
<wpml:samplingRate>240000</wpml:samplingRate>
<wpml:scanningMode>repetitive</wpml:scanningMode>
<wpml:imageFormat>zoom</wpml:imageFormat>
</wpml:payloadParam>
</Folder>
</Document>
</kml>
... ...
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:wpml="http://www.dji.com/wpmz/1.0.6">
<Document>
<wpml:missionConfig>
<wpml:flyToWaylineMode>safely</wpml:flyToWaylineMode>
<wpml:finishAction>goHome</wpml:finishAction>
<wpml:exitOnRCLost>goContinue</wpml:exitOnRCLost>
<wpml:executeRCLostAction>goBack</wpml:executeRCLostAction>
<wpml:takeOffSecurityHeight>70</wpml:takeOffSecurityHeight>
<wpml:globalTransitionalSpeed>15</wpml:globalTransitionalSpeed>
<wpml:globalRTHHeight>100</wpml:globalRTHHeight>
<wpml:droneInfo>
<wpml:droneEnumValue>67</wpml:droneEnumValue>
<wpml:droneSubEnumValue>1</wpml:droneSubEnumValue>
</wpml:droneInfo>
<wpml:payloadInfo>
<wpml:payloadEnumValue>53</wpml:payloadEnumValue>
<wpml:payloadSubEnumValue>1</wpml:payloadSubEnumValue>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
</wpml:payloadInfo>
</wpml:missionConfig>
<Folder>
<wpml:templateId>0</wpml:templateId>
<wpml:executeHeightMode>relativeToStartPoint</wpml:executeHeightMode>
<wpml:waylineId>0</wpml:waylineId>
<wpml:distance>95.3817596435547</wpml:distance>
<wpml:duration>12.0381755828857</wpml:duration>
<wpml:autoFlightSpeed>10</wpml:autoFlightSpeed>
<Placemark>
<Point>
<coordinates>
102.814068783866,23.2359655022029
</coordinates>
</Point>
<wpml:index>0</wpml:index>
<wpml:executeHeight>67.199632961</wpml:executeHeight>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>0</wpml:actionGroupId>
<wpml:actionGroupStartIndex>0</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>0</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-51.148</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-51.148</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>a2f692e0-420b-4868-8693-3062d2aaf1ab</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>4bbe6c02-18b5-481d-a957-610240ff955c</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:waypointGimbalHeadingParam>
<wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
<wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
</wpml:waypointGimbalHeadingParam>
<wpml:isRisky>0</wpml:isRisky>
<wpml:waypointWorkType>0</wpml:waypointWorkType>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.813728813702,23.2361906183568
</coordinates>
</Point>
<wpml:index>1</wpml:index>
<wpml:executeHeight>67.199632961</wpml:executeHeight>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>1</wpml:actionGroupId>
<wpml:actionGroupStartIndex>1</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>1</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>e34fd1b6-c2f8-4eb7-a7e9-210047029c6b</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>2ec97c52-0ca8-4e17-90e9-d50ac3e3dbd9</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:waypointGimbalHeadingParam>
<wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
<wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
</wpml:waypointGimbalHeadingParam>
<wpml:isRisky>0</wpml:isRisky>
<wpml:waypointWorkType>0</wpml:waypointWorkType>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.8136078157,23.2364742507511
</coordinates>
</Point>
<wpml:index>2</wpml:index>
<wpml:executeHeight>67.199632961</wpml:executeHeight>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>2</wpml:actionGroupId>
<wpml:actionGroupStartIndex>2</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>2</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-56.05</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-37.265</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>216</wpml:focalLength>
<wpml:aircraftHeading>-37.265</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>c5b670bc-7e02-4ee3-a7de-d3bfb1743847</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>2b63ee8a-751a-4370-ab6d-a6625640851c</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:waypointGimbalHeadingParam>
<wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
<wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
</wpml:waypointGimbalHeadingParam>
<wpml:isRisky>0</wpml:isRisky>
<wpml:waypointWorkType>0</wpml:waypointWorkType>
</Placemark>
<Placemark>
<Point>
<coordinates>
102.813597685565,23.2363064208282
</coordinates>
</Point>
<wpml:index>3</wpml:index>
<wpml:executeHeight>67.199632961</wpml:executeHeight>
<wpml:waypointSpeed>10</wpml:waypointSpeed>
<wpml:waypointHeadingParam>
<wpml:waypointHeadingMode>followWayline</wpml:waypointHeadingMode>
<wpml:waypointHeadingAngle>0</wpml:waypointHeadingAngle>
<wpml:waypointPoiPoint>0.000000,0.000000,0.000000</wpml:waypointPoiPoint>
<wpml:waypointHeadingAngleEnable>0</wpml:waypointHeadingAngleEnable>
<wpml:waypointHeadingPathMode>followBadArc</wpml:waypointHeadingPathMode>
<wpml:waypointHeadingPoiIndex>0</wpml:waypointHeadingPoiIndex>
</wpml:waypointHeadingParam>
<wpml:waypointTurnParam>
<wpml:waypointTurnMode>toPointAndStopWithDiscontinuityCurvature</wpml:waypointTurnMode>
<wpml:waypointTurnDampingDist>0</wpml:waypointTurnDampingDist>
</wpml:waypointTurnParam>
<wpml:useStraightLine>1</wpml:useStraightLine>
<wpml:actionGroup>
<wpml:actionGroupId>3</wpml:actionGroupId>
<wpml:actionGroupStartIndex>3</wpml:actionGroupStartIndex>
<wpml:actionGroupEndIndex>3</wpml:actionGroupEndIndex>
<wpml:actionGroupMode>sequence</wpml:actionGroupMode>
<wpml:actionTrigger>
<wpml:actionTriggerType>reachPoint</wpml:actionTriggerType>
</wpml:actionTrigger>
<wpml:action>
<wpml:actionId>0</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-41.107</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-38.933</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>384</wpml:focalLength>
<wpml:aircraftHeading>-38.933</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>77078303-bffc-4565-81d3-763b2d105e06</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>aa00b71e-339c-4b38-9486-2fea43711004</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>1</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-40.068</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-25.848</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>192</wpml:focalLength>
<wpml:aircraftHeading>-25.848</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>2902f57f-778f-4aed-bfdc-0aa52c65a88a</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>519c9fa4-d6c8-4108-80f7-27ed0dfdffd9</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>2</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-30.922</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-32.302</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>672</wpml:focalLength>
<wpml:aircraftHeading>-32.302</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>5325086b-6bb6-49de-8b4f-6024cf8663e7</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>b02a1705-aa5f-4d45-bb16-1a0196dc9e7a</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>3</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>672</wpml:focalLength>
<wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>7807e00d-eef9-40f7-b500-fa97f77a6b8b</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>eb74a2e8-5b9b-49c7-9d07-e1be206d05f2</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
<wpml:action>
<wpml:actionId>4</wpml:actionId>
<wpml:actionActuatorFunc>orientedShoot</wpml:actionActuatorFunc>
<wpml:actionActuatorFuncParam>
<wpml:gimbalPitchRotateAngle>-31.066</wpml:gimbalPitchRotateAngle>
<wpml:gimbalRollRotateAngle>0</wpml:gimbalRollRotateAngle>
<wpml:gimbalYawRotateAngle>-23.091</wpml:gimbalYawRotateAngle>
<wpml:focusX>0</wpml:focusX>
<wpml:focusY>0</wpml:focusY>
<wpml:focusRegionWidth>0</wpml:focusRegionWidth>
<wpml:focusRegionHeight>0</wpml:focusRegionHeight>
<wpml:focalLength>384</wpml:focalLength>
<wpml:aircraftHeading>-23.091</wpml:aircraftHeading>
<wpml:accurateFrameValid>0</wpml:accurateFrameValid>
<wpml:payloadPositionIndex>0</wpml:payloadPositionIndex>
<wpml:useGlobalPayloadLensIndex>1</wpml:useGlobalPayloadLensIndex>
<wpml:payloadLensIndex>zoom</wpml:payloadLensIndex>
<wpml:targetAngle>0</wpml:targetAngle>
<wpml:actionUUID>ec0f9dbf-7b94-482c-93a1-2692f865bd91</wpml:actionUUID>
<wpml:imageWidth>0</wpml:imageWidth>
<wpml:imageHeight>0</wpml:imageHeight>
<wpml:AFPos>0</wpml:AFPos>
<wpml:gimbalPort>0</wpml:gimbalPort>
<wpml:orientedCameraType>53</wpml:orientedCameraType>
<wpml:orientedFilePath>32025061-f405-4f1e-9c2c-e8979dfd07d2</wpml:orientedFilePath>
<wpml:orientedFileMD5/>
<wpml:orientedFileSize>0</wpml:orientedFileSize>
<wpml:orientedPhotoMode>normalPhoto</wpml:orientedPhotoMode>
</wpml:actionActuatorFuncParam>
</wpml:action>
</wpml:actionGroup>
<wpml:waypointGimbalHeadingParam>
<wpml:waypointGimbalPitchAngle>0</wpml:waypointGimbalPitchAngle>
<wpml:waypointGimbalYawAngle>0</wpml:waypointGimbalYawAngle>
</wpml:waypointGimbalHeadingParam>
<wpml:isRisky>0</wpml:isRisky>
<wpml:waypointWorkType>0</wpml:waypointWorkType>
</Placemark>
</Folder>
</Document>
</kml>
... ...
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
... ...
<template>
<a-config-provider :theme="themeStore.themeConfig" :locale="localeStore.locale">
<router-view/>
</a-config-provider>
</template>
<script setup lang="ts">
import {useThemeStore} from "@/store/useThemeStore.ts";
import {useLocaleStore} from "@/store/useLocaleStore.ts";
const themeStore = useThemeStore()
const localeStore = useLocaleStore()
</script>
<style>
#app {
height: 100vh;
width: 100vw;
overflow: auto;
}
::-webkit-scrollbar {
width: 5px; /* 宽度 */
height: 8px; /* 高度(对于水平滚动条) */
border: 1px solid rgb(128, 128, 128, 0.2);
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
background: rgb(128, 128, 128, 0.5); /* 滑块颜色 */
border-radius: 10px;
}
/* 滚动条轨道 */
::-webkit-scrollbar-track {
background: transparent; /* 轨道颜色 */
border-radius: 10px;
}
/*动画处理*/
.v-enter-active,
.v-leave-active {
transition: opacity 0.5s ease;
}
.v-enter-from,
.v-leave-to {
opacity: 0;
}
/*动画处理*/
.drop-enter-active,
.drop-leave-active {
transition: all 0.5s ease;
}
.drop-enter-from,
.drop-leave-to {
transform: translateY(-30px);
opacity: 0;
}
</style>
... ...
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file
... ...
此 diff 太大无法显示。
<template>
<air-route-create-dialog @confirm="confirm" ref="airRouteCreateDialogRef"/>
<air-route-dialog @save="save" ref="airRouteDialogRef"/>
</template>
<script setup lang="ts">
import AirRouteDialog from "@/components/air-route/components/air-route-dialog.vue";
import AirRouteCreateDialog from "@/components/air-route/components/air-route-create-dialog.vue";
import {provide, ref} from "vue";
import {type Element, xml2js} from "xml-js";
import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
const airRouteCreateDialogRef = ref()
const airRouteDialogRef = ref()
const title = ref('')
const wpmlElement = ref<Element>({
elements: []
})
const {elment: kmlElement} = useXMLComputed(wpmlElement, 'kml')
const {elment: DocumentElement} = useXMLComputed(kmlElement, 'Document')
provide('DocumentElement', DocumentElement)
provide('title', title)
async function open(config?: {
title?: string,
file?: File,
}) {
title.value = config?.title || '新建航线'
if (config.file) {
let fileString = await config.file.text()
wpmlElement.value = <Element>xml2js(fileString)
airRouteDialogRef.value.open()
} else {
airRouteCreateDialogRef.value.open()
}
}
function confirm() {
airRouteDialogRef.value.open()
}
const emits = defineEmits(['save'])
function save(config) {
emits('save', config)
}
defineExpose({
open
})
</script>
<style scoped>
</style>
... ...
<template>
<el-dialog v-model="show" title="创建航线">
<el-form labelPosition="top">
<el-form-item label="选择飞行器">
<l-select-box :options="optionsGroup.map((item,index)=>({...item,value:index}))" v-model="form.selectGroup"
@select="onChangeGroup"/>
</el-form-item>
<el-form-item label="选择型号">
<l-select-box :options="optionsGroup[form.selectGroup].children" v-model="form.droneEnumValue"/>
</el-form-item>
<el-form-item title="航线名称">
<el-input v-model="form.title"/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="show = false">取消</el-button>
<el-button type="primary" @click="confirm">
确定
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import {type Element, js2xml, xml2js} from "xml-js";
import {inject, ref, type WritableComputedRef} from "vue";
import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
import LSelectBox from "@/components/air-route/components/l-select-box.vue";
const form = ref({})
const title = inject("title");
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const show = ref(false)
const {elment: droneInfoElement} = useXMLComputed(DocumentElement, 'wpml:droneInfo')
const {text: droneEnumValue} = useXMLComputed(droneInfoElement, 'wpml:droneEnumValue', {
defaultText: 'Matrice 4E'
})
const optionsGroup = ref([
{
label: 'Matrice 30 系列',
children: [
{
label: 'Matrice 30',
value: 'Matrice 30',
},
{
label: 'Matrice 30T',
value: 'Matrice 30T',
},
]
}, {
label: 'Matrice 4 系列',
children: [
{
label: 'Matrice 4E',
value: 'Matrice 4E',
},
{
label: 'Matrice 4T',
value: 'Matrice 4T',
},
]
}
])
function onChangeGroup() {
form.value.droneEnumValue = optionsGroup.value[form.value.selectGroup].children[0].value
}
async function open() {
show.value = true;
form.value = {
title: title.value,
droneEnumValue: droneEnumValue.value,
selectGroup: optionsGroup.value.findIndex(v => v.children.findIndex(v => v.value === droneEnumValue.value) !== -1)
}
}
const emits = defineEmits(['confirm'])
function confirm() {
show.value = false;
title.value = form.value.title
droneEnumValue.value = form.value.droneEnumValue
emits('confirm')
}
defineExpose({
open
})
</script>
<style scoped>
</style>
... ...
<template>
<div class="air-route-dialog" v-if="show">
<div class="header">
<div class="left">
<el-icon @click="close" class="action" size="30">
<ArrowLeft/>
</el-icon>
<el-icon class="action" :class="{disabled:true}" size="30">
<Document/>
</el-icon>
<folder-setting/>
</div>
<div class="center">
<el-button-group @click="airRouteUpdateDialogRef.open()">
<el-button>{{ title }}</el-button>
<el-button>经纬M30T</el-button>
</el-button-group>
</div>
<div class="right"></div>
</div>
<div class="content" style="display: flex;flex: 1;overflow: auto">
<div class="left" style="flex: 2;overflow:auto;">
<placemark-list/>
</div>
<div class="center" style="flex: 6;overflow:auto;">
<cesium-map/>
</div>
<div class="right" style="flex: 3;overflow:auto;">
<pre style="height: 100%" lang="xml"><code>{{ js2xml(DocumentElement, {spaces: 2}) }}</code> </pre>
</div>
</div>
</div>
<air-route-update-dialog ref="airRouteUpdateDialogRef"/>
</template>
<script setup lang="ts">
import {computed, inject, ref, type WritableComputedRef} from "vue";
import {ArrowLeft, Document} from "@element-plus/icons-vue";
import {type Element, js2xml, xml2json} from "xml-js";
import FolderSetting from "@/components/air-route/components/folder-setting.vue";
import AirRouteUpdateDialog from "@/components/air-route/components/air-route-update-dialog.vue";
import PlacemarkList from "@/components/air-route/components/placemark-list.vue";
import CesiumMap from "@/components/air-route/components/cesium-map.vue";
const show = ref(false)
const title = inject("title");
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const airRouteUpdateDialogRef = ref()
async function open() {
show.value = true
}
function close() {
show.value = false
}
const emits = defineEmits(['save'])
function save() {
emits('save')
}
defineExpose({
open,
})
</script>
<style scoped>
.air-route-dialog {
width: 100vw;
height: 100vh;
position: fixed;
top: 0;
left: 0;
z-index: 99;
background: #232323;
display: flex;
flex-direction: column;
.header {
display: flex;
padding: 10px;
border-bottom: 1px solid #4f4f4f;
z-index: 100;
.left {
display: flex;
flex: 1;
.action {
cursor: pointer;
margin: 0 5px;
&:hover {
color: #409eff;
}
&.disabled {
cursor: not-allowed;
opacity: 0.5;
&:hover {
color: unset;
}
}
}
}
.center {
flex: 3;
display: flex;
justify-content: center;
}
.right {
flex: 1;
}
}
}
</style>
... ...
<template>
<el-dialog v-model="show" title="编辑">
<el-form labelPosition="top">
<el-form-item label="选择飞行器">
<l-select-box :options="optionsGroup.map((item,index)=>({...item,value:index}))" v-model="form.selectGroup"
@select="onChangeGroup"/>
</el-form-item>
<el-form-item label="选择型号">
<l-select-box :options="optionsGroup[form.selectGroup].children" v-model="form.droneEnumValue"/>
</el-form-item>
<el-form-item title="航线名称">
<el-input v-model="form.title"/>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="show = false">取消</el-button>
<el-button type="primary" @click="confirm">
确定
</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup lang="ts">
import {type Element, js2xml, xml2js} from "xml-js";
import {inject, ref, type WritableComputedRef} from "vue";
import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
import LSelectBox from "@/components/air-route/components/l-select-box.vue";
const form = ref({})
const title = inject("title");
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const show = ref(false)
const {elment: droneInfoElement} = useXMLComputed(DocumentElement, 'wpml:droneInfo')
const {text: droneEnumValue} = useXMLComputed(droneInfoElement, 'wpml:droneEnumValue', {
defaultText: 'Matrice 4E'
})
const optionsGroup = ref([
{
label: 'Matrice 30 系列',
children: [
{
label: 'Matrice 30',
value: 'Matrice 30',
},
{
label: 'Matrice 30T',
value: 'Matrice 30T',
},
]
}, {
label: 'Matrice 4 系列',
children: [
{
label: 'Matrice 4E',
value: 'Matrice 4E',
},
{
label: 'Matrice 4T',
value: 'Matrice 4T',
},
]
}
])
function onChangeGroup() {
form.value.droneEnumValue = optionsGroup.value[form.value.selectGroup].children[0].value
}
async function open() {
show.value = true;
form.value = {
title: title.value,
droneEnumValue: droneEnumValue.value,
selectGroup: optionsGroup.value.findIndex(v => v.children.findIndex(v => v.value === droneEnumValue.value) !== -1)
}
}
const emits = defineEmits(['confirm'])
function confirm() {
show.value = false;
title.value = form.value.title
droneEnumValue.value = form.value.droneEnumValue
emits('confirm')
}
defineExpose({
open
})
</script>
<style scoped>
</style>
... ...
<template>
<div style="width: 100%;height: 100%;">
<div id="cesium-map" style="width: 100%;height: 100%;"></div>
</div>
</template>
<script setup lang="ts">
import * as Cesium from "cesium";
import "cesium/Build/Cesium/Widgets/widgets.css";
import {inject, onMounted, ref, shallowRef, watch, type WritableComputedRef} from "vue";
import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
import type {Element} from "xml-js";
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const viewer = shallowRef()
function initCesium() {
viewer.value = new Cesium.Viewer("cesium-map", {
animation: false,
baseLayerPicker: false,
fullscreenButton: false,
geocoder: false,
homeButton: false,
sceneModePicker: false,
timeline: false,
navigationHelpButton: false,
infoBox: false,
selectionIndicator: false,
terrainProvider: new Cesium.EllipsoidTerrainProvider()
})
// 添加鼠标移动事件监听
const handler = new Cesium.ScreenSpaceEventHandler(viewer.value.scene.canvas);
let highlightedEntity = null;
handler.setInputAction((movement) => {
try {
const pickedObject = viewer.value.scene.pick(movement.endPosition);
if (pickedObject && pickedObject.id && pointList.value.find((item) => item._id === pickedObject.id._id)) {
viewer.value.scene.canvas.style.cursor = 'pointer';
// 鼠标移入时设置高亮颜色
if (highlightedEntity !== pickedObject.id) {
if (highlightedEntity) {
// 确保highlightedEntity存在point属性
if (highlightedEntity.point) {
highlightedEntity.point.color = Cesium.Color.WHITE;
highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
}
}
highlightedEntity = pickedObject.id;
if (highlightedEntity.point) {
highlightedEntity.point.color = Cesium.Color.GREEN;
highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
}
}
} else if (highlightedEntity) {
viewer.value.scene.canvas.style.cursor = 'default';
// 鼠标移出时恢复颜色
if (highlightedEntity.point) {
highlightedEntity.point.color = Cesium.Color.WHITE;
highlightedEntity.point.outlineColor = Cesium.Color.WHITE;
}
highlightedEntity = null;
}
if (!pickedObject) {
viewer.value.scene.canvas.style.cursor = 'default';
}
} catch (error) {
console.error('Error in mouse move handler:', error);
}
}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
viewer.value.camera.setView({
destination: Cesium.Cartesian3.fromDegrees(102.814068783866, 23.2359655022029, 300.0),
orientation: {
heading: Cesium.Math.toRadians(175.0),
pitch: Cesium.Math.toRadians(-90.0),
roll: 0.0
}
})
drawPlacemark()
if (placemarkList.value.length > 0) {
const {elment: PointElment} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'Point')
const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
separator: ',',
textType: 'number'
})
const {text: executeHeight} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'wpml:executeHeight', {
textType: 'number'
})
drawPointer({
longitude: coordinates.value[0],
latitude: coordinates.value[1],
height: executeHeight.value
})
}
}
const {elment: FolderElement} = useXMLComputed(DocumentElement, 'Folder')
const {list: placemarkList} = useXMLComputedArr(FolderElement, 'Placemark')
watch(placemarkList, () => {
if (viewer.value) {
drawPlacemark()
if (placemarkList.value.length > 0) {
const {elment: PointElment} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'Point')
const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
separator: ',',
textType: 'number'
})
const {text: executeHeight} = useXMLComputed(placemarkList.value[placemarkList.value.length - 1].elment, 'wpml:executeHeight', {
textType: 'number'
})
drawPointer({
longitude: coordinates.value[0],
latitude: coordinates.value[1],
height: executeHeight.value
})
}
}
}, {
deep: true
})
const pointList = ref([])
const polylineList = ref([])
const arrowList = ref([])
//画点和线
function drawPlacemark() {
// 先清除之前的点
pointList.value.forEach(point => viewer.value.entities.remove(point));
pointList.value = [];
// 清除旧连线和箭头
polylineList.value.forEach(line => viewer.value.entities.remove(line));
polylineList.value = [];
arrowList.value.forEach(arrow => viewer.value.entities.remove(arrow));
arrowList.value = [];
placemarkList.value.forEach(({elment}) => {
const {elment: PointElment} = useXMLComputed(elment, 'Point')
const {text: coordinates} = useXMLComputed(PointElment, 'coordinates', {
separator: ',',
textType: 'number'
})
const {text: executeHeight} = useXMLComputed(elment, 'wpml:executeHeight', {
textType: 'number'
})
const point = viewer.value.entities.add({
position: Cesium.Cartesian3.fromDegrees(coordinates.value[0], coordinates.value[1], executeHeight.value),
point: {
pixelSize: 10,
color: Cesium.Color.WHITE,
outlineColor: Cesium.Color.WHITE,
outlineWidth: 2,
disableDepthTestDistance: Number.POSITIVE_INFINITY
}
})
pointList.value.push(point)
})
// 创建连线和方向箭头
for (let i = 0; i < pointList.value.length - 1; i++) {
const start = pointList.value[i].position.getValue();
const end = pointList.value[i + 1].position.getValue();
// 绘制连线
const polyline = viewer.value.entities.add({
polyline: {
positions: [start, end],
width: 3,
material: new Cesium.PolylineDashMaterialProperty({
color: Cesium.Color.GREEN,
gapColor: Cesium.Color.TRANSPARENT,
dashLength: 16.0,
dashPattern: 255
})
}
});
polylineList.value.push(polyline);
}
}
const pointer = ref(null)
/*const cameraEntity = ref(null)*/
const heading = ref(0)
//画移动指针
function drawPointer({longitude, latitude, height}) {
document.removeEventListener('keydown', handleKeyDown);
viewer.value.camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(longitude, latitude - 0.001, height + 100),
orientation: {
heading: Cesium.Math.toRadians(heading.value),
pitch: Cesium.Math.toRadians(-45),
roll: Cesium.Math.toRadians(0)
}
})
if (pointer.value) {
viewer.value.entities.remove(pointer.value);
}
const position = Cesium.Cartesian3.fromDegrees(longitude, latitude, height)
pointer.value = viewer.value.entities.add({
position: position,
cylinder: {
length: 8,
topRadius: 0,
bottomRadius: 3,
slices: 4,
material: Cesium.Color.BLUE.withAlpha(0.8),
outline: true,
outlineColor: Cesium.Color.WHITE,
outlineWidth: 2,
},
orientation: Cesium.Transforms.headingPitchRollQuaternion(position,
new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(90 + heading.value),
Cesium.Math.toRadians(90),
Cesium.Math.toRadians(0))
),
});
document.addEventListener('keydown', handleKeyDown);
}
// 处理键盘事件
function handleKeyDown(event) {
if (!pointer.value) return;
const moveStep = 0.0000001; // 移动步长,可根据需要调整
const currentPos = pointer.value.position.getValue();
const cartographic = Cesium.Cartographic.fromCartesian(currentPos);
switch (event.key.toLowerCase()) {
case 'w':
cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value));
cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value));
break;
case 'a':
cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value - 90));
cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value - 90));
break;
case 'd':
cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value + 90));
cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value + 90));
break;
case 's':
cartographic.latitude += moveStep * Math.cos(Cesium.Math.toRadians(heading.value + 180));
cartographic.longitude += moveStep * Math.sin(Cesium.Math.toRadians(heading.value + 180));
break;
case 'c':
cartographic.height += 1;
break;
case 'z':
cartographic.height -= 1;
break;
case 'q': // 逆时针旋转
heading.value -= 1
pointer.value.orientation = Cesium.Transforms.headingPitchRollQuaternion(currentPos,
new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(90 + heading.value),
Cesium.Math.toRadians(90),
Cesium.Math.toRadians(0))
)
break;
case 'e': // 顺时针旋转
heading.value += 1
pointer.value.orientation = Cesium.Transforms.headingPitchRollQuaternion(currentPos,
new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(90 + heading.value),
Cesium.Math.toRadians(90),
Cesium.Math.toRadians(0))
)
break;
default:
return;
}
const newPosition = Cesium.Cartesian3.fromRadians(
cartographic.longitude,
cartographic.latitude,
cartographic.height
);
pointer.value.position = newPosition;
}
onMounted(() => {
initCesium()
})
</script>
<style scoped></style>
... ...
<template>
<div class="course-setting" style="position: relative">
<el-button @click="headerLeftConfigShow=!headerLeftConfigShow">
<div style="display: flex;align-items: center">
<el-icon>
<Promotion/>
</el-icon>
<span>航线设置</span>
<el-icon :style="{transform:headerLeftConfigShow?'rotateZ(180deg)':'rotateZ(0deg)'}"
style="margin-left: 10px;transition: all .5s">
<ArrowUpBold/>
</el-icon>
</div>
</el-button>
<transition name="drop">
<div v-if="headerLeftConfigShow" class="dialog">
<div class="card">
<div style="display: flex;align-items: center;justify-content: space-between">
<div>已设置参考起飞点</div>
<el-button type="text">重设置起飞点</el-button>
</div>
</div>
<div class="card">
<div>拍照设置</div>
<div style="display: flex;align-items: center;justify-content: space-between;margin-top: 10px">
<el-button round style="flex: 1" v-for="item in photoSettingOptions" @click="selectPhotoSetting(item)"
:key="item.value"
:type="imageFormat?.includes(item.value)?'primary':'info'">{{ item.label }}
</el-button>
</div>
<div style="display: flex;align-items: center;justify-content: space-between;margin-top: 10px">
<div>智能低光</div>
<el-switch active-value="lowLightSmartShooting" inactive-value="normalPhoto" v-model="orientedPhotoMode"/>
</div>
</div>
<div class="card">
<el-button-group style="display: flex">
<el-button v-for="item in flyToWaylineModeOptions" style="flex:1" @click="selectClimbingMode(item)"
:key="item.value"
:type="flyToWaylineMode===item.value?'primary':'info'">{{ item.label }}
</el-button>
</el-button-group>
<div style="display: flex">
<div style="flex: 1;display: flex;align-items: center;justify-content: center">
<el-image style="width: 250px;height: 150px" :src="courseSetting1"/>
</div>
<div style="display: flex;flex-direction: column;width: 80px">
<el-button :disabled="takeOffSecurityHeight>=takeOffSecurityHeightMax" size="small"
style="width: 100%;margin:5px 0"
@click="addTakeOffSecurityHeight(100)">+100
</el-button>
<el-button :disabled="takeOffSecurityHeight>=takeOffSecurityHeightMax" size="small"
style="width: 100%;margin:5px 0"
@click="addTakeOffSecurityHeight(10)">+10
</el-button>
<div style="width: 100%;margin:5px 0;display: flex ;align-items: flex-end">
<span style="font-weight: bold;color: #409eff;font-size: x-large">{{ takeOffSecurityHeight }}</span>
<span style="margin-left: 10px">m</span>
</div>
<el-button :disabled="takeOffSecurityHeight<=takeOffSecurityHeightMin" size="small"
style="width: 100%;margin:5px 0"
@click="addTakeOffSecurityHeight(-10)">-10
</el-button>
<el-button :disabled="takeOffSecurityHeight<=takeOffSecurityHeightMin" size="small"
style="width: 100%;margin:5px 0"
@click="addTakeOffSecurityHeight(-100)">-100
</el-button>
</div>
</div>
</div>
<div class="card">
<div>航海线高度</div>
<el-button-group style="display: flex;margin-top: 10px">
<el-button v-for="item in executeHeightModeOptions" style="flex:1" @click="selectExecuteHeightMode(item)"
:key="item.value"
:type="executeHeightMode===item.value?'primary':'info'">{{ item.label }}
</el-button>
</el-button-group>
<div style="display: flex">
<div style="flex: 1;display: flex;align-items: center;justify-content: center">
<el-image style="width: 250px;height: 150px" :src="courseSetting2"/>
</div>
<div style="display: flex;flex-direction: column;width: 80px">
<el-button :disabled="executeHeight>=executeHeightMax" size="small"
style="width: 100%;margin:5px 0" @click="addExecuteHeight(100)">+100
</el-button>
<el-button :disabled="executeHeight>=executeHeightMax" size="small"
style="width: 100%;margin:5px 0" @click="addExecuteHeight(10)">+10
</el-button>
<div style="width: 100%;margin:5px 0;display: flex ;align-items: flex-end">
<span style="font-weight: bold;color: #409eff;font-size: x-large">{{ executeHeight }}</span>
<span style="margin-left: 10px">m</span>
</div>
<el-button :disabled="executeHeight<=executeHeightMin" size="small"
style="width: 100%;margin:5px 0" @click="addExecuteHeight(-10)">-10
</el-button>
<el-button :disabled="executeHeight<=executeHeightMin" size="small"
style="width: 100%;margin:5px 0" @click="addExecuteHeight(-100)">-100
</el-button>
</div>
</div>
</div>
<div class="card">
<div>全局航线速度</div>
<div style="display: flex;margin-top: 10px">
<el-button @click="addAutoFlightSpeed(-1)" :icon="Minus"></el-button>
<div style="flex: 1;display: flex;justify-content: center;align-items: flex-end">
<span style="font-weight: bold;color: #409eff;font-size: x-large">{{ autoFlightSpeed }}</span>
<span style="margin-left: 10px">m/s</span>
</div>
<el-button @click="addAutoFlightSpeed(1)" :icon="Plus"></el-button>
</div>
</div>
<!-- <div class="card">
<div>
<div
style="display: flex;align-items: center;justify-content: space-between;padding: 10px; ">
<span>高级设置</span>
<el-icon @click="moreShow=!moreShow" style="cursor: pointer;transition: all .5s; "
:style="{transform:moreShow?' rotateZ(0deg)':' rotateZ(180deg)'}">
<ArrowUpBold/>
</el-icon>
</div>
<div style="border-bottom: 1px solid #393939"></div>
<div :style="{height:moreShow?'350px':'0'}" style="transition: all .5s;overflow: hidden">
<div class="card">
<div>起飞速度</div>
<div style="display: flex;margin-top: 10px">
<el-button @click="addFlySpeed(-1)" :icon="Minus"></el-button>
<div style="flex: 1;display: flex;justify-content: center;align-items: flex-end">
<span style="font-weight: bold;color: #409eff;font-size: x-large">{{ flySpeed }}</span>
<span style="margin-left: 10px">m/s</span>
</div>
<el-button @click="addFlySpeed(1)" :icon="Plus"></el-button>
</div>
<div style="margin: 5px 0">航点类型</div>
<el-select style="margin: 5px 0"></el-select>
<div style="margin: 5px 0">航点类型</div>
<el-select style="margin: 5px 0"></el-select>
<div style="margin: 5px 0">航点类型</div>
<el-select style="margin: 5px 0"></el-select>
<div style="margin: 5px 0">航点类型</div>
<el-select style="margin: 5px 0"></el-select>
</div>
</div>
</div>
</div>-->
</div>
</transition>
</div>
</template>
<script setup lang="ts">
import {ArrowUpBold, Promotion, Plus, Minus} from "@element-plus/icons-vue";
import {inject, ref, watch, type WritableComputedRef} from "vue";
import courseSetting1 from "../image/courseSetting1.png"
import courseSetting2 from "../image/courseSetting2.png"
import {type Element} from "xml-js";
import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
const headerLeftConfigShow = ref(false)
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const {
elment: missionConfigElement
} = useXMLComputed(DocumentElement, 'wpml:missionConfig')
const {
elment: FolderElement
} = useXMLComputed(DocumentElement, 'Folder')
const {
elment: PlacemarkElement
} = useXMLComputed(FolderElement, 'Placemark')
const {
elment: payloadParamElement
} = useXMLComputed(missionConfigElement, 'wpml:payloadParam')
const {
elment: actionActuatorFuncParamElement
} = useXMLComputed(missionConfigElement, 'wpml:actionActuatorFuncParam')
const {
text: imageFormat
} = useXMLComputed(payloadParamElement, 'wpml:imageFormat', {
separator: ',',
defaultText: ['wide', 'zoom', 'ir']
})
const {
text: payloadLensIndex
} = useXMLComputed(actionActuatorFuncParamElement, 'wpml:payloadLensIndex', {
separator: ',',
defaultText: ['wide', 'zoom', 'ir']
})
const photoSettingOptions = [{
label: '广角照片',
value: 'wide'
}, {
label: '变焦照片',
value: 'zoom'
}, {
label: '红外照片',
value: 'ir'
}]
function selectPhotoSetting(item) {
let arr = imageFormat.value
if (arr.includes(item.value)) {
if (arr.length > 1) {
arr.splice(arr.indexOf(item.value), 1)
imageFormat.value = arr
payloadLensIndex.value = arr
}
} else {
imageFormat.value = [...arr, item.value]
payloadLensIndex.value = [...arr, item.value]
}
}
const {
text: orientedPhotoMode
} = useXMLComputed(actionActuatorFuncParamElement, 'wpml:orientedPhotoMode', {
defaultText: 'normalPhoto'
})
//飞向首航点模式
const {
text: flyToWaylineMode
} = useXMLComputed(missionConfigElement, 'wpml:flyToWaylineMode', {
defaultText: 'safely'
})
const flyToWaylineModeOptions = ref([
{label: '垂直爬升', value: 'safely'},
{label: '倾斜爬升', value: 'pointToPoint'},
])
function selectClimbingMode(item) {
flyToWaylineMode.value = item.value
}
//安全起飞高度
const {
text: takeOffSecurityHeight
} = useXMLComputed(missionConfigElement, 'wpml:takeOffSecurityHeight', {
defaultText: 100,
textType: 'number'
})
const takeOffSecurityHeightMax = ref(1500)
const takeOffSecurityHeightMin = ref(2)
function addTakeOffSecurityHeight(item) {
let res = takeOffSecurityHeight.value + item
if (res <= takeOffSecurityHeightMax.value && res >= takeOffSecurityHeightMin.value) {
takeOffSecurityHeight.value = res
} else {
if (res > takeOffSecurityHeightMax.value) {
takeOffSecurityHeight.value = takeOffSecurityHeightMax.value
}
if (res < takeOffSecurityHeightMin.value) {
takeOffSecurityHeight.value = takeOffSecurityHeightMin.value
}
}
}
//执行高度模式
const {
text: executeHeightMode
} = useXMLComputed(FolderElement, 'wpml:executeHeightMode', {
defaultText: 'relativeToStartPoint',
})
const executeHeightModeOptions = ref([
/* {label: '海拔高度', value: 'WGS84'},*/
{label: '椭球高', value: 'WGS84'},
{label: '相对起飞高度', value: 'relativeToStartPoint'},
{label: '实时仿地模式', value: 'realTimeFollowSurface'},
])
function selectExecuteHeightMode(item) {
executeHeightMode.value = item.value
}
const {list: folderList} = useXMLComputedArr(FolderElement, 'Placemark')
const {
text: executeHeight
} = useXMLComputed(PlacemarkElement, 'wpml:executeHeight', {
defaultText: 100,
textType: 'number'
})
const executeHeightMax = ref(1500)
const executeHeightMin = ref(2)
function addExecuteHeight(item) {
let res = executeHeight.value + item
if (res <= executeHeightMax.value && res >= executeHeightMin.value) {
executeHeight.value = res
} else {
if (res > executeHeightMax.value) {
executeHeight.value = executeHeightMax.value
}
if (res < executeHeightMin.value) {
executeHeight.value = executeHeightMin.value
}
}
folderList.value.forEach(({elment}) => {
const {
text: height
} = useXMLComputed(elment, 'wpml:executeHeight', {
defaultText: 100,
textType: 'number'
})
height.value = executeHeight.value
})
}
const {
text: autoFlightSpeed
} = useXMLComputed(FolderElement, 'wpml:autoFlightSpeed', {
textType: 'number',
defaultText: 10
})
const autoFlightSpeedMax = ref(15)
const autoFlightSpeedMin = ref(1)
function addAutoFlightSpeed(item) {
let res = autoFlightSpeed.value + item
if (res <= autoFlightSpeedMax.value && res >= autoFlightSpeedMin.value) {
autoFlightSpeed.value = res
} else {
if (res > autoFlightSpeedMax.value) {
autoFlightSpeed.value = autoFlightSpeedMax.value
}
if (res < autoFlightSpeedMin.value) {
autoFlightSpeed.value = autoFlightSpeedMin.value
}
}
}
const moreShow = ref(false)
const flySpeed = ref(10)
const flySpeedMax = ref(15)
const flySpeedMin = ref(1)
function addFlySpeed(item) {
let res = flySpeed.value + item
if (res <= flySpeedMax.value && res >= flySpeedMin.value) {
flySpeed.value = res
} else {
if (res > flySpeedMax.value) {
flySpeed.value = flySpeedMax.value
}
if (res < flySpeedMin.value) {
flySpeed.value = flySpeedMin.value
}
}
}
</script>
<style scoped>
.dialog {
background: #101010;
width: 400px;
box-shadow: 0 0 10px 1px rgba(255, 255, 255, 0.1);
position: absolute;
padding: 10px;
border-radius: 10px;
top: calc(100% + 20px);
max-height: 80vh;
overflow: auto;
}
.card {
background: #232323;
padding: 10px;
border-radius: 10px;
& + .card {
margin-top: 20px;
}
}
</style>
... ...
<template>
<div style="display:flex;flex-direction: column;margin: 10px 0;width: 100%">
<div style="display: grid;grid-template-columns: repeat(3,1fr);grid-gap: 20px;margin-top: 10px">
<div v-for="item in options" class="item" @click="onSelect(item)"
:class="{active:multiple?selectValue?.includes(item.value):selectValue===item.value}">{{ item.label }}
</div>
</div>
</div>
</template>
<script setup lang="ts">
import {ref, watch} from "vue";
const props = defineProps({
multiple: {
type: Boolean,
default: false
},
options: {
type: Array,
default: () => []
},
title: {
type: String,
default: '选择'
}
})
const modelValue = defineModel()
const selectValue = ref()
selectValue.value = modelValue.value
watch(modelValue, (v) => {
selectValue.value = v
})
const emits = defineEmits(["select"])
function onSelect(item) {
if (props.multiple) {
if (selectValue.value.includes(item.value)) {
selectValue.value = selectValue.value.filter(v => v !== item.value)
} else {
selectValue.value.push(item.value)
}
} else {
selectValue.value = item.value
}
modelValue.value = selectValue.value
emits('select', selectValue.value)
}
</script>
<style scoped>
.item {
color: #fff;
border-radius: 5px;
background: #3c3c3c;
padding: 20px;
border: 2px solid transparent;
transition: all .2s;
cursor: pointer;
&.active {
background: #234971;
border: 2px solid #2d8cf0;
}
}
</style>
... ...
<template>
<div>{{ index }}</div>
</template>
<script setup lang="ts">
import {useXMLComputed} from "@/components/air-route/components/useXMLComputed.ts";
const props = defineProps({
index: {
type: Number,
required: true
},
item: {
type: Object,
required: true
}
})
const modelValue = defineModel()
const {text: index} = useXMLComputed(props.item.elment, 'wpml:index', {
defaultText: props.index,
textType: 'number'
})
</script>
<style scoped>
</style>
... ...
<template>
<div>航点列表</div>
<div>
<div>
<div>航线长度</div>
<div>626.1m</div>
</div>
<div>
<div>预计执行时间</div>
<div>1m51s</div>
</div>
<div>
<div>航点</div>
<div>626.1m</div>
</div>
<div>
<div>照片</div>
<div>626.1m</div>
</div>
</div>
<div>
<placemark-item v-for="(item,index) in list" :item="item" :index="index"/>
</div>
</template>
<script setup lang="ts">
import {inject, type WritableComputedRef} from "vue";
import type {Element} from "xml-js";
import {useXMLComputed, useXMLComputedArr} from "@/components/air-route/components/useXMLComputed.ts";
import PlacemarkItem from "@/components/air-route/components/placemark-item.vue";
const DocumentElement = inject<WritableComputedRef<Element, Element>>("DocumentElement");
const {elment: FolderElement} = useXMLComputed(DocumentElement, 'Folder')
const {list} = useXMLComputedArr(FolderElement, 'Placemark')
</script>
<style scoped>
</style>
... ...