From 4d363ca54f963508e89821274550045a05c26b25 Mon Sep 17 00:00:00 2001 From: xiaosi <2652281683@qq.com> Date: Tue, 6 May 2025 09:00:36 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E6=8E=A8=E8=BF=9B=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- .env.production | 4 +- components.d.ts | 8 +- package-lock.json | 2305 +++++++++++--------- package.json | 2 + src/app.config.js | 11 +- src/app.js | 12 +- src/assets/droneDisImg.png | Bin 0 -> 7122 bytes src/assets/droneImg.png | Bin 0 -> 7059 bytes src/assets/errPoint.png | Bin 0 -> 86 bytes src/assets/fail.png | Bin 0 -> 7832 bytes src/assets/iconfont.css | 27 - src/assets/iconfont.less | 199 ++ src/assets/iconfont.ttf | Bin 2020 -> 16512 bytes src/assets/iconfont.woff | Bin 1340 -> 10628 bytes src/assets/iconfont.woff2 | Bin 940 -> 9156 bytes src/assets/success.png | Bin 0 -> 10779 bytes src/components/FlightDashboard.vue | 424 ++++ src/components/RealTimeData.vue | 2 +- src/components/SupervisionData.vue | 324 --- src/components/SupervisionSideData.vue | 214 -- src/components/TabBar.vue | 10 +- src/components/TrackPlayback.vue | 180 +- src/config/fcSystemStatus.js | 18 + src/config/flyModeMap.js | 24 + src/config/gpsFixTypeMap.js | 29 + src/config/stageMap.js | 11 + src/config/tipTextMap.js | 126 ++ src/config/urls.js | 112 +- src/core/deviceCruise.js | 296 --- src/core/helper/markHelper.js | 92 + src/core/helper/pinHelper.js | 281 +++ src/core/helper/sceneHelper.js | 273 +++ src/core/useDeviceCruise.js | 461 ++++ src/pages/airfield/index.config.js | 9 + src/pages/airfield/index.vue | 413 ++++ src/pages/airfieldMap/BottomSide.vue | 93 + src/pages/airfieldMap/LeftSide.vue | 222 ++ src/pages/airfieldMap/ResultModal.vue | 124 ++ src/pages/airfieldMap/RightSide.vue | 257 +++ src/pages/airfieldMap/geo.js | 118 + src/pages/airfieldMap/index.config.js | 5 + src/pages/airfieldMap/index.vue | 444 ++++ src/pages/airfieldMap/useConnector.js | 224 ++ src/pages/airfieldMap/useDroneMarker.js | 320 +++ src/pages/flight/index.vue | 40 +- src/pages/flightMap/BottomSide.vue | 113 + src/pages/flightMap/LeftSide.vue | 216 ++ src/pages/flightMap/RightSide.vue | 135 ++ src/pages/flightMap/TopSide.vue | 142 ++ src/pages/flightMap/index.config.js | 2 +- src/pages/flightMap/index.vue | 357 ++- src/pages/flightMap/utils.js | 189 +- src/pages/home/index.vue | 30 +- src/pages/login/index.vue | 172 +- src/pages/own/index.vue | 3 +- src/pages/returnTripMap/utils.js | 6 +- src/pages/studentMap/BottomSide.vue | 93 + src/pages/studentMap/LeftSide.vue | 236 ++ src/pages/studentMap/ResultModal.vue | 124 ++ src/pages/studentMap/RightSide.vue | 146 ++ src/pages/studentMap/geo.js | 118 + src/pages/studentMap/index.config.js | 5 + src/pages/studentMap/index.vue | 402 ++++ src/pages/studentMap/useConnector.js | 224 ++ src/pages/studentMap/useDroneMarker.js | 190 ++ src/pages/supervision/index.vue | 226 +- src/pages/supervisionMap/BottomSide.vue | 93 + src/pages/supervisionMap/LeftSide.vue | 235 ++ src/pages/supervisionMap/ResultModal.vue | 124 ++ src/pages/supervisionMap/RightSide.vue | 146 ++ src/pages/supervisionMap/geo.js | 118 + src/pages/supervisionMap/index.config.js | 4 +- src/pages/supervisionMap/index.vue | 404 ++-- src/pages/supervisionMap/useConnector.js | 224 ++ src/pages/supervisionMap/useDroneMarker.js | 142 ++ src/stores/index.js | 4 +- src/stores/modules/airfieldsStore.js | 143 ++ src/stores/modules/authStore.js | 35 + src/stores/modules/flightStore.js | 28 +- src/stores/modules/standardStore.js | 99 + src/stores/modules/supervisionStore.js | 320 ++- src/utils/geo.js | 118 + src/utils/helpers.js | 25 +- src/utils/http.js | 79 + 85 files changed, 10542 insertions(+), 2646 deletions(-) create mode 100644 src/assets/droneDisImg.png create mode 100644 src/assets/droneImg.png create mode 100644 src/assets/errPoint.png create mode 100644 src/assets/fail.png delete mode 100644 src/assets/iconfont.css create mode 100644 src/assets/iconfont.less create mode 100644 src/assets/success.png create mode 100644 src/components/FlightDashboard.vue delete mode 100644 src/components/SupervisionData.vue delete mode 100644 src/components/SupervisionSideData.vue create mode 100644 src/config/fcSystemStatus.js create mode 100644 src/config/flyModeMap.js create mode 100644 src/config/gpsFixTypeMap.js create mode 100644 src/config/stageMap.js create mode 100644 src/config/tipTextMap.js delete mode 100755 src/core/deviceCruise.js create mode 100644 src/core/helper/markHelper.js create mode 100644 src/core/helper/pinHelper.js create mode 100644 src/core/helper/sceneHelper.js create mode 100755 src/core/useDeviceCruise.js create mode 100644 src/pages/airfield/index.config.js create mode 100644 src/pages/airfield/index.vue create mode 100644 src/pages/airfieldMap/BottomSide.vue create mode 100644 src/pages/airfieldMap/LeftSide.vue create mode 100644 src/pages/airfieldMap/ResultModal.vue create mode 100644 src/pages/airfieldMap/RightSide.vue create mode 100644 src/pages/airfieldMap/geo.js create mode 100644 src/pages/airfieldMap/index.config.js create mode 100644 src/pages/airfieldMap/index.vue create mode 100644 src/pages/airfieldMap/useConnector.js create mode 100644 src/pages/airfieldMap/useDroneMarker.js create mode 100644 src/pages/flightMap/BottomSide.vue create mode 100644 src/pages/flightMap/LeftSide.vue create mode 100644 src/pages/flightMap/RightSide.vue create mode 100644 src/pages/flightMap/TopSide.vue create mode 100644 src/pages/studentMap/BottomSide.vue create mode 100644 src/pages/studentMap/LeftSide.vue create mode 100644 src/pages/studentMap/ResultModal.vue create mode 100644 src/pages/studentMap/RightSide.vue create mode 100644 src/pages/studentMap/geo.js create mode 100644 src/pages/studentMap/index.config.js create mode 100644 src/pages/studentMap/index.vue create mode 100644 src/pages/studentMap/useConnector.js create mode 100644 src/pages/studentMap/useDroneMarker.js create mode 100644 src/pages/supervisionMap/BottomSide.vue create mode 100644 src/pages/supervisionMap/LeftSide.vue create mode 100644 src/pages/supervisionMap/ResultModal.vue create mode 100644 src/pages/supervisionMap/RightSide.vue create mode 100644 src/pages/supervisionMap/geo.js create mode 100644 src/pages/supervisionMap/useConnector.js create mode 100644 src/pages/supervisionMap/useDroneMarker.js create mode 100644 src/stores/modules/airfieldsStore.js create mode 100644 src/stores/modules/standardStore.js create mode 100644 src/utils/geo.js diff --git a/.env.development b/.env.development index 00844ef..fbc5e3c 100644 --- a/.env.development +++ b/.env.development @@ -1,6 +1,6 @@ # 配置文档参考 https://taro-docs.jd.com/docs/next/env-mode-config # TARO_APP_ID="开发环境下的小程序 AppID" -#TARO_APP_API="https://canola-tool.jiagutech.com/api" -TARO_APP_API="http://192.168.10.23:9761" +TARO_APP_API="http://uavedu.jiagutech.com/api" +TARO_APP_WS_API="ws://uavedu.jiagutech.com/api" diff --git a/.env.production b/.env.production index eceed6c..52387f2 100644 --- a/.env.production +++ b/.env.production @@ -1,3 +1,3 @@ # TARO_APP_ID="生产环境下的小程序 AppID" -# TARO_APP_API="https://canola-tool.jiagutech.com/api" -TARO_APP_API="http://192.168.10.23:9761" +TARO_APP_API="http://uavedu.jiagutech.com/api" +TARO_APP_WS_API="ws://uavedu.jiagutech.com/api" diff --git a/components.d.ts b/components.d.ts index 79465a8..0652ef8 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,6 +9,7 @@ declare module 'vue' { export interface GlobalComponents { ExamQuestion: typeof import('./src/components/ExamQuestion.vue')['default'] ExamResult: typeof import('./src/components/ExamResult.vue')['default'] + FlightDashboard: typeof import('./src/components/FlightDashboard.vue')['default'] NutAvatar: typeof import('@nutui/nutui-taro')['Avatar'] NutButton: typeof import('@nutui/nutui-taro')['Button'] NutCell: typeof import('@nutui/nutui-taro')['Cell'] @@ -19,17 +20,20 @@ declare module 'vue' { NutInfiniteloading: typeof import('@nutui/nutui-taro')['Infiniteloading'] NutInput: typeof import('@nutui/nutui-taro')['Input'] NutOverlay: typeof import('@nutui/nutui-taro')['Overlay'] + NutPicker: typeof import('@nutui/nutui-taro')['Picker'] NutPopup: typeof import('@nutui/nutui-taro')['Popup'] + NutRadio: typeof import('@nutui/nutui-taro')['Radio'] + NutRadioGroup: typeof import('@nutui/nutui-taro')['RadioGroup'] NutRange: typeof import('@nutui/nutui-taro')['Range'] NutTabbar: typeof import('@nutui/nutui-taro')['Tabbar'] NutTabbarItem: typeof import('@nutui/nutui-taro')['TabbarItem'] + NutTabPane: typeof import('@nutui/nutui-taro')['TabPane'] + NutTabs: typeof import('@nutui/nutui-taro')['Tabs'] NutTag: typeof import('@nutui/nutui-taro')['Tag'] NutTextarea: typeof import('@nutui/nutui-taro')['Textarea'] NutToast: typeof import('@nutui/nutui-taro')['Toast'] RealTimeData: typeof import('./src/components/RealTimeData.vue')['default'] RoutePointInfo: typeof import('./src/components/RoutePointInfo.vue')['default'] - SupervisionData: typeof import('./src/components/SupervisionData.vue')['default'] - SupervisionSideData: typeof import('./src/components/SupervisionSideData.vue')['default'] TabBar: typeof import('./src/components/TabBar.vue')['default'] TrackPlayback: typeof import('./src/components/TrackPlayback.vue')['default'] } diff --git a/package-lock.json b/package-lock.json index aae6591..9058258 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,6 +28,8 @@ "@tarojs/taro": "3.6.35", "@turf/turf": "^7.2.0", "dayjs": "^1.11.13", + "gcoord": "^1.0.7", + "mathjs": "^14.4.0", "pinia": "^2.2.6", "popmotion": "^11.0.5", "vue": "^3.2.40" @@ -94,30 +96,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.26.2", - "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.2.tgz", - "integrity": "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==", + "version": "7.26.8", + "resolved": "https://registry.npmmirror.com/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.26.10", + "resolved": "https://registry.npmmirror.com/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -133,9 +135,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz", - "integrity": "sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/eslint-parser/-/eslint-parser-7.27.0.tgz", + "integrity": "sha512-dtnzmSjXfgL/HDgMcmsLSzyGbEosi4DrGWoCNfuI+W4IkVJw6izpTe7LtOdwAXnkDqw5yweboYCTkM2rQizCng==", "dev": true, "license": "MIT", "dependencies": { @@ -162,13 +164,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.2", - "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.26.2.tgz", - "integrity": "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.2", - "@babel/types": "^7.26.0", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -189,26 +191,13 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz", - "integrity": "sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", + "@babel/compat-data": "^7.26.8", "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -219,17 +208,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", - "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", + "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", - "@babel/traverse": "^7.25.9", + "@babel/traverse": "^7.27.0", "semver": "^6.3.1" }, "engines": { @@ -240,13 +229,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz", - "integrity": "sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz", + "integrity": "sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "regexpu-core": "^6.1.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -257,9 +246,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", - "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", + "version": "0.6.4", + "resolved": "https://registry.npmmirror.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -341,9 +330,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.26.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -367,14 +356,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz", - "integrity": "sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==", + "version": "7.26.5", + "resolved": "https://registry.npmmirror.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "license": "MIT", "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -383,19 +372,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz", - "integrity": "sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { "version": "7.25.9", "resolved": "https://registry.npmmirror.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", @@ -451,25 +427,25 @@ } }, "node_modules/@babel/helpers": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.26.0.tgz", - "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "license": "MIT", "dependencies": { - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.0" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.26.2", - "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz", - "integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.26.0" + "@babel/types": "^7.27.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -931,14 +907,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", - "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", + "version": "7.26.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/traverse": "^7.26.8" }, "engines": { "node": ">=6.9.0" @@ -965,12 +941,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz", - "integrity": "sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==", + "version": "7.26.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -980,12 +956,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", - "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz", + "integrity": "sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1140,12 +1116,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz", - "integrity": "sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==", + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { @@ -1171,14 +1146,14 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz", - "integrity": "sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA==", + "version": "7.26.5", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/plugin-syntax-flow": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1188,12 +1163,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", - "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { @@ -1297,14 +1272,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz", - "integrity": "sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==", + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-simple-access": "^7.25.9" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1379,12 +1353,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz", - "integrity": "sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==", + "version": "7.26.6", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1637,12 +1611,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", - "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz", + "integrity": "sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1684,15 +1658,15 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", - "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", + "version": "7.26.10", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1750,12 +1724,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", - "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", + "version": "7.26.8", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1765,12 +1739,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", - "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1780,14 +1754,14 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz", - "integrity": "sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", + "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", - "@babel/helper-create-class-features-plugin": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.27.0", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", "@babel/plugin-syntax-typescript": "^7.25.9" }, @@ -1862,14 +1836,14 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.26.0.tgz", - "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "version": "7.26.9", + "resolved": "https://registry.npmmirror.com/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", @@ -1881,9 +1855,9 @@ "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", "@babel/plugin-transform-block-scoping": "^7.25.9", "@babel/plugin-transform-class-properties": "^7.25.9", "@babel/plugin-transform-class-static-block": "^7.26.0", @@ -1894,21 +1868,21 @@ "@babel/plugin-transform-duplicate-keys": "^7.25.9", "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", "@babel/plugin-transform-function-name": "^7.25.9", "@babel/plugin-transform-json-strings": "^7.25.9", "@babel/plugin-transform-literals": "^7.25.9", "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", "@babel/plugin-transform-member-expression-literals": "^7.25.9", "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", "@babel/plugin-transform-modules-systemjs": "^7.25.9", "@babel/plugin-transform-modules-umd": "^7.25.9", "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", "@babel/plugin-transform-numeric-separator": "^7.25.9", "@babel/plugin-transform-object-rest-spread": "^7.25.9", "@babel/plugin-transform-object-super": "^7.25.9", @@ -1924,17 +1898,17 @@ "@babel/plugin-transform-shorthand-properties": "^7.25.9", "@babel/plugin-transform-spread": "^7.25.9", "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.25.9", - "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", "@babel/plugin-transform-unicode-escapes": "^7.25.9", "@babel/plugin-transform-unicode-property-regex": "^7.25.9", "@babel/plugin-transform-unicode-regex": "^7.25.9", "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-corejs3": "^0.11.0", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.38.1", + "core-js-compat": "^3.40.0", "semver": "^6.3.1" }, "engines": { @@ -1959,9 +1933,9 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.25.9.tgz", - "integrity": "sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==", + "version": "7.26.3", + "resolved": "https://registry.npmmirror.com/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", "dev": true, "license": "MIT", "dependencies": { @@ -1980,16 +1954,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", - "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", + "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.25.9", - "@babel/plugin-transform-typescript": "^7.25.9" + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-typescript": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -2018,9 +1992,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.26.0.tgz", - "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2030,9 +2004,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz", - "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/runtime-corejs3/-/runtime-corejs3-7.27.0.tgz", + "integrity": "sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==", "dev": true, "license": "MIT", "dependencies": { @@ -2044,30 +2018,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.25.9.tgz", - "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.9", - "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.25.9.tgz", - "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.25.9", - "@babel/generator": "^7.25.9", - "@babel/parser": "^7.25.9", - "@babel/template": "^7.25.9", - "@babel/types": "^7.25.9", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2076,9 +2050,9 @@ } }, "node_modules/@babel/types": { - "version": "7.26.0", - "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz", - "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", + "version": "7.27.0", + "resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.9", @@ -2491,9 +2465,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.1", - "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", - "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "version": "4.6.1", + "resolved": "https://registry.npmmirror.com/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz", + "integrity": "sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==", "dev": true, "license": "MIT", "dependencies": { @@ -2773,9 +2747,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -3469,13 +3443,13 @@ }, "node_modules/@nutui/icons-vue-taro": { "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@nutui/icons-vue-taro/-/icons-vue-taro-0.0.9.tgz", + "resolved": "https://registry.npmmirror.com/@nutui/icons-vue-taro/-/icons-vue-taro-0.0.9.tgz", "integrity": "sha512-10VYAtFC+o1X0anGs+y2PgF1NWMeLFz2JVMRw4BWLg6wbtVbYy9wukLxyGhZC6Yf6t39DcwaGVda8paV7K6/Ew==", "license": "MIT" }, "node_modules/@nutui/nutui-taro": { "version": "4.3.13", - "resolved": "https://registry.npmjs.org/@nutui/nutui-taro/-/nutui-taro-4.3.13.tgz", + "resolved": "https://registry.npmmirror.com/@nutui/nutui-taro/-/nutui-taro-4.3.13.tgz", "integrity": "sha512-+n8vVZAu92MUX6VEf6gO73Iz3JThjksdb6aSarvciCSydlWWdlQqZwYIGMTG4zOwDfCoQ3HfLa36zVaIJLSn3g==", "license": "MIT", "dependencies": { @@ -3510,9 +3484,9 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.0.tgz", - "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", "hasInstallScript": true, "license": "MIT", "optional": true, @@ -3530,25 +3504,25 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.0", - "@parcel/watcher-darwin-arm64": "2.5.0", - "@parcel/watcher-darwin-x64": "2.5.0", - "@parcel/watcher-freebsd-x64": "2.5.0", - "@parcel/watcher-linux-arm-glibc": "2.5.0", - "@parcel/watcher-linux-arm-musl": "2.5.0", - "@parcel/watcher-linux-arm64-glibc": "2.5.0", - "@parcel/watcher-linux-arm64-musl": "2.5.0", - "@parcel/watcher-linux-x64-glibc": "2.5.0", - "@parcel/watcher-linux-x64-musl": "2.5.0", - "@parcel/watcher-win32-arm64": "2.5.0", - "@parcel/watcher-win32-ia32": "2.5.0", - "@parcel/watcher-win32-x64": "2.5.0" + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.0.tgz", - "integrity": "sha512-qlX4eS28bUcQCdribHkg/herLe+0A9RyYC+mm2PXpncit8z5b3nSqGVzMNR3CmtAOgRutiZ02eIJJgP/b1iEFQ==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", "cpu": [ "arm64" ], @@ -3566,9 +3540,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", - "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", "cpu": [ "arm64" ], @@ -3586,9 +3560,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.0.tgz", - "integrity": "sha512-9rhlwd78saKf18fT869/poydQK8YqlU26TMiNg7AIu7eBp9adqbJZqmdFOsbZ5cnLp5XvRo9wcFmNHgHdWaGYA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", "cpu": [ "x64" ], @@ -3606,9 +3580,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.0.tgz", - "integrity": "sha512-syvfhZzyM8kErg3VF0xpV8dixJ+RzbUaaGaeb7uDuz0D3FK97/mZ5AJQ3XNnDsXX7KkFNtyQyFrXZzQIcN49Tw==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", "cpu": [ "x64" ], @@ -3626,9 +3600,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.0.tgz", - "integrity": "sha512-0VQY1K35DQET3dVYWpOaPFecqOT9dbuCfzjxoQyif1Wc574t3kOSkKevULddcR9znz1TcklCE7Ht6NIxjvTqLA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", "cpu": [ "arm" ], @@ -3646,9 +3620,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.0.tgz", - "integrity": "sha512-6uHywSIzz8+vi2lAzFeltnYbdHsDm3iIB57d4g5oaB9vKwjb6N6dRIgZMujw4nm5r6v9/BQH0noq6DzHrqr2pA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", "cpu": [ "arm" ], @@ -3666,9 +3640,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.0.tgz", - "integrity": "sha512-BfNjXwZKxBy4WibDb/LDCriWSKLz+jJRL3cM/DllnHH5QUyoiUNEp3GmL80ZqxeumoADfCCP19+qiYiC8gUBjA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", "cpu": [ "arm64" ], @@ -3686,9 +3660,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.0.tgz", - "integrity": "sha512-S1qARKOphxfiBEkwLUbHjCY9BWPdWnW9j7f7Hb2jPplu8UZ3nes7zpPOW9bkLbHRvWM0WDTsjdOTUgW0xLBN1Q==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", "cpu": [ "arm64" ], @@ -3706,9 +3680,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.0.tgz", - "integrity": "sha512-d9AOkusyXARkFD66S6zlGXyzx5RvY+chTP9Jp0ypSTC9d4lzyRs9ovGf/80VCxjKddcUvnsGwCHWuF2EoPgWjw==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", "cpu": [ "x64" ], @@ -3726,9 +3700,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.0.tgz", - "integrity": "sha512-iqOC+GoTDoFyk/VYSFHwjHhYrk8bljW6zOhPuhi5t9ulqiYq1togGJB5e3PwYVFFfeVgc6pbz3JdQyDoBszVaA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", "cpu": [ "x64" ], @@ -3746,9 +3720,9 @@ } }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.0.tgz", - "integrity": "sha512-twtft1d+JRNkM5YbmexfcH/N4znDtjgysFaV9zvZmmJezQsKpkfLYJ+JFV3uygugK6AtIM2oADPkB2AdhBrNig==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", "cpu": [ "arm64" ], @@ -3766,9 +3740,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.0.tgz", - "integrity": "sha512-+rgpsNRKwo8A53elqbbHXdOMtY/tAtTzManTWShB5Kk54N8Q9mzNWV7tV+IbGueCbcj826MfWGU3mprWtuf1TA==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", "cpu": [ "ia32" ], @@ -3786,9 +3760,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.0", - "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.0.tgz", - "integrity": "sha512-lPrxve92zEHdgeff3aiu4gDOIt4u7sJYha6wbdEZDCDUhtjTsOMiaJzG5lMY4GkWH8p0fMmO2Ppq5G5XXG+DQw==", + "version": "2.5.1", + "resolved": "https://registry.npmmirror.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", "cpu": [ "x64" ], @@ -3805,6 +3779,19 @@ "url": "https://opencollective.com/parcel" } }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3817,9 +3804,9 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.3", - "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", - "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "version": "5.1.4", + "resolved": "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "devOptional": true, "license": "MIT", "dependencies": { @@ -4119,9 +4106,9 @@ } }, "node_modules/@swc/types": { - "version": "0.1.12", - "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.12.tgz", - "integrity": "sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==", + "version": "0.1.21", + "resolved": "https://registry.npmmirror.com/@swc/types/-/types-0.1.21.tgz", + "integrity": "sha512-2YEtj5HJVbKivud9N4bpPBAyZhj4S2Ipe5LkUG94alTpr7in/GU/EARgPAd3BwU+YOmFVJC2+kjqhGRi3r0ZpQ==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -4274,9 +4261,9 @@ } }, "node_modules/@tarojs/cli/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -5251,9 +5238,9 @@ } }, "node_modules/@tarojs/webpack5-runner/node_modules/postcss-modules-local-by-default": { - "version": "4.1.0", - "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.1.0.tgz", - "integrity": "sha512-rm0bdSv4jC3BDma3s9H19ZddW0aHX6EoqwDYU2IfZhRN+53QrufTRo2IdkAbRqLx4R2IYbZnbjKKxg4VN5oU9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmmirror.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dev": true, "license": "MIT", "dependencies": { @@ -5301,9 +5288,9 @@ } }, "node_modules/@tarojs/webpack5-runner/node_modules/postcss-selector-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", - "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "version": "7.1.0", + "resolved": "https://registry.npmmirror.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", "dependencies": { @@ -5340,9 +5327,9 @@ } }, "node_modules/@tarojs/webpack5-runner/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -5448,7 +5435,7 @@ }, "node_modules/@turf/along": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/along/-/along-7.2.0.tgz", "integrity": "sha512-Cf+d2LozABdb0TJoIcJwFKB+qisJY4nMUW9z6PAuZ9UCH7AR//hy2Z06vwYCKFZKP4a7DRPkOMBadQABCyoYuw==", "license": "MIT", "dependencies": { @@ -5466,7 +5453,7 @@ }, "node_modules/@turf/angle": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/angle/-/angle-7.2.0.tgz", "integrity": "sha512-b28rs1NO8Dt/MXadFhnpqH7GnEWRsl+xF5JeFtg9+eM/+l/zGrdliPYMZtAj12xn33w22J1X4TRprAI0rruvVQ==", "license": "MIT", "dependencies": { @@ -5483,7 +5470,7 @@ }, "node_modules/@turf/area": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/area/-/area-7.2.0.tgz", "integrity": "sha512-zuTTdQ4eoTI9nSSjerIy4QwgvxqwJVciQJ8tOPuMHbXJ9N/dNjI7bU8tasjhxas/Cx3NE9NxVHtNpYHL0FSzoA==", "license": "MIT", "dependencies": { @@ -5498,7 +5485,7 @@ }, "node_modules/@turf/bbox": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/bbox/-/bbox-7.2.0.tgz", "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", "license": "MIT", "dependencies": { @@ -5513,7 +5500,7 @@ }, "node_modules/@turf/bbox-clip": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/bbox-clip/-/bbox-clip-7.2.0.tgz", "integrity": "sha512-q6RXTpqeUQAYLAieUL1n3J6ukRGsNVDOqcYtfzaJbPW+0VsAf+1cI16sN700t0sekbeU1DH/RRVAHhpf8+36wA==", "license": "MIT", "dependencies": { @@ -5528,7 +5515,7 @@ }, "node_modules/@turf/bbox-polygon": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/bbox-polygon/-/bbox-polygon-7.2.0.tgz", "integrity": "sha512-Aj4G1GAAy26fmOqMjUk0Z+Lcax5VQ9g1xYDbHLQWXvfTsaueBT+RzdH6XPnZ/seEEnZkio2IxE8V5af/osupgA==", "license": "MIT", "dependencies": { @@ -5542,7 +5529,7 @@ }, "node_modules/@turf/bearing": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/bearing/-/bearing-7.2.0.tgz", "integrity": "sha512-Jm0Xt3GgHjRrWvBtAGvgfnADLm+4exud2pRlmCYx8zfiKuNXQFkrcTZcOiJOgTfG20Agq28iSh15uta47jSIbg==", "license": "MIT", "dependencies": { @@ -5557,7 +5544,7 @@ }, "node_modules/@turf/bezier-spline": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/bezier-spline/-/bezier-spline-7.2.0.tgz", "integrity": "sha512-7BPkc3ufYB9KLvcaTpTsnpXzh9DZoENxCS0Ms9XUwuRXw45TpevwUpOsa3atO76iKQ5puHntqFO4zs8IUxBaaA==", "license": "MIT", "dependencies": { @@ -5572,7 +5559,7 @@ }, "node_modules/@turf/boolean-clockwise": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-clockwise/-/boolean-clockwise-7.2.0.tgz", "integrity": "sha512-0fJeFSARxy6ealGBM4Gmgpa1o8msQF87p2Dx5V6uSqzT8VPDegX1NSWl4b7QgXczYa9qv7IAABttdWP0K7Q7eQ==", "license": "MIT", "dependencies": { @@ -5587,7 +5574,7 @@ }, "node_modules/@turf/boolean-concave": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-concave/-/boolean-concave-7.2.0.tgz", "integrity": "sha512-v3dTN04dfO6VqctQj1a+pjDHb6+/Ev90oAR2QjJuAntY4ubhhr7vKeJdk/w+tWNSMKULnYwfe65Du3EOu3/TeA==", "license": "MIT", "dependencies": { @@ -5602,7 +5589,7 @@ }, "node_modules/@turf/boolean-contains": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-contains/-/boolean-contains-7.2.0.tgz", "integrity": "sha512-dgRQm4uVO5XuLee4PLVH7CFQZKdefUBMIXTPITm2oRIDmPLJKHDOFKQTNkGJ73mDKKBR2lmt6eVH3br6OYrEYg==", "license": "MIT", "dependencies": { @@ -5620,7 +5607,7 @@ }, "node_modules/@turf/boolean-crosses": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-crosses/-/boolean-crosses-7.2.0.tgz", "integrity": "sha512-9GyM4UUWFKQOoNhHVSfJBf5XbPy8Fxfz9djjJNAnm/IOl8NmFUSwFPAjKlpiMcr6yuaAoc9R/1KokS9/eLqPvA==", "license": "MIT", "dependencies": { @@ -5638,7 +5625,7 @@ }, "node_modules/@turf/boolean-disjoint": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-disjoint/-/boolean-disjoint-7.2.0.tgz", "integrity": "sha512-xdz+pYKkLMuqkNeJ6EF/3OdAiJdiHhcHCV0ykX33NIuALKIEpKik0+NdxxNsZsivOW6keKwr61SI+gcVtHYcnQ==", "license": "MIT", "dependencies": { @@ -5656,7 +5643,7 @@ }, "node_modules/@turf/boolean-equal": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-equal/-/boolean-equal-7.2.0.tgz", "integrity": "sha512-TmjKYLsxXqEmdDtFq3QgX4aSogiISp3/doeEtDOs3NNSR8susOtBEZkmvwO6DLW+g/rgoQJIBR6iVoWiRqkBxw==", "license": "MIT", "dependencies": { @@ -5673,7 +5660,7 @@ }, "node_modules/@turf/boolean-intersects": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-intersects/-/boolean-intersects-7.2.0.tgz", "integrity": "sha512-GLRyLQgK3F14drkK5Qi9Mv7Z9VT1bgQUd9a3DB3DACTZWDSwfh8YZUFn/HBwRkK8dDdgNEXaavggQHcPi1k9ow==", "license": "MIT", "dependencies": { @@ -5689,7 +5676,7 @@ }, "node_modules/@turf/boolean-overlap": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-overlap/-/boolean-overlap-7.2.0.tgz", "integrity": "sha512-ieM5qIE4anO+gUHIOvEN7CjyowF+kQ6v20/oNYJCp63TVS6eGMkwgd+I4uMzBXfVW66nVHIXjODdUelU+Xyctw==", "license": "MIT", "dependencies": { @@ -5708,7 +5695,7 @@ }, "node_modules/@turf/boolean-parallel": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-parallel/-/boolean-parallel-7.2.0.tgz", "integrity": "sha512-iOtuzzff8nmwv05ROkSvyeGLMrfdGkIi+3hyQ+DH4IVyV37vQbqR5oOJ0Nt3Qq1Tjrq9fvF8G3OMdAv3W2kY9w==", "license": "MIT", "dependencies": { @@ -5725,7 +5712,7 @@ }, "node_modules/@turf/boolean-point-in-polygon": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.2.0.tgz", "integrity": "sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==", "license": "MIT", "dependencies": { @@ -5741,7 +5728,7 @@ }, "node_modules/@turf/boolean-point-on-line": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-point-on-line/-/boolean-point-on-line-7.2.0.tgz", "integrity": "sha512-H/bXX8+2VYeSyH8JWrOsu8OGmeA9KVZfM7M6U5/fSqGsRHXo9MyYJ94k39A9kcKSwI0aWiMXVD2UFmiWy8423Q==", "license": "MIT", "dependencies": { @@ -5756,7 +5743,7 @@ }, "node_modules/@turf/boolean-touches": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-touches/-/boolean-touches-7.2.0.tgz", "integrity": "sha512-8qb1CO+cwFATGRGFgTRjzL9aibfsbI91pdiRl7KIEkVdeN/H9k8FDrUA1neY7Yq48IaciuwqjbbojQ16FD9b0w==", "license": "MIT", "dependencies": { @@ -5773,7 +5760,7 @@ }, "node_modules/@turf/boolean-valid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-valid/-/boolean-valid-7.2.0.tgz", "integrity": "sha512-xb7gdHN8VV6ivPJh6rPpgxmAEGReiRxqY+QZoEZVGpW2dXcmU1BdY6FA6G/cwvggXAXxJBREoANtEDgp/0ySbA==", "license": "MIT", "dependencies": { @@ -5796,7 +5783,7 @@ }, "node_modules/@turf/boolean-within": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/boolean-within/-/boolean-within-7.2.0.tgz", "integrity": "sha512-zB3AiF59zQZ27Dp1iyhp9mVAKOFHat8RDH45TZhLY8EaqdEPdmLGvwMFCKfLryQcUDQvmzP8xWbtUR82QM5C4g==", "license": "MIT", "dependencies": { @@ -5814,7 +5801,7 @@ }, "node_modules/@turf/buffer": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/buffer/-/buffer-7.2.0.tgz", "integrity": "sha512-QH1FTr5Mk4z1kpQNztMD8XBOZfpOXPOtlsxaSAj2kDIf5+LquA6HtJjZrjUngnGtzG5+XwcfyRL4ImvLnFjm5Q==", "license": "MIT", "dependencies": { @@ -5833,7 +5820,7 @@ }, "node_modules/@turf/center": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/center/-/center-7.2.0.tgz", "integrity": "sha512-UTNp9abQ2kuyRg5gCIGDNwwEQeF3NbpYsd1Q0KW9lwWuzbLVNn0sOwbxjpNF4J2HtMOs5YVOcqNvYyuoa2XrXw==", "license": "MIT", "dependencies": { @@ -5848,7 +5835,7 @@ }, "node_modules/@turf/center-mean": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/center-mean/-/center-mean-7.2.0.tgz", "integrity": "sha512-NaW6IowAooTJ35O198Jw3U4diZ6UZCCeJY+4E+WMLpks3FCxMDSHEfO2QjyOXQMGWZnVxVelqI5x9DdniDbQ+A==", "license": "MIT", "dependencies": { @@ -5864,7 +5851,7 @@ }, "node_modules/@turf/center-median": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/center-median/-/center-median-7.2.0.tgz", "integrity": "sha512-/CgVyHNG4zAoZpvkl7qBCe4w7giWNVtLyTU5PoIfg1vWM4VpYw+N7kcBBH46bbzvVBn0vhmZr586r543EwdC/A==", "license": "MIT", "dependencies": { @@ -5882,7 +5869,7 @@ }, "node_modules/@turf/center-of-mass": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/center-of-mass/-/center-of-mass-7.2.0.tgz", "integrity": "sha512-ij3pmG61WQPHGTQvOziPOdIgwTMegkYTwIc71Gl7xn4C0vWH6KLDSshCphds9xdWSXt2GbHpUs3tr4XGntHkEQ==", "license": "MIT", "dependencies": { @@ -5900,7 +5887,7 @@ }, "node_modules/@turf/centroid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/centroid/-/centroid-7.2.0.tgz", "integrity": "sha512-yJqDSw25T7P48au5KjvYqbDVZ7qVnipziVfZ9aSo7P2/jTE7d4BP21w0/XLi3T/9bry/t9PR1GDDDQljN4KfDw==", "license": "MIT", "dependencies": { @@ -5915,7 +5902,7 @@ }, "node_modules/@turf/circle": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/circle/-/circle-7.2.0.tgz", "integrity": "sha512-1AbqBYtXhstrHmnW6jhLwsv7TtmT0mW58Hvl1uZXEDM1NCVXIR50yDipIeQPjrCuJ/Zdg/91gU8+4GuDCAxBGA==", "license": "MIT", "dependencies": { @@ -5930,7 +5917,7 @@ }, "node_modules/@turf/clean-coords": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/clean-coords/-/clean-coords-7.2.0.tgz", "integrity": "sha512-+5+J1+D7wW7O/RDXn46IfCHuX1gIV1pIAQNSA7lcDbr3HQITZj334C4mOGZLEcGbsiXtlHWZiBtm785Vg8i+QQ==", "license": "MIT", "dependencies": { @@ -5945,7 +5932,7 @@ }, "node_modules/@turf/clone": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/clone/-/clone-7.2.0.tgz", "integrity": "sha512-JlGUT+/5qoU5jqZmf6NMFIoLDY3O7jKd53Up+zbpJ2vzUp6QdwdNzwrsCeONhynWM13F0MVtPXH4AtdkrgFk4g==", "license": "MIT", "dependencies": { @@ -5959,7 +5946,7 @@ }, "node_modules/@turf/clusters": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/clusters/-/clusters-7.2.0.tgz", "integrity": "sha512-sKOrIKHHtXAuTKNm2USnEct+6/MrgyzMW42deZ2YG2RRKWGaaxHMFU2Yw71Yk4DqStOqTIBQpIOdrRuSOwbuQw==", "license": "MIT", "dependencies": { @@ -5974,7 +5961,7 @@ }, "node_modules/@turf/clusters-dbscan": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/clusters-dbscan/-/clusters-dbscan-7.2.0.tgz", "integrity": "sha512-VWVUuDreev56g3/BMlnq/81yzczqaz+NVTypN5CigGgP67e+u/CnijphiuhKjtjDd/MzGjXgEWBJc26Y6LYKAw==", "license": "MIT", "dependencies": { @@ -5992,7 +5979,7 @@ }, "node_modules/@turf/clusters-kmeans": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/clusters-kmeans/-/clusters-kmeans-7.2.0.tgz", "integrity": "sha512-BxQdK8jc8Mwm9yoClCYkktm4W004uiQGqb/i/6Y7a8xqgJITWDgTu/cy//wOxAWPk4xfe6MThjnqkszWW8JdyQ==", "license": "MIT", "dependencies": { @@ -6010,7 +5997,7 @@ }, "node_modules/@turf/collect": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/collect/-/collect-7.2.0.tgz", "integrity": "sha512-zRVGDlYS8Bx/Zz4vnEUyRg4dmqHhkDbW/nIUIJh657YqaMj1SFi4Iv2i9NbcurlUBDJFkpuOhCvvEvAdskJ8UA==", "license": "MIT", "dependencies": { @@ -6027,7 +6014,7 @@ }, "node_modules/@turf/combine": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/combine/-/combine-7.2.0.tgz", "integrity": "sha512-VEjm3IvnbMt3IgeRIhCDhhQDbLqCU1/5uN1+j1u6fyA095pCizPThGp4f/COSzC3t1s/iiV+fHuDsB6DihHffQ==", "license": "MIT", "dependencies": { @@ -6042,7 +6029,7 @@ }, "node_modules/@turf/concave": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/concave/-/concave-7.2.0.tgz", "integrity": "sha512-cpaDDlumK762kdadexw5ZAB6g/h2pJdihZ+e65lbQVe3WukJHAANnIEeKsdFCuIyNKrwTz2gWu5ws+OpjP48Yw==", "license": "MIT", "dependencies": { @@ -6063,7 +6050,7 @@ }, "node_modules/@turf/convex": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/convex/-/convex-7.2.0.tgz", "integrity": "sha512-HsgHm+zHRE8yPCE/jBUtWFyaaBmpXcSlyHd5/xsMhSZRImFzRzBibaONWQo7xbKZMISC3Nc6BtUjDi/jEVbqyA==", "license": "MIT", "dependencies": { @@ -6079,7 +6066,7 @@ }, "node_modules/@turf/destination": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/destination/-/destination-7.2.0.tgz", "integrity": "sha512-8DUxtOO0Fvrh1xclIUj3d9C5WS20D21F5E+j+X9Q+ju6fcM4huOqTg5ckV1DN2Pg8caABEc5HEZJnGch/5YnYQ==", "license": "MIT", "dependencies": { @@ -6094,7 +6081,7 @@ }, "node_modules/@turf/difference": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/difference/-/difference-7.2.0.tgz", "integrity": "sha512-NHKD1v3s8RX+9lOpvHJg6xRuJOKiY3qxHhz5/FmE0VgGqnCkE7OObqWZ5SsXG+Ckh0aafs5qKhmDdDV/gGi6JA==", "license": "MIT", "dependencies": { @@ -6110,7 +6097,7 @@ }, "node_modules/@turf/dissolve": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/dissolve/-/dissolve-7.2.0.tgz", "integrity": "sha512-gPG5TE3mAYuZqBut8tPYCKwi4hhx5Cq0ALoQMB9X0hrVtFIKrihrsj98XQM/5pL/UIpAxQfwisQvy6XaOFaoPA==", "license": "MIT", "dependencies": { @@ -6128,7 +6115,7 @@ }, "node_modules/@turf/distance": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/distance/-/distance-7.2.0.tgz", "integrity": "sha512-HBjjXIgEcD/wJYjv7/6OZj5yoky2oUvTtVeIAqO3lL80XRvoYmVg6vkOIu6NswkerwLDDNT9kl7+BFLJoHbh6Q==", "license": "MIT", "dependencies": { @@ -6143,7 +6130,7 @@ }, "node_modules/@turf/distance-weight": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/distance-weight/-/distance-weight-7.2.0.tgz", "integrity": "sha512-NeoyV0fXDH+7nIoNtLjAoH9XL0AS1pmTIyDxEE6LryoDTsqjnuR0YQxIkLCCWDqECoqaOmmBqpeWONjX5BwWCg==", "license": "MIT", "dependencies": { @@ -6160,7 +6147,7 @@ }, "node_modules/@turf/ellipse": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/ellipse/-/ellipse-7.2.0.tgz", "integrity": "sha512-/Y75S5hE2+xjnTw4dXpQ5r/Y2HPM4xrwkPRCCQRpuuboKdEvm42azYmh7isPnMnBTVcmGb9UmGKj0HHAbiwt1g==", "license": "MIT", "dependencies": { @@ -6177,7 +6164,7 @@ }, "node_modules/@turf/envelope": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/envelope/-/envelope-7.2.0.tgz", "integrity": "sha512-xOMtDeNKHwUuDfzQeoSNmdabsP0/IgVDeyzitDe/8j9wTeW+MrKzVbGz7627PT3h6gsO+2nUv5asfKtUbmTyHA==", "license": "MIT", "dependencies": { @@ -6193,7 +6180,7 @@ }, "node_modules/@turf/explode": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/explode/-/explode-7.2.0.tgz", "integrity": "sha512-jyMXg93J1OI7/65SsLE1k9dfQD3JbcPNMi4/O3QR2Qb3BAs2039oFaSjtW+YqhMqVC4V3ZeKebMcJ8h9sK1n+A==", "license": "MIT", "dependencies": { @@ -6208,7 +6195,7 @@ }, "node_modules/@turf/flatten": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/flatten/-/flatten-7.2.0.tgz", "integrity": "sha512-q38Qsqr4l7mxp780zSdn0gp/WLBX+sa+gV6qIbDQ1HKCrrPK8QQJmNx7gk1xxEXVot6tq/WyAPysCQdX+kLmMA==", "license": "MIT", "dependencies": { @@ -6223,7 +6210,7 @@ }, "node_modules/@turf/flip": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/flip/-/flip-7.2.0.tgz", "integrity": "sha512-X0TQ0U/UYh4tyXdLO5itP1sO2HOvfrZC0fYSWmTfLDM14jEPkEK8PblofznfBygL+pIFtOS2is8FuVcp5XxYpQ==", "license": "MIT", "dependencies": { @@ -6239,7 +6226,7 @@ }, "node_modules/@turf/geojson-rbush": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/geojson-rbush/-/geojson-rbush-7.2.0.tgz", "integrity": "sha512-ST8fLv+EwxVkDgsmhHggM0sPk2SfOHTZJkdgMXVFT7gB9o4lF8qk4y4lwvCCGIfFQAp2yv/PN5EaGMEKutk6xw==", "license": "MIT", "dependencies": { @@ -6255,7 +6242,7 @@ }, "node_modules/@turf/great-circle": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/great-circle/-/great-circle-7.2.0.tgz", "integrity": "sha512-n30OiADyOKHhor0aXNgYfXQYXO3UtsOKmhQsY1D89/Oh1nCIXG/1ZPlLL9ZoaRXXBTUBjh99a+K8029NQbGDhw==", "license": "MIT", "dependencies": { @@ -6269,7 +6256,7 @@ }, "node_modules/@turf/helpers": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/helpers/-/helpers-7.2.0.tgz", "integrity": "sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==", "license": "MIT", "dependencies": { @@ -6282,7 +6269,7 @@ }, "node_modules/@turf/hex-grid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/hex-grid/-/hex-grid-7.2.0.tgz", "integrity": "sha512-Yo2yUGxrTCQfmcVsSjDt0G3Veg8YD26WRd7etVPD9eirNNgXrIyZkbYA7zVV/qLeRWVmYIKRXg1USWl7ORQOGA==", "license": "MIT", "dependencies": { @@ -6299,7 +6286,7 @@ }, "node_modules/@turf/interpolate": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/interpolate/-/interpolate-7.2.0.tgz", "integrity": "sha512-Ifgjm1SEo6XujuSAU6lpRMvoJ1SYTreil1Rf5WsaXj16BQJCedht/4FtWCTNhSWTwEz2motQ1WNrjTCuPG94xA==", "license": "MIT", "dependencies": { @@ -6322,7 +6309,7 @@ }, "node_modules/@turf/intersect": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/intersect/-/intersect-7.2.0.tgz", "integrity": "sha512-81GMzKS9pKqLPa61qSlFxLFeAC8XbwyCQ9Qv4z6o5skWk1qmMUbEHeMqaGUTEzk+q2XyhZ0sju1FV4iLevQ/aw==", "license": "MIT", "dependencies": { @@ -6338,7 +6325,7 @@ }, "node_modules/@turf/invariant": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/invariant/-/invariant-7.2.0.tgz", "integrity": "sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==", "license": "MIT", "dependencies": { @@ -6352,7 +6339,7 @@ }, "node_modules/@turf/isobands": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/isobands/-/isobands-7.2.0.tgz", "integrity": "sha512-lYoHeRieFzpBp29Jh19QcDIb0E+dzo/K5uwZuNga4wxr6heNU0AfkD4ByAHYIXHtvmp4m/JpSKq/2N6h/zvBkg==", "license": "MIT", "dependencies": { @@ -6373,7 +6360,7 @@ }, "node_modules/@turf/isolines": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/isolines/-/isolines-7.2.0.tgz", "integrity": "sha512-4ZXKxvA/JKkxAXixXhN3UVza5FABsdYgOWXyYm3L5ryTPJVOYTVSSd9A+CAVlv9dZc3YdlsqMqLTXNOOre/kwg==", "license": "MIT", "dependencies": { @@ -6391,7 +6378,7 @@ }, "node_modules/@turf/jsts": { "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.2.tgz", + "resolved": "https://registry.npmmirror.com/@turf/jsts/-/jsts-2.7.2.tgz", "integrity": "sha512-zAezGlwWHPyU0zxwcX2wQY3RkRpwuoBmhhNE9HY9kWhFDkCxZ3aWK5URKwa/SWKJbj9aztO+8vtdiBA28KVJFg==", "license": "(EDL-1.0 OR EPL-1.0)", "dependencies": { @@ -6400,7 +6387,7 @@ }, "node_modules/@turf/kinks": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/kinks/-/kinks-7.2.0.tgz", "integrity": "sha512-BtxDxGewJR0Q5WR9HKBSxZhirFX+GEH1rD7/EvgDsHS8e1Y5/vNQQUmXdURjdPa4StzaUBsWRU5T3A356gLbPA==", "license": "MIT", "dependencies": { @@ -6414,7 +6401,7 @@ }, "node_modules/@turf/length": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/length/-/length-7.2.0.tgz", "integrity": "sha512-LBmYN+iCgVtWNLsckVnpQIJENqIIPO63mogazMp23lrDGfWXu07zZQ9ZinJVO5xYurXNhc/QI2xxoqt2Xw90Ig==", "license": "MIT", "dependencies": { @@ -6430,7 +6417,7 @@ }, "node_modules/@turf/line-arc": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-arc/-/line-arc-7.2.0.tgz", "integrity": "sha512-kfWzA5oYrTpslTg5fN50G04zSypiYQzjZv3FLjbZkk6kta5fo4JkERKjTeA8x4XNojb+pfmjMBB0yIh2w2dDRw==", "license": "MIT", "dependencies": { @@ -6446,7 +6433,7 @@ }, "node_modules/@turf/line-chunk": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-chunk/-/line-chunk-7.2.0.tgz", "integrity": "sha512-1ODyL5gETtWSL85MPI0lgp/78vl95M39gpeBxePXyDIqx8geDP9kXfAzctuKdxBoR4JmOVM3NT7Fz7h+IEkC+g==", "license": "MIT", "dependencies": { @@ -6462,7 +6449,7 @@ }, "node_modules/@turf/line-intersect": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-intersect/-/line-intersect-7.2.0.tgz", "integrity": "sha512-GhCJVEkc8EmggNi85EuVLoXF5T5jNVxmhIetwppiVyJzMrwkYAkZSYB3IBFYGUUB9qiNFnTwungVSsBV/S8ZiA==", "license": "MIT", "dependencies": { @@ -6477,7 +6464,7 @@ }, "node_modules/@turf/line-offset": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-offset/-/line-offset-7.2.0.tgz", "integrity": "sha512-1+OkYueDCbnEWzbfBh3taVr+3SyM2bal5jfnSEuDiLA6jnlScgr8tn3INo+zwrUkPFZPPAejL1swVyO5TjUahw==", "license": "MIT", "dependencies": { @@ -6492,7 +6479,7 @@ }, "node_modules/@turf/line-overlap": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-overlap/-/line-overlap-7.2.0.tgz", "integrity": "sha512-NNn7/jg53+N10q2Kyt66bEDqN3101iW/1zA5FW7J6UbKApDFkByh+18YZq1of71kS6oUYplP86WkDp16LFpqqw==", "license": "MIT", "dependencies": { @@ -6513,7 +6500,7 @@ }, "node_modules/@turf/line-segment": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-segment/-/line-segment-7.2.0.tgz", "integrity": "sha512-E162rmTF9XjVN4rINJCd15AdQGCBlNqeWN3V0YI1vOUpZFNT2ii4SqEMCcH2d+5EheHLL8BWVwZoOsvHZbvaWA==", "license": "MIT", "dependencies": { @@ -6529,7 +6516,7 @@ }, "node_modules/@turf/line-slice": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-slice/-/line-slice-7.2.0.tgz", "integrity": "sha512-bHotzZIaU1GPV3RMwttYpDrmcvb3X2i1g/WUttPZWtKrEo2VVAkoYdeZ2aFwtogERYS4quFdJ/TDzAtquBC8WQ==", "license": "MIT", "dependencies": { @@ -6544,7 +6531,7 @@ }, "node_modules/@turf/line-slice-along": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-slice-along/-/line-slice-along-7.2.0.tgz", "integrity": "sha512-4/gPgP0j5Rp+1prbhXqn7kIH/uZTmSgiubUnn67F8nb9zE+MhbRglhSlRYEZxAVkB7VrGwjyolCwvrROhjHp2A==", "license": "MIT", "dependencies": { @@ -6560,7 +6547,7 @@ }, "node_modules/@turf/line-split": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-split/-/line-split-7.2.0.tgz", "integrity": "sha512-yJTZR+c8CwoKqdW/aIs+iLbuFwAa3Yan+EOADFQuXXIUGps3bJUXx/38rmowNoZbHyP1np1+OtrotyHu5uBsfQ==", "license": "MIT", "dependencies": { @@ -6582,7 +6569,7 @@ }, "node_modules/@turf/line-to-polygon": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/line-to-polygon/-/line-to-polygon-7.2.0.tgz", "integrity": "sha512-iKpJqc7EYc5NvlD4KaqrKKO6mXR7YWO/YwtW60E2FnsF/blnsy9OfAOcilYHgH3S/V/TT0VedC7DW7Kgjy2EIA==", "license": "MIT", "dependencies": { @@ -6599,7 +6586,7 @@ }, "node_modules/@turf/mask": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/mask/-/mask-7.2.0.tgz", "integrity": "sha512-ulJ6dQqXC0wrjIoqFViXuMUdIPX5Q6GPViZ3kGfeVijvlLM7kTFBsZiPQwALSr5nTQg4Ppf3FD0Jmg8IErPrgA==", "license": "MIT", "dependencies": { @@ -6615,7 +6602,7 @@ }, "node_modules/@turf/meta": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/meta/-/meta-7.2.0.tgz", "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", "license": "MIT", "dependencies": { @@ -6628,7 +6615,7 @@ }, "node_modules/@turf/midpoint": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/midpoint/-/midpoint-7.2.0.tgz", "integrity": "sha512-AMn5S9aSrbXdE+Q4Rj+T5nLdpfpn+mfzqIaEKkYI021HC0vb22HyhQHsQbSeX+AWcS4CjD1hFsYVcgKI+5qCfw==", "license": "MIT", "dependencies": { @@ -6645,7 +6632,7 @@ }, "node_modules/@turf/moran-index": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/moran-index/-/moran-index-7.2.0.tgz", "integrity": "sha512-Aexh1EmXVPJhApr9grrd120vbalIthcIsQ3OAN2Tqwf+eExHXArJEJqGBo9IZiQbIpFJeftt/OvUvlI8BeO1bA==", "license": "MIT", "dependencies": { @@ -6661,7 +6648,7 @@ }, "node_modules/@turf/nearest-neighbor-analysis": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.2.0.tgz", "integrity": "sha512-LmP/crXb7gilgsL0wL9hsygqc537W/a1W5r9XBKJT4SKdqjoXX5APJatJfd3nwXbRIqwDH0cDA9/YyFjBPlKnA==", "license": "MIT", "dependencies": { @@ -6682,7 +6669,7 @@ }, "node_modules/@turf/nearest-point": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/nearest-point/-/nearest-point-7.2.0.tgz", "integrity": "sha512-0wmsqXZ8CGw4QKeZmS+NdjYTqCMC+HXZvM3XAQIU6k6laNLqjad2oS4nDrtcRs/nWDvcj1CR+Io7OiQ6sbpn5Q==", "license": "MIT", "dependencies": { @@ -6699,7 +6686,7 @@ }, "node_modules/@turf/nearest-point-on-line": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/nearest-point-on-line/-/nearest-point-on-line-7.2.0.tgz", "integrity": "sha512-UOhAeoDPVewBQV+PWg1YTMQcYpJsIqfW5+EuZ5vJl60XwUa0+kqB/eVfSLNXmHENjKKIlEt9Oy9HIDF4VeWmXA==", "license": "MIT", "dependencies": { @@ -6716,7 +6703,7 @@ }, "node_modules/@turf/nearest-point-to-line": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/nearest-point-to-line/-/nearest-point-to-line-7.2.0.tgz", "integrity": "sha512-EorU7Qj30A7nAjh++KF/eTPDlzwuuV4neBz7tmSTB21HKuXZAR0upJsx6M2X1CSyGEgNsbFB0ivNKIvymRTKBw==", "license": "MIT", "dependencies": { @@ -6733,7 +6720,7 @@ }, "node_modules/@turf/planepoint": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/planepoint/-/planepoint-7.2.0.tgz", "integrity": "sha512-8Vno01tvi5gThUEKBQ46CmlEKDAwVpkl7stOPFvJYlA1oywjAL4PsmgwjXgleZuFtXQUPBNgv5a42Pf438XP4g==", "license": "MIT", "dependencies": { @@ -6748,7 +6735,7 @@ }, "node_modules/@turf/point-grid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/point-grid/-/point-grid-7.2.0.tgz", "integrity": "sha512-ai7lwBV2FREPW3XiUNohT4opC1hd6+F56qZe20xYhCTkTD9diWjXHiNudQPSmVAUjgMzQGasblQQqvOdL+bJ3Q==", "license": "MIT", "dependencies": { @@ -6765,7 +6752,7 @@ }, "node_modules/@turf/point-on-feature": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/point-on-feature/-/point-on-feature-7.2.0.tgz", "integrity": "sha512-ksoYoLO9WtJ/qI8VI9ltF+2ZjLWrAjZNsCsu8F7nyGeCh4I8opjf4qVLytFG44XA2qI5yc6iXDpyv0sshvP82Q==", "license": "MIT", "dependencies": { @@ -6783,7 +6770,7 @@ }, "node_modules/@turf/point-to-line-distance": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/point-to-line-distance/-/point-to-line-distance-7.2.0.tgz", "integrity": "sha512-fB9Rdnb5w5+t76Gho2dYDkGe20eRrFk8CXi4v1+l1PC8YyLXO+x+l3TrtT8HzL/dVaZeepO6WUIsIw3ditTOPg==", "license": "MIT", "dependencies": { @@ -6805,7 +6792,7 @@ }, "node_modules/@turf/point-to-polygon-distance": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/point-to-polygon-distance/-/point-to-polygon-distance-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/point-to-polygon-distance/-/point-to-polygon-distance-7.2.0.tgz", "integrity": "sha512-w+WYuINgTiFjoZemQwOaQSje/8Kq+uqJOynvx7+gleQPHyWQ3VtTodtV4LwzVzXz8Sf7Mngx1Jcp2SNai5CJYA==", "license": "MIT", "dependencies": { @@ -6824,7 +6811,7 @@ }, "node_modules/@turf/points-within-polygon": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/points-within-polygon/-/points-within-polygon-7.2.0.tgz", "integrity": "sha512-jRKp8/mWNMzA+hKlQhxci97H5nOio9tp14R2SzpvkOt+cswxl+NqTEi1hDd2XetA7tjU0TSoNjEgVY8FfA0S6w==", "license": "MIT", "dependencies": { @@ -6840,7 +6827,7 @@ }, "node_modules/@turf/polygon-smooth": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/polygon-smooth/-/polygon-smooth-7.2.0.tgz", "integrity": "sha512-KCp9wF2IEynvGXVhySR8oQ2razKP0zwg99K+fuClP21pSKCFjAPaihPEYq6e8uI/1J7ibjL5++6EMl+LrUTrLg==", "license": "MIT", "dependencies": { @@ -6855,7 +6842,7 @@ }, "node_modules/@turf/polygon-tangents": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/polygon-tangents/-/polygon-tangents-7.2.0.tgz", "integrity": "sha512-AHUUPmOjiQDrtP/ODXukHBlUG0C/9I1je7zz50OTfl2ZDOdEqFJQC3RyNELwq07grTXZvg5TS5wYx/Y7nsm47g==", "license": "MIT", "dependencies": { @@ -6874,7 +6861,7 @@ }, "node_modules/@turf/polygon-to-line": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/polygon-to-line/-/polygon-to-line-7.2.0.tgz", "integrity": "sha512-9jeTN3LiJ933I5sd4K0kwkcivOYXXm1emk0dHorwXeSFSHF+nlYesEW3Hd889wb9lZd7/SVLMUeX/h39mX+vCA==", "license": "MIT", "dependencies": { @@ -6889,7 +6876,7 @@ }, "node_modules/@turf/polygonize": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/polygonize/-/polygonize-7.2.0.tgz", "integrity": "sha512-U9v+lBhUPDv+nsg/VcScdiqCB59afO6CHDGrwIl2+5i6Ve+/KQKjpTV/R+NqoC1iMXAEq3brY6HY8Ukp/pUWng==", "license": "MIT", "dependencies": { @@ -6907,7 +6894,7 @@ }, "node_modules/@turf/projection": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/projection/-/projection-7.2.0.tgz", "integrity": "sha512-/qke5vJScv8Mu7a+fU3RSChBRijE6EVuFHU3RYihMuYm04Vw8dBMIs0enEpoq0ke/IjSbleIrGQNZIMRX9EwZQ==", "license": "MIT", "dependencies": { @@ -6923,7 +6910,7 @@ }, "node_modules/@turf/quadrat-analysis": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/quadrat-analysis/-/quadrat-analysis-7.2.0.tgz", "integrity": "sha512-fDQh3+ldYNxUqS6QYlvJ7GZLlCeDZR6tD3ikdYtOsSemwW1n/4gm2xcgWJqy3Y0uszBwxc13IGGY7NGEjHA+0w==", "license": "MIT", "dependencies": { @@ -6945,7 +6932,7 @@ }, "node_modules/@turf/random": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/random/-/random-7.2.0.tgz", "integrity": "sha512-fNXs5mOeXsrirliw84S8UCNkpm4RMNbefPNsuCTfZEXhcr1MuHMzq4JWKb4FweMdN1Yx2l/xcytkO0s71cJ50w==", "license": "MIT", "dependencies": { @@ -6959,7 +6946,7 @@ }, "node_modules/@turf/rectangle-grid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/rectangle-grid/-/rectangle-grid-7.2.0.tgz", "integrity": "sha512-f0o5ifvy0Ml/nHDJzMNcuSk4h11aa3BfvQNnYQhLpuTQu03j/ICZNlzKTLxwjcUqvxADUifty7Z9CX5W6zky4A==", "license": "MIT", "dependencies": { @@ -6975,7 +6962,7 @@ }, "node_modules/@turf/rewind": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/rewind/-/rewind-7.2.0.tgz", "integrity": "sha512-SZpRAZiZsE22+HVz6pEID+ST25vOdpAMGk5NO1JeqzhpMALIkIGnkG+xnun2CfYHz7wv8/Z0ADiAvei9rkcQYA==", "license": "MIT", "dependencies": { @@ -6993,7 +6980,7 @@ }, "node_modules/@turf/rhumb-bearing": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/rhumb-bearing/-/rhumb-bearing-7.2.0.tgz", "integrity": "sha512-jbdexlrR8X2ZauUciHx3tRwG+BXoMXke4B8p8/IgDlAfIrVdzAxSQN89FMzIKnjJ/kdLjo9bFGvb92bu31Etug==", "license": "MIT", "dependencies": { @@ -7008,7 +6995,7 @@ }, "node_modules/@turf/rhumb-destination": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/rhumb-destination/-/rhumb-destination-7.2.0.tgz", "integrity": "sha512-U9OLgLAHlH4Wfx3fBZf3jvnkDjdTcfRan5eI7VPV1+fQWkOteATpzkiRjCvSYK575GljVwWBjkKca8LziGWitQ==", "license": "MIT", "dependencies": { @@ -7023,7 +7010,7 @@ }, "node_modules/@turf/rhumb-distance": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/rhumb-distance/-/rhumb-distance-7.2.0.tgz", "integrity": "sha512-NsijTPON1yOc9tirRPEQQuJ5aQi7pREsqchQquaYKbHNWsexZjcDi4wnw2kM3Si4XjmgynT+2f7aXH7FHarHzw==", "license": "MIT", "dependencies": { @@ -7038,7 +7025,7 @@ }, "node_modules/@turf/sample": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/sample/-/sample-7.2.0.tgz", "integrity": "sha512-f+ZbcbQJ9glQ/F26re8LadxO0ORafy298EJZe6XtbctRTJrNus6UNAsl8+GYXFqMnXM22tbTAznnJX3ZiWNorA==", "license": "MIT", "dependencies": { @@ -7052,7 +7039,7 @@ }, "node_modules/@turf/sector": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/sector/-/sector-7.2.0.tgz", "integrity": "sha512-zL06MjbbMG4DdpiNz+Q9Ax8jsCekt3R76uxeWShulAGkyDB5smdBOUDoRwxn05UX7l4kKv4Ucq2imQXhxKFd1w==", "license": "MIT", "dependencies": { @@ -7070,7 +7057,7 @@ }, "node_modules/@turf/shortest-path": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/shortest-path/-/shortest-path-7.2.0.tgz", "integrity": "sha512-6fpx8feZ2jMSaeRaFdqFShGWkNb+veUOeyLFSHA/aRD9n/e9F2pWZoRbQWKbKTpcKFJ2FnDEqCZnh/GrcAsqWA==", "license": "MIT", "dependencies": { @@ -7092,7 +7079,7 @@ }, "node_modules/@turf/simplify": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/simplify/-/simplify-7.2.0.tgz", "integrity": "sha512-9YHIfSc8BXQfi5IvEMbCeQYqNch0UawIGwbboJaoV8rodhtk6kKV2wrpXdGqk/6Thg6/RWvChJFKVVTjVrULyQ==", "license": "MIT", "dependencies": { @@ -7109,7 +7096,7 @@ }, "node_modules/@turf/square": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/square/-/square-7.2.0.tgz", "integrity": "sha512-9pMoAGFvqzCDOlO9IRSSBCGXKbl8EwMx6xRRBMKdZgpS0mZgfm9xiptMmx/t1m4qqHIlb/N+3MUF7iMBx6upcA==", "license": "MIT", "dependencies": { @@ -7124,7 +7111,7 @@ }, "node_modules/@turf/square-grid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/square-grid/-/square-grid-7.2.0.tgz", "integrity": "sha512-EmzGXa90hz+tiCOs9wX+Lak6pH0Vghb7QuX6KZej+pmWi3Yz7vdvQLmy/wuN048+wSkD5c8WUo/kTeNDe7GnmA==", "license": "MIT", "dependencies": { @@ -7139,7 +7126,7 @@ }, "node_modules/@turf/standard-deviational-ellipse": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.2.0.tgz", "integrity": "sha512-+uC0pR2nRjm90JvMXe/2xOCZsYV2II1ZZ2zmWcBWv6bcFXBspcxk2QfCC3k0bj6jDapELzoQgnn3cG5lbdQV2w==", "license": "MIT", "dependencies": { @@ -7158,7 +7145,7 @@ }, "node_modules/@turf/tag": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/tag/-/tag-7.2.0.tgz", "integrity": "sha512-TAFvsbp5TCBqXue8ui+CtcLsPZ6NPC88L8Ad6Hb/R6VAi21qe0U42WJHQYXzWmtThoTNwxi+oKSeFbRDsr0FIA==", "license": "MIT", "dependencies": { @@ -7175,7 +7162,7 @@ }, "node_modules/@turf/tesselate": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/tesselate/-/tesselate-7.2.0.tgz", "integrity": "sha512-zHGcG85aOJJu1seCm+CYTJ3UempX4Xtyt669vFG6Hbr/Hc7ii6STQ2ysFr7lJwFtU9uyYhphVrrgwIqwglvI/Q==", "license": "MIT", "dependencies": { @@ -7190,7 +7177,7 @@ }, "node_modules/@turf/tin": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/tin/-/tin-7.2.0.tgz", "integrity": "sha512-y24Vt3oeE6ZXvyLJamP0Ke02rPlDGE9gF7OFADnR0mT+2uectb0UTIBC3kKzON80TEAlA3GXpKFkCW5Fo/O/Kg==", "license": "MIT", "dependencies": { @@ -7204,7 +7191,7 @@ }, "node_modules/@turf/transform-rotate": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/transform-rotate/-/transform-rotate-7.2.0.tgz", "integrity": "sha512-EMCj0Zqy3cF9d3mGRqDlYnX2ZBXe3LgT+piDR0EuF5c5sjuKErcFcaBIsn/lg1gp4xCNZFinkZ3dsFfgGHf6fw==", "license": "MIT", "dependencies": { @@ -7225,7 +7212,7 @@ }, "node_modules/@turf/transform-scale": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/transform-scale/-/transform-scale-7.2.0.tgz", "integrity": "sha512-HYB+pw938eeI8s1/zSWFy6hq+t38fuUaBb0jJsZB1K9zQ1WjEYpPvKF/0//80zNPlyxLv3cOkeBucso3hzI07A==", "license": "MIT", "dependencies": { @@ -7248,7 +7235,7 @@ }, "node_modules/@turf/transform-translate": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/transform-translate/-/transform-translate-7.2.0.tgz", "integrity": "sha512-zAglR8MKCqkzDTjGMIQgbg/f+Q3XcKVzr9cELw5l9CrS1a0VTSDtBZLDm0kWx0ankwtam7ZmI2jXyuQWT8Gbug==", "license": "MIT", "dependencies": { @@ -7266,7 +7253,7 @@ }, "node_modules/@turf/triangle-grid": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/triangle-grid/-/triangle-grid-7.2.0.tgz", "integrity": "sha512-4gcAqWKh9hg6PC5nNSb9VWyLgl821cwf9yR9yEzQhEFfwYL/pZONBWCO1cwVF23vSYMSMm+/TwqxH4emxaArfw==", "license": "MIT", "dependencies": { @@ -7282,7 +7269,7 @@ }, "node_modules/@turf/truncate": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/truncate/-/truncate-7.2.0.tgz", "integrity": "sha512-jyFzxYbPugK4XjV5V/k6Xr3taBjjvo210IbPHJXw0Zh7Y6sF+hGxeRVtSuZ9VP/6oRyqAOHKUrze+OOkPqBgUg==", "license": "MIT", "dependencies": { @@ -7297,7 +7284,7 @@ }, "node_modules/@turf/turf": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/turf/-/turf-7.2.0.tgz", "integrity": "sha512-G1kKBu4hYgoNoRJgnpJohNuS7bLnoWHZ2G/4wUMym5xOSiYah6carzdTEsMoTsauyi7ilByWHx5UHwbjjCVcBw==", "license": "MIT", "dependencies": { @@ -7423,7 +7410,7 @@ }, "node_modules/@turf/union": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/union/-/union-7.2.0.tgz", "integrity": "sha512-Xex/cfKSmH0RZRWSJl4RLlhSmEALVewywiEXcu0aIxNbuZGTcpNoI0h4oLFrE/fUd0iBGFg/EGLXRL3zTfpg6g==", "license": "MIT", "dependencies": { @@ -7439,7 +7426,7 @@ }, "node_modules/@turf/unkink-polygon": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/unkink-polygon/-/unkink-polygon-7.2.0.tgz", "integrity": "sha512-dFPfzlIgkEr15z6oXVxTSWshWi51HeITGVFtl1GAKGMtiXJx1uMqnfRsvljqEjaQu/4AzG1QAp3b+EkSklQSiQ==", "license": "MIT", "dependencies": { @@ -7457,7 +7444,7 @@ }, "node_modules/@turf/voronoi": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.2.0.tgz", + "resolved": "https://registry.npmmirror.com/@turf/voronoi/-/voronoi-7.2.0.tgz", "integrity": "sha512-3K6N0LtJsWTXxPb/5N2qD9e8f4q8+tjTbGV3lE3v8x06iCnNlnuJnqM5NZNPpvgvCatecBkhClO3/3RndE61Fw==", "license": "MIT", "dependencies": { @@ -7523,7 +7510,7 @@ }, "node_modules/@types/d3-voronoi": { "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", + "resolved": "https://registry.npmmirror.com/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==", "license": "MIT" }, @@ -7559,9 +7546,9 @@ } }, "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==", + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "devOptional": true, "license": "MIT" }, @@ -7579,9 +7566,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.1", - "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.1.tgz", - "integrity": "sha512-CRICJIl0N5cXDONAdlTv5ShATZ4HEwk6kDDIW2/w9qOWKg+NU/5F8wYRWCrONad0/UKkloNSmmyN/wX4rtpbVA==", + "version": "5.0.6", + "resolved": "https://registry.npmmirror.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dev": true, "license": "MIT", "dependencies": { @@ -7615,7 +7602,7 @@ }, "node_modules/@types/geojson": { "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", + "resolved": "https://registry.npmmirror.com/@types/geojson/-/geojson-7946.0.16.tgz", "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==", "license": "MIT" }, @@ -7644,9 +7631,9 @@ "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.15", - "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.15.tgz", - "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "version": "1.17.16", + "resolved": "https://registry.npmmirror.com/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dev": true, "license": "MIT", "dependencies": { @@ -7688,9 +7675,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.13", - "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.13.tgz", - "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "version": "4.17.16", + "resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", "license": "MIT" }, "node_modules/@types/lodash.debounce": { @@ -7723,15 +7710,15 @@ "license": "MIT" }, "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", "license": "MIT" }, "node_modules/@types/node": { - "version": "18.19.64", - "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.64.tgz", - "integrity": "sha512-955mDqvO2vFf/oL7V3WiUtiz+BugyX8uVbaT2H8oj3+8dRyH2FLiNdowe7eNqRM7IOIZvzDH76EoAT+gwm6aIQ==", + "version": "18.19.86", + "resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.86.tgz", + "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -7762,9 +7749,9 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.17", - "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.17.tgz", - "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==", + "version": "6.9.18", + "resolved": "https://registry.npmmirror.com/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "dev": true, "license": "MIT" }, @@ -7835,16 +7822,16 @@ } }, "node_modules/@types/webpack-env": { - "version": "1.18.5", - "resolved": "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.18.5.tgz", - "integrity": "sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==", + "version": "1.18.8", + "resolved": "https://registry.npmmirror.com/@types/webpack-env/-/webpack-env-1.18.8.tgz", + "integrity": "sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==", "dev": true, "license": "MIT" }, "node_modules/@types/ws": { - "version": "8.5.13", - "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.5.13.tgz", - "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "version": "8.18.1", + "resolved": "https://registry.npmmirror.com/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { @@ -8016,9 +8003,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -8057,36 +8044,35 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==", "dev": true, "license": "ISC" }, "node_modules/@vue/babel-helper-vue-transform-on": { - "version": "1.2.5", - "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.2.5.tgz", - "integrity": "sha512-lOz4t39ZdmU4DJAa2hwPYmKc8EsuGa2U0L9KaZaOJUt0UwQNjNA3AZTq6uEivhOKhhG1Wvy96SvYBoFmCg3uuw==", + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-helper-vue-transform-on/-/babel-helper-vue-transform-on-1.4.0.tgz", + "integrity": "sha512-mCokbouEQ/ocRce/FpKCRItGo+013tHg7tixg3DUNS+6bmIchPt66012kBMm476vyEIJPafrvOf4E5OYj3shSw==", "dev": true, "license": "MIT" }, "node_modules/@vue/babel-plugin-jsx": { - "version": "1.2.5", - "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.2.5.tgz", - "integrity": "sha512-zTrNmOd4939H9KsRIGmmzn3q2zvv1mjxkYZHgqHZgDrXz5B1Q3WyGEjO2f+JrmKghvl1JIRcvo63LgM1kH5zFg==", + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-jsx/-/babel-plugin-jsx-1.4.0.tgz", + "integrity": "sha512-9zAHmwgMWlaN6qRKdrg1uKsBKHvnUU+Py+MOCTuYZBoZsopa90Di10QRjB+YPnVss0BZbG/H5XFwJY1fTxJWhA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.6", - "@babel/types": "^7.25.6", - "@vue/babel-helper-vue-transform-on": "1.2.5", - "@vue/babel-plugin-resolve-type": "1.2.5", - "html-tags": "^3.3.1", - "svg-tags": "^1.0.0" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.9", + "@babel/types": "^7.26.9", + "@vue/babel-helper-vue-transform-on": "1.4.0", + "@vue/babel-plugin-resolve-type": "1.4.0", + "@vue/shared": "^3.5.13" }, "peerDependencies": { "@babel/core": "^7.0.0-0" @@ -8098,70 +8084,73 @@ } }, "node_modules/@vue/babel-plugin-resolve-type": { - "version": "1.2.5", - "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.2.5.tgz", - "integrity": "sha512-U/ibkQrf5sx0XXRnUZD1mo5F7PkpKyTbfXM3a3rC4YnUz6crHEz9Jg09jzzL6QYlXNto/9CePdOg/c87O4Nlfg==", + "version": "1.4.0", + "resolved": "https://registry.npmmirror.com/@vue/babel-plugin-resolve-type/-/babel-plugin-resolve-type-1.4.0.tgz", + "integrity": "sha512-4xqDRRbQQEWHQyjlYSgZsWj44KfiF6D+ktCuXyZ8EnVDYV3pztmXJDf1HveAjUAXxAnR8daCQT51RneWWxtTyQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/parser": "^7.25.6", - "@vue/compiler-sfc": "^3.5.3" + "@babel/code-frame": "^7.26.2", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/parser": "^7.26.9", + "@vue/compiler-sfc": "^3.5.13" + }, + "funding": { + "url": "https://github.com/sponsors/sxzz" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/@vue/compiler-core": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.12.tgz", - "integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==", + "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.12", + "@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.12", - "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz", - "integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==", + "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.12", - "@vue/shared": "3.5.12" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz", - "integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==", + "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.12", - "@vue/compiler-dom": "3.5.12", - "@vue/compiler-ssr": "3.5.12", - "@vue/shared": "3.5.12", + "@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.47", + "postcss": "^8.4.48", "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz", - "integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==", + "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.12", - "@vue/shared": "3.5.12" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/component-compiler-utils": { @@ -8241,53 +8230,53 @@ "license": "MIT" }, "node_modules/@vue/reactivity": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.12.tgz", - "integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==", + "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.12" + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.12.tgz", - "integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==", + "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.12", - "@vue/shared": "3.5.12" + "@vue/reactivity": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz", - "integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==", + "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.12", - "@vue/runtime-core": "3.5.12", - "@vue/shared": "3.5.12", + "@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.12", - "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.12.tgz", - "integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==", + "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.12", - "@vue/shared": "3.5.12" + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13" }, "peerDependencies": { - "vue": "3.5.12" + "vue": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.12.tgz", - "integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==", + "version": "3.5.13", + "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, "node_modules/@webassemblyjs/ast": { @@ -8474,9 +8463,9 @@ "license": "BSD-3-Clause" }, "node_modules/abortcontroller-polyfill": { - "version": "1.7.6", - "resolved": "https://registry.npmmirror.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.6.tgz", - "integrity": "sha512-Zypm+LjYdWAzvuypZvDN0smUJrhOurcuBWhhMRBExqVLRvdjp3Z9mASxKyq19K+meZMshwjjy5S0lkm388zE4Q==", + "version": "1.7.8", + "resolved": "https://registry.npmmirror.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "license": "MIT" }, "node_modules/accepts": { @@ -8504,9 +8493,9 @@ } }, "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "version": "8.14.1", + "resolved": "https://registry.npmmirror.com/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "devOptional": true, "license": "MIT", "bin": { @@ -9025,9 +9014,9 @@ "license": "MIT" }, "node_modules/axios": { - "version": "1.7.7", - "resolved": "https://registry.npmmirror.com/axios/-/axios-1.7.7.tgz", - "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "version": "1.8.4", + "resolved": "https://registry.npmmirror.com/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dev": true, "license": "MIT", "dependencies": { @@ -9102,13 +9091,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.12", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", - "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", + "version": "0.4.13", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz", + "integrity": "sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==", "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.3", + "@babel/helper-define-polyfill-provider": "^0.6.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -9116,25 +9105,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", + "version": "0.11.1", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.3", - "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", - "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", + "version": "0.6.4", + "resolved": "https://registry.npmmirror.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.3" + "@babel/helper-define-polyfill-provider": "^0.6.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9285,9 +9274,9 @@ } }, "node_modules/bignumber.js": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", - "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "version": "9.3.0", + "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-9.3.0.tgz", + "integrity": "sha512-EM7aMFTXbptt/wZdMlBv2t8IViwQL+h6SLHosp8Yf0dqJMTnY6iL32opnAB6kAdL0SZPuvcAzFr31o0c/R3/RA==", "license": "MIT", "engines": { "node": "*" @@ -9396,9 +9385,9 @@ } }, "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "license": "MIT", "dependencies": { @@ -9520,9 +9509,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.24.4", + "resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -9539,9 +9528,9 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.1" }, "bin": { @@ -9690,17 +9679,47 @@ } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { "node": ">= 0.4" @@ -9917,9 +9936,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001712", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001712.tgz", - "integrity": "sha512-MBqPpGYYdQ7/hfKiet9SCI+nmN5/hp4ZzveOJubl5DTAMa5oggjAuoi0Z4onBpKPFI2ePGnQuQIzF3VxDjDJig==", + "version": "1.0.30001715", + "resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", + "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", "funding": [ { "type": "opencollective", @@ -10442,6 +10461,19 @@ "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", "license": "MIT" }, + "node_modules/complex.js": { + "version": "2.4.2", + "resolved": "https://registry.npmmirror.com/complex.js/-/complex.js-2.4.2.tgz", + "integrity": "sha512-qtx7HRhPGSCBtGiST4/WGHuW+zeaND/6Ld+db6PbrulIB1i2Ev/2UPiqcmpQNPSyfBKraC0EOvOKCB5dGZKt3g==", + "license": "MIT", + "engines": { + "node": "*" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/component-emitter": { "version": "1.3.1", "resolved": "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz", @@ -10466,9 +10498,9 @@ } }, "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmmirror.com/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "version": "1.8.0", + "resolved": "https://registry.npmmirror.com/compression/-/compression-1.8.0.tgz", + "integrity": "sha512-k6WLKfunuqCYD3t6AsuPGvQWaKwuLLh2/xHNcX4qE+vIfDNXpSqnrhwA7O53R7WVQUnt8dVAIW+YHr7xTgOgGA==", "dev": true, "license": "MIT", "dependencies": { @@ -10509,7 +10541,7 @@ }, "node_modules/concaveman": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", + "resolved": "https://registry.npmmirror.com/concaveman/-/concaveman-1.2.1.tgz", "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", "license": "ISC", "dependencies": { @@ -10751,9 +10783,9 @@ "license": "MIT" }, "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -10763,7 +10795,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -10771,9 +10803,9 @@ } }, "node_modules/core-js": { - "version": "3.39.0", - "resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.39.0.tgz", - "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", + "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==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10783,12 +10815,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.39.0", - "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.39.0.tgz", - "integrity": "sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==", + "version": "3.41.0", + "resolved": "https://registry.npmmirror.com/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "license": "MIT", "dependencies": { - "browserslist": "^4.24.2" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -10796,9 +10828,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.39.0", - "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.39.0.tgz", - "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", + "version": "3.41.0", + "resolved": "https://registry.npmmirror.com/core-js-pure/-/core-js-pure-3.41.0.tgz", + "integrity": "sha512-71Gzp96T9YPk63aUvE5Q5qP+DryB4ZloUZPSOebGM88VNw8VNfvdA7z6kGA8iGOTEzAomsRidp4jXSmUIJsL+Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -10839,9 +10871,9 @@ "license": "MIT" }, "node_modules/cross-spawn": { - "version": "7.0.5", - "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.5.tgz", - "integrity": "sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==", + "version": "7.0.6", + "resolved": "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "license": "MIT", "dependencies": { "path-key": "^3.1.0", @@ -11030,9 +11062,9 @@ "license": "MIT" }, "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11042,7 +11074,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -11241,13 +11273,13 @@ }, "node_modules/d3-array": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "resolved": "https://registry.npmmirror.com/d3-array/-/d3-array-1.2.4.tgz", "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==", "license": "BSD-3-Clause" }, "node_modules/d3-geo": { "version": "1.7.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", + "resolved": "https://registry.npmmirror.com/d3-geo/-/d3-geo-1.7.1.tgz", "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", "license": "BSD-3-Clause", "dependencies": { @@ -11256,7 +11288,7 @@ }, "node_modules/d3-voronoi": { "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "resolved": "https://registry.npmmirror.com/d3-voronoi/-/d3-voronoi-1.1.2.tgz", "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==", "license": "BSD-3-Clause" }, @@ -11295,9 +11327,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmmirror.com/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmmirror.com/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -11349,10 +11381,9 @@ } }, "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true, + "version": "10.5.0", + "resolved": "https://registry.npmmirror.com/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", "license": "MIT" }, "node_modules/decode-uri-component": { @@ -11798,9 +11829,9 @@ } }, "node_modules/depcheck/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -11849,16 +11880,13 @@ } }, "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "devOptional": true, + "version": "2.0.4", + "resolved": "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "dev": true, "license": "Apache-2.0", - "bin": { - "detect-libc": "bin/detect-libc.js" - }, "engines": { - "node": ">=0.10" + "node": ">=8" } }, "node_modules/detect-node": { @@ -11897,9 +11925,9 @@ } }, "node_modules/dingtalk-jsapi": { - "version": "2.15.4", - "resolved": "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-2.15.4.tgz", - "integrity": "sha512-pPETqUhLJYKNZIewnS9hU1/QqcdRbP2Q9sHySimko0C2nm/n9NoakVLtcKwdqgORq1dkPIP/jqv7RnESxhA2bA==", + "version": "2.15.6", + "resolved": "https://registry.npmmirror.com/dingtalk-jsapi/-/dingtalk-jsapi-2.15.6.tgz", + "integrity": "sha512-804mFz2AFV/H9ysmo7dLqMjSGOQgREsgQIuep+Xg+yNQeQtnUOYntElEzlB798Sj/691e4mMKz9mtQ7v9qdjuA==", "license": "MIT", "dependencies": { "promise-polyfill": "^7.1.0" @@ -12070,9 +12098,9 @@ } }, "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "version": "16.5.0", + "resolved": "https://registry.npmmirror.com/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -12149,6 +12177,21 @@ "node": ">=4" } }, + "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==", + "dev": true, + "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/duplexer3": { "version": "0.1.5", "resolved": "https://registry.npmmirror.com/duplexer3/-/duplexer3-0.1.5.tgz", @@ -12158,7 +12201,7 @@ }, "node_modules/earcut": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "resolved": "https://registry.npmmirror.com/earcut/-/earcut-2.2.4.tgz", "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", "license": "ISC" }, @@ -12188,9 +12231,9 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.58", - "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.58.tgz", - "integrity": "sha512-al2l4r+24ZFL7WzyPTlyD0fC33LLzvxqLCwurtBibVPghRGO9hSTl+tis8t1kD7biPiH/en4U0I7o/nQbYeoVA==", + "version": "1.5.141", + "resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.141.tgz", + "integrity": "sha512-qS+qH9oqVYc1ooubTiB9l904WVyM6qNYxtOEEGReoZXw3xlqeYdFr5GclNzbkAufWgwWLEPoDi3d9MoRwwIjGw==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -12231,9 +12274,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.1", + "resolved": "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", + "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", "dev": true, "license": "MIT", "dependencies": { @@ -12304,14 +12347,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, "engines": { "node": ">= 0.4" } @@ -12333,23 +12373,52 @@ "dev": true, "license": "MIT" }, - "node_modules/esbuild": { - "version": "0.19.12", - "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.12.tgz", - "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", - "hasInstallScript": true, + "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==", + "dev": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "es-errors": "^1.3.0" }, "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.12", - "@esbuild/android-arm": "0.19.12", - "@esbuild/android-arm64": "0.19.12", - "@esbuild/android-x64": "0.19.12", + "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==", + "dev": true, + "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.19.12", + "resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", @@ -12851,6 +12920,12 @@ "dev": true, "license": "MIT" }, + "node_modules/escape-latex": { + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/escape-latex/-/escape-latex-1.2.0.tgz", + "integrity": "sha512-nV5aVWW1K0wEiUIEdZ4erkGGH8mDxGyxSeqPzRNtWP7ataw+/olFObw7hujFWlVjNsaDFw5VZ5NzVSIqRgfTiw==", + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", @@ -12979,9 +13054,9 @@ } }, "node_modules/eslint-plugin-vue/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -13385,9 +13460,9 @@ "license": "MIT" }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmmirror.com/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmmirror.com/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dev": true, "license": "MIT", "dependencies": { @@ -13410,7 +13485,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -13425,6 +13500,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -13445,9 +13524,9 @@ "license": "MIT" }, "node_modules/express/node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "version": "0.1.12", + "resolved": "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -13583,9 +13662,9 @@ "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -13593,7 +13672,7 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -13614,16 +13693,26 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.0.3", - "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.3.tgz", - "integrity": "sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==", + "version": "3.0.6", + "resolved": "https://registry.npmmirror.com/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], "license": "BSD-3-Clause" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "devOptional": true, "license": "ISC", "dependencies": { @@ -13998,9 +14087,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.3", + "resolved": "https://registry.npmmirror.com/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -14049,13 +14138,13 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -14089,14 +14178,15 @@ } }, "node_modules/form-data": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.1.tgz", - "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "version": "4.0.2", + "resolved": "https://registry.npmmirror.com/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", "dev": true, "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", "mime-types": "^2.1.12" }, "engines": { @@ -14113,6 +14203,19 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "5.2.2", + "resolved": "https://registry.npmmirror.com/fraction.js/-/fraction.js-5.2.2.tgz", + "integrity": "sha512-uXBDv5knpYmv/2gLzWQ5mBHGBRk9wcKTeWu6GLTUEQfjCxO09uM/mHDrojlL+Q1mVGIIFo149Gba7od1XPgSzQ==", + "license": "MIT", + "engines": { + "node": ">= 12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -14128,7 +14231,7 @@ }, "node_modules/framesync": { "version": "6.1.2", - "resolved": "https://registry.npmjs.org/framesync/-/framesync-6.1.2.tgz", + "resolved": "https://registry.npmmirror.com/framesync/-/framesync-6.1.2.tgz", "integrity": "sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==", "license": "MIT", "dependencies": { @@ -14137,7 +14240,7 @@ }, "node_modules/framesync/node_modules/tslib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "license": "0BSD" }, @@ -14219,6 +14322,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gcoord": { + "version": "1.0.7", + "resolved": "https://registry.npmmirror.com/gcoord/-/gcoord-1.0.7.tgz", + "integrity": "sha512-UCN2iSm69jBOYz2ma2eg5I5imp65Cj70rcTTfMNSNMvZpR1U6oGjmVh080aCvC/6lN1ClkuOoBeaLuebw9AZJg==", + "license": "MIT", + "engines": { + "node": ">=16.11.0" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmmirror.com/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -14230,7 +14342,7 @@ }, "node_modules/geojson-equality-ts": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", + "resolved": "https://registry.npmmirror.com/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", "license": "MIT", "dependencies": { @@ -14239,7 +14351,7 @@ }, "node_modules/geojson-polygon-self-intersections": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", + "resolved": "https://registry.npmmirror.com/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", "license": "MIT", "dependencies": { @@ -14248,13 +14360,13 @@ }, "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-1.1.1.tgz", "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==", "license": "ISC" }, "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-2.0.2.tgz", "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", "license": "MIT", "dependencies": { @@ -14272,17 +14384,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "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", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "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" @@ -14291,6 +14408,20 @@ "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-proxy": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/get-proxy/-/get-proxy-2.1.0.tgz", @@ -14578,13 +14709,13 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -14738,19 +14869,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbol-support-x": { "version": "1.4.2", "resolved": "https://registry.npmmirror.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", @@ -14762,9 +14880,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -14787,6 +14905,22 @@ "node": "*" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-value": { "version": "1.0.0", "resolved": "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz", @@ -14906,7 +15040,7 @@ }, "node_modules/hey-listen": { "version": "1.0.8", - "resolved": "https://registry.npmjs.org/hey-listen/-/hey-listen-1.0.8.tgz", + "resolved": "https://registry.npmmirror.com/hey-listen/-/hey-listen-1.0.8.tgz", "integrity": "sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==", "license": "MIT" }, @@ -15027,9 +15161,9 @@ } }, "node_modules/hls.js": { - "version": "1.5.17", - "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.5.17.tgz", - "integrity": "sha512-wA66nnYFvQa1o4DO/BFgLNRKnBTVXpNeldGRBJ2Y0SvFtdwvFKCbqa9zhHoZLoxHhZ+jYsj3aIBkWQQCPNOhMw==", + "version": "1.6.2", + "resolved": "https://registry.npmmirror.com/hls.js/-/hls.js-1.6.2.tgz", + "integrity": "sha512-rx+pETSCJEDThm/JCm8CuadcAC410cVjb1XVXFNDKFuylaayHk1+tFxhkjvnMDAfqsJHxZXDAJ3Uc2d5xQyWlQ==", "license": "Apache-2.0" }, "node_modules/homedir-polyfill": { @@ -15105,9 +15239,9 @@ } }, "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "version": "2.6.0", + "resolved": "https://registry.npmmirror.com/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { @@ -15234,16 +15368,13 @@ "license": "MIT" }, "node_modules/html-tags": { - "version": "3.3.1", - "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-3.3.1.tgz", - "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "version": "2.0.0", + "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", + "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/html-webpack-plugin": { @@ -15342,9 +15473,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "version": "0.5.10", + "resolved": "https://registry.npmmirror.com/http-parser-js/-/http-parser-js-0.5.10.tgz", + "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", "dev": true, "license": "MIT" }, @@ -15379,9 +15510,9 @@ } }, "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "version": "2.0.9", + "resolved": "https://registry.npmmirror.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz", + "integrity": "sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15563,15 +15694,15 @@ } }, "node_modules/immutable": { - "version": "5.0.2", - "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.0.2.tgz", - "integrity": "sha512-1NU7hWZDkV7hJ4PJ9dur9gTNQ4ePNPN4k9/0YhwjzykTi/+3Q5pF93YU5QoVj8BuOnhLgaY8gs0U2pj4kSYVcw==", + "version": "5.1.1", + "resolved": "https://registry.npmmirror.com/immutable/-/immutable-5.1.1.tgz", + "integrity": "sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==", "license": "MIT" }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmmirror.com/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15803,9 +15934,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmmirror.com/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -16305,6 +16436,12 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/javascript-natural-sort": { + "version": "0.7.1", + "resolved": "https://registry.npmmirror.com/javascript-natural-sort/-/javascript-natural-sort-0.7.1.tgz", + "integrity": "sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==", + "license": "MIT" + }, "node_modules/javascript-stringify": { "version": "2.1.0", "resolved": "https://registry.npmmirror.com/javascript-stringify/-/javascript-stringify-2.1.0.tgz", @@ -16344,9 +16481,9 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmmirror.com/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, "license": "MIT", "bin": { @@ -16455,23 +16592,36 @@ } } }, + "node_modules/jsdom/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmmirror.com/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/jsdom/node_modules/parse5": { - "version": "7.2.1", - "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.2.1.tgz", - "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", + "version": "7.3.0", + "resolved": "https://registry.npmmirror.com/parse5/-/parse5-7.3.0.tgz", + "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^4.5.0" + "entities": "^6.0.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -16577,7 +16727,7 @@ }, "node_modules/jsts": { "version": "2.7.1", - "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz", + "resolved": "https://registry.npmmirror.com/jsts/-/jsts-2.7.1.tgz", "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==", "license": "(EDL-1.0 OR EPL-1.0)", "engines": { @@ -16644,9 +16794,9 @@ } }, "node_modules/less": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "version": "4.3.0", + "resolved": "https://registry.npmmirror.com/less/-/less-4.3.0.tgz", + "integrity": "sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -16658,7 +16808,7 @@ "lessc": "bin/lessc" }, "engines": { - "node": ">=6" + "node": ">=14" }, "optionalDependencies": { "errno": "^0.1.1", @@ -16706,13 +16856,13 @@ } }, "node_modules/lightningcss": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.28.1.tgz", - "integrity": "sha512-KRDkHlLlNj3DWh79CDt93fPlRJh2W1AuHV0ZSZAMMuN7lqlsZTV5842idfS1urWG8q9tc17velp1gCXhY7sLnQ==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.29.3.tgz", + "integrity": "sha512-GlOJwTIP6TMIlrTFsxTerwC0W6OpQpCGuX1ECRLBUVRh6fpJH3xTqjCjRgQHTb4ZXexH9rtHou1Lf03GKzmhhQ==", "dev": true, "license": "MPL-2.0", "dependencies": { - "detect-libc": "^1.0.3" + "detect-libc": "^2.0.3" }, "engines": { "node": ">= 12.0.0" @@ -16722,22 +16872,22 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-darwin-arm64": "1.28.1", - "lightningcss-darwin-x64": "1.28.1", - "lightningcss-freebsd-x64": "1.28.1", - "lightningcss-linux-arm-gnueabihf": "1.28.1", - "lightningcss-linux-arm64-gnu": "1.28.1", - "lightningcss-linux-arm64-musl": "1.28.1", - "lightningcss-linux-x64-gnu": "1.28.1", - "lightningcss-linux-x64-musl": "1.28.1", - "lightningcss-win32-arm64-msvc": "1.28.1", - "lightningcss-win32-x64-msvc": "1.28.1" + "lightningcss-darwin-arm64": "1.29.3", + "lightningcss-darwin-x64": "1.29.3", + "lightningcss-freebsd-x64": "1.29.3", + "lightningcss-linux-arm-gnueabihf": "1.29.3", + "lightningcss-linux-arm64-gnu": "1.29.3", + "lightningcss-linux-arm64-musl": "1.29.3", + "lightningcss-linux-x64-gnu": "1.29.3", + "lightningcss-linux-x64-musl": "1.29.3", + "lightningcss-win32-arm64-msvc": "1.29.3", + "lightningcss-win32-x64-msvc": "1.29.3" } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.28.1.tgz", - "integrity": "sha512-VG3vvzM0m/rguCdm76DdobNeNJnHK+jWcdkNLFWHLh9YCotRvbRIt45JxwcHlIF8TDqWStVLTdghq5NaigVCBQ==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.3.tgz", + "integrity": "sha512-fb7raKO3pXtlNbQbiMeEu8RbBVHnpyqAoxTyTRMEWFQWmscGC2wZxoHzZ+YKAepUuKT9uIW5vL2QbFivTgprZg==", "cpu": [ "arm64" ], @@ -16756,9 +16906,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.28.1.tgz", - "integrity": "sha512-O7ORdislvKfMohFl4Iq7fxKqdJOuuxArcglVI3amuFO5DJ0wfV3Gxgi1JRo49slfr7OVzJQEHLG4muTWYM5cTQ==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.3.tgz", + "integrity": "sha512-KF2XZ4ZdmDGGtEYmx5wpzn6u8vg7AdBHaEOvDKu8GOs7xDL/vcU2vMKtTeNe1d4dogkDdi3B9zC77jkatWBwEQ==", "cpu": [ "x64" ], @@ -16777,9 +16927,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.28.1.tgz", - "integrity": "sha512-b7sF89B31kYYijxVcFO7l5u6UNA862YstNu+3YbLl/IQKzveL4a5cwR5cdpG+OOhErg/c2u9WCmzZoX2I5GBvw==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.3.tgz", + "integrity": "sha512-VUWeVf+V1UM54jv9M4wen9vMlIAyT69Krl9XjI8SsRxz4tdNV/7QEPlW6JASev/pYdiynUCW0pwaFquDRYdxMw==", "cpu": [ "x64" ], @@ -16798,9 +16948,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.28.1.tgz", - "integrity": "sha512-p61kXwvhUDLLzkWHjzSFfUBW/F0iy3jr3CWi3k8SKULtJEsJXTI9DqRm9EixxMSe2AMBQBt4auTYiQL4B1N51A==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.3.tgz", + "integrity": "sha512-UhgZ/XVNfXQVEJrMIWeK1Laj8KbhjbIz7F4znUk7G4zeGw7TRoJxhb66uWrEsonn1+O45w//0i0Fu0wIovYdYg==", "cpu": [ "arm" ], @@ -16819,9 +16969,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.28.1.tgz", - "integrity": "sha512-iO+fN9hOMmzfwqcG2/BgUtMKD48H2JO/SXU44fyIwpY2veb65QF5xiRrQ9l1FwIxbGK3231KBYCtAqv+xf+NsQ==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.3.tgz", + "integrity": "sha512-Pqau7jtgJNmQ/esugfmAT1aCFy/Gxc92FOxI+3n+LbMHBheBnk41xHDhc0HeYlx9G0xP5tK4t0Koy3QGGNqypw==", "cpu": [ "arm64" ], @@ -16840,9 +16990,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.28.1.tgz", - "integrity": "sha512-dnMHeXEmCUzHHZjaDpQBYuBKcN9nPC3nPFKl70bcj5Bkn5EmkcgEqm5p035LKOgvAwk1XwLpQCML6pXmCwz0NQ==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.3.tgz", + "integrity": "sha512-dxakOk66pf7KLS7VRYFO7B8WOJLecE5OPL2YOk52eriFd/yeyxt2Km5H0BjLfElokIaR+qWi33gB8MQLrdAY3A==", "cpu": [ "arm64" ], @@ -16861,9 +17011,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.28.1.tgz", - "integrity": "sha512-7vWDISaMUn+oo2TwRdf2hl/BLdPxvywv9JKEqNZB/0K7bXwV4XE9wN/C2sAp1gGuh6QBA8lpjF4JIPt3HNlCHA==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.3.tgz", + "integrity": "sha512-ySZTNCpbfbK8rqpKJeJR2S0g/8UqqV3QnzcuWvpI60LWxnFN91nxpSSwCbzfOXkzKfar9j5eOuOplf+klKtINg==", "cpu": [ "x64" ], @@ -16882,9 +17032,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.28.1.tgz", - "integrity": "sha512-IHCu9tVGP+x5BCpA2rF3D04DBokcBza/a8AuHQU+1AiMKubuMegPwcL7RatBgK4ztFHeYnnD5NdhwhRfYMAtNA==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.3.tgz", + "integrity": "sha512-3pVZhIzW09nzi10usAXfIGTTSTYQ141dk88vGFNCgawIzayiIzZQxEcxVtIkdvlEq2YuFsL9Wcj/h61JHHzuFQ==", "cpu": [ "x64" ], @@ -16903,9 +17053,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.28.1.tgz", - "integrity": "sha512-Erm72kHmMg/3h350PTseskz+eEGBM17Fuu79WW2Qqt0BfWSF1jHHc12lkJCWMYl5jcBHPs5yZdgNHtJ7IJS3Uw==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.3.tgz", + "integrity": "sha512-VRnkAvtIkeWuoBJeGOTrZxsNp4HogXtcaaLm8agmbYtLDOhQdpgxW6NjZZjDXbvGF+eOehGulXZ3C1TiwHY4QQ==", "cpu": [ "arm64" ], @@ -16924,9 +17074,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.28.1", - "resolved": "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.28.1.tgz", - "integrity": "sha512-ZPQtvx+uQBzrSdHH8p4H3M9Alue+x369TPZAA3b4K3d92FPhpZCuBG04+HQzspam9sVeID9mI6f3VRAs2ezaEA==", + "version": "1.29.3", + "resolved": "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.3.tgz", + "integrity": "sha512-IszwRPu2cPnDQsZpd7/EAr0x2W7jkaWqQ1SwCVIZ/tSbZVXPLt6k8s6FkcyBjViCzvB5CW0We0QbbP7zp2aBjQ==", "cpu": [ "x64" ], @@ -17258,9 +17408,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", + "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" @@ -17333,7 +17483,7 @@ }, "node_modules/marchingsquares": { "version": "1.3.3", - "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz", + "resolved": "https://registry.npmmirror.com/marchingsquares/-/marchingsquares-1.3.3.tgz", "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==", "license": "AGPL-3.0" }, @@ -17355,6 +17505,16 @@ "dev": true, "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/math-random": { "version": "1.0.4", "resolved": "https://registry.npmmirror.com/math-random/-/math-random-1.0.4.tgz", @@ -17362,6 +17522,29 @@ "dev": true, "license": "MIT" }, + "node_modules/mathjs": { + "version": "14.4.0", + "resolved": "https://registry.npmmirror.com/mathjs/-/mathjs-14.4.0.tgz", + "integrity": "sha512-CpoYDhNENefjIG9wU9epr+0pBHzlaySfpWcblZdAf5qXik/j/U8eSmx/oNbmXO0F5PyfwPGVD/wK4VWsTho1SA==", + "license": "Apache-2.0", + "dependencies": { + "@babel/runtime": "^7.26.10", + "complex.js": "^2.2.5", + "decimal.js": "^10.4.3", + "escape-latex": "^1.2.0", + "fraction.js": "^5.2.1", + "javascript-natural-sort": "^0.7.1", + "seedrandom": "^3.0.5", + "tiny-emitter": "^2.1.0", + "typed-function": "^4.2.1" + }, + "bin": { + "mathjs": "bin/cli.js" + }, + "engines": { + "node": ">= 18" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmmirror.com/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", @@ -17610,9 +17793,9 @@ } }, "node_modules/mime-db": { - "version": "1.53.0", - "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.53.0.tgz", - "integrity": "sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==", + "version": "1.54.0", + "resolved": "https://registry.npmmirror.com/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "dev": true, "license": "MIT", "engines": { @@ -17729,9 +17912,9 @@ "license": "MIT" }, "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17741,7 +17924,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -18070,9 +18253,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -18232,9 +18415,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "license": "MIT" }, "node_modules/normalize-package-data": { @@ -18254,9 +18437,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -18474,9 +18657,9 @@ } }, "node_modules/npm-check/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -18561,9 +18744,9 @@ "license": "MIT" }, "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==", + "version": "2.2.20", + "resolved": "https://registry.npmmirror.com/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", "dev": true, "license": "MIT" }, @@ -18642,9 +18825,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", + "version": "1.13.4", + "resolved": "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -18678,15 +18861,17 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -19426,9 +19611,9 @@ } }, "node_modules/pinia": { - "version": "2.2.6", - "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.2.6.tgz", - "integrity": "sha512-vIsR8JkDN5Ga2vAxqOE2cJj4VtsHnzpR1Fz30kClxlh0yCHfec6uoMeM3e/ddqmwFUejK3NlrcQa/shnpyT4hA==", + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/pinia/-/pinia-2.3.1.tgz", + "integrity": "sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==", "license": "MIT", "dependencies": { "@vue/devtools-api": "^6.6.3", @@ -19438,45 +19623,15 @@ "url": "https://github.com/sponsors/posva" }, "peerDependencies": { - "@vue/composition-api": "^1.4.0", "typescript": ">=4.4.4", - "vue": "^2.6.14 || ^3.5.11" + "vue": "^2.7.0 || ^3.5.11" }, "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - }, "typescript": { "optional": true } } }, - "node_modules/pinia/node_modules/vue-demi": { - "version": "0.14.10", - "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", - "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/pinkie": { "version": "2.0.4", "resolved": "https://registry.npmmirror.com/pinkie/-/pinkie-2.0.4.tgz", @@ -19501,9 +19656,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmmirror.com/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "license": "MIT", "engines": { "node": ">= 6" @@ -19600,13 +19755,13 @@ }, "node_modules/point-in-polygon": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "resolved": "https://registry.npmmirror.com/point-in-polygon/-/point-in-polygon-1.1.0.tgz", "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", "license": "MIT" }, "node_modules/point-in-polygon-hao": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", + "resolved": "https://registry.npmmirror.com/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", "license": "MIT", "dependencies": { @@ -19615,13 +19770,13 @@ }, "node_modules/point-in-polygon-hao/node_modules/robust-predicates": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz", "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", "license": "Unlicense" }, "node_modules/polyclip-ts": { "version": "0.16.8", - "resolved": "https://registry.npmjs.org/polyclip-ts/-/polyclip-ts-0.16.8.tgz", + "resolved": "https://registry.npmmirror.com/polyclip-ts/-/polyclip-ts-0.16.8.tgz", "integrity": "sha512-JPtKbDRuPEuAjuTdhR62Gph7Is2BS1Szx69CFOO3g71lpJDFo78k4tFyi+qFOMVPePEzdSKkpGU3NBXPHHjvKQ==", "license": "MIT", "dependencies": { @@ -19631,7 +19786,7 @@ }, "node_modules/popmotion": { "version": "11.0.5", - "resolved": "https://registry.npmjs.org/popmotion/-/popmotion-11.0.5.tgz", + "resolved": "https://registry.npmmirror.com/popmotion/-/popmotion-11.0.5.tgz", "integrity": "sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==", "license": "MIT", "dependencies": { @@ -19643,7 +19798,7 @@ }, "node_modules/popmotion/node_modules/tslib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "license": "0BSD" }, @@ -19658,9 +19813,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "funding": [ { "type": "opencollective", @@ -19677,7 +19832,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -20111,9 +20266,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -21310,13 +21465,16 @@ "license": "ISC" }, "node_modules/psl": { - "version": "1.10.0", - "resolved": "https://registry.npmmirror.com/psl/-/psl-1.10.0.tgz", - "integrity": "sha512-KSKHEbjAnpUuAUserOq0FxGXCUrzC3WniuSJhvdbs102rL55266ZcHBqLWOsG30spQMlPdpy7icATiAQehg/iA==", + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", "dev": true, "license": "MIT", "dependencies": { "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" } }, "node_modules/pump": { @@ -21421,7 +21579,7 @@ }, "node_modules/quickselect": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "resolved": "https://registry.npmmirror.com/quickselect/-/quickselect-2.0.0.tgz", "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", "license": "ISC" }, @@ -21488,7 +21646,7 @@ }, "node_modules/rbush": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "resolved": "https://registry.npmmirror.com/rbush/-/rbush-3.0.1.tgz", "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", "license": "MIT", "dependencies": { @@ -21821,22 +21979,22 @@ } }, "node_modules/regex-parser": { - "version": "2.3.0", - "resolved": "https://registry.npmmirror.com/regex-parser/-/regex-parser-2.3.0.tgz", - "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "version": "2.3.1", + "resolved": "https://registry.npmmirror.com/regex-parser/-/regex-parser-2.3.1.tgz", + "integrity": "sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==", "dev": true, "license": "MIT" }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmmirror.com/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -21877,9 +22035,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.11.2", - "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.11.2.tgz", - "integrity": "sha512-3OGZZ4HoLJkkAZx/48mTXJNlmqTGOzc0o9OWQPuWpkOlXXPbyN6OafCcoXUnBqE2D3f/T5L+pWc1kdEmnfnRsA==", + "version": "0.12.0", + "resolved": "https://registry.npmmirror.com/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "license": "BSD-2-Clause", "dependencies": { "jsesc": "~3.0.2" @@ -21888,6 +22046,18 @@ "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmmirror.com/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmmirror.com/relateurl/-/relateurl-0.2.7.tgz", @@ -22104,18 +22274,21 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmmirror.com/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -22286,9 +22459,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "devOptional": true, "license": "MIT", "engines": { @@ -22312,7 +22485,7 @@ }, "node_modules/robust-predicates": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", + "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-2.0.4.tgz", "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==", "license": "Unlicense" }, @@ -22364,9 +22537,9 @@ "license": "MIT" }, "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "version": "7.8.2", + "resolved": "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -22412,9 +22585,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.80.7", - "resolved": "https://registry.npmmirror.com/sass/-/sass-1.80.7.tgz", - "integrity": "sha512-MVWvN0u5meytrSjsU7AWsbhoXi1sc58zADXFllfZzbsBT1GHjjar6JwBINYPRrkx/zqnQ6uqbQuHgE95O+C+eQ==", + "version": "1.87.0", + "resolved": "https://registry.npmmirror.com/sass/-/sass-1.87.0.tgz", + "integrity": "sha512-d0NoFH4v6SjEK7BoX810Jsrhj7IQSYHAHLi/iSpgqKc7LaIDshFRlSg5LOymf9FqQhxEHs2W5ZQXlvy0KD45Uw==", "license": "MIT", "dependencies": { "chokidar": "^4.0.0", @@ -22467,9 +22640,9 @@ } }, "node_modules/sass/node_modules/chokidar": { - "version": "4.0.1", - "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.1.tgz", - "integrity": "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==", + "version": "4.0.3", + "resolved": "https://registry.npmmirror.com/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "license": "MIT", "dependencies": { "readdirp": "^4.0.1" @@ -22482,12 +22655,12 @@ } }, "node_modules/sass/node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "version": "4.1.2", + "resolved": "https://registry.npmmirror.com/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": ">= 14.18.0" }, "funding": { "type": "individual", @@ -22577,6 +22750,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "license": "0BSD" }, + "node_modules/seedrandom": { + "version": "3.0.5", + "resolved": "https://registry.npmmirror.com/seedrandom/-/seedrandom-3.0.5.tgz", + "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", + "license": "MIT" + }, "node_modules/seek-bzip": { "version": "1.0.6", "resolved": "https://registry.npmmirror.com/seek-bzip/-/seek-bzip-1.0.6.tgz", @@ -22904,16 +23083,73 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -22930,7 +23166,7 @@ }, "node_modules/skmeans": { "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "resolved": "https://registry.npmmirror.com/skmeans/-/skmeans-0.9.7.tgz", "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==", "license": "MIT" }, @@ -23282,9 +23518,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.20", - "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", - "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "version": "3.0.21", + "resolved": "https://registry.npmmirror.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, "license": "CC0-1.0" }, @@ -23347,7 +23583,7 @@ }, "node_modules/splaytree-ts": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/splaytree-ts/-/splaytree-ts-1.0.2.tgz", + "resolved": "https://registry.npmmirror.com/splaytree-ts/-/splaytree-ts-1.0.2.tgz", "integrity": "sha512-0kGecIZNIReCSiznK3uheYB8sbstLjCZLiwcQwbmLhgHJj2gz6OnSPkVzJQCMnmEz1BQ4gPK59ylhBoEWOhGNA==", "license": "BDS-3-Clause" }, @@ -23490,9 +23726,9 @@ } }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.9.0", + "resolved": "https://registry.npmmirror.com/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, "license": "MIT" }, @@ -23720,7 +23956,7 @@ }, "node_modules/style-value-types": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/style-value-types/-/style-value-types-5.1.2.tgz", + "resolved": "https://registry.npmmirror.com/style-value-types/-/style-value-types-5.1.2.tgz", "integrity": "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==", "license": "MIT", "dependencies": { @@ -23730,7 +23966,7 @@ }, "node_modules/style-value-types/node_modules/tslib": { "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "resolved": "https://registry.npmmirror.com/tslib/-/tslib-2.4.0.tgz", "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", "license": "0BSD" }, @@ -24371,16 +24607,6 @@ "dev": true, "license": "ISC" }, - "node_modules/stylelint/node_modules/html-tags": { - "version": "2.0.0", - "resolved": "https://registry.npmmirror.com/html-tags/-/html-tags-2.0.0.tgz", - "integrity": "sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/stylelint/node_modules/ignore": { "version": "3.3.10", "resolved": "https://registry.npmmirror.com/ignore/-/ignore-3.3.10.tgz", @@ -25209,7 +25435,7 @@ }, "node_modules/sweepline-intersections": { "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", + "resolved": "https://registry.npmmirror.com/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", "license": "MIT", "dependencies": { @@ -25430,9 +25656,9 @@ } }, "node_modules/terser": { - "version": "5.36.0", - "resolved": "https://registry.npmmirror.com/terser/-/terser-5.36.0.tgz", - "integrity": "sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==", + "version": "5.39.0", + "resolved": "https://registry.npmmirror.com/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -25449,17 +25675,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.14", + "resolved": "https://registry.npmmirror.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -25483,16 +25709,54 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -25569,9 +25833,15 @@ "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", "license": "MIT" }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==", + "license": "MIT" + }, "node_modules/tinyqueue": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "resolved": "https://registry.npmmirror.com/tinyqueue/-/tinyqueue-2.0.3.tgz", "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", "license": "ISC" }, @@ -25671,7 +25941,7 @@ }, "node_modules/topojson-client": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "resolved": "https://registry.npmmirror.com/topojson-client/-/topojson-client-3.1.0.tgz", "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "license": "ISC", "dependencies": { @@ -25685,7 +25955,7 @@ }, "node_modules/topojson-server": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", + "resolved": "https://registry.npmmirror.com/topojson-server/-/topojson-server-3.0.1.tgz", "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", "license": "ISC", "dependencies": { @@ -25803,9 +26073,9 @@ } }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "1.4.3", + "resolved": "https://registry.npmmirror.com/ts-api-utils/-/ts-api-utils-1.4.3.tgz", + "integrity": "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==", "dev": true, "license": "MIT", "engines": { @@ -25924,6 +26194,15 @@ "node": ">= 0.6" } }, + "node_modules/typed-function": { + "version": "4.2.1", + "resolved": "https://registry.npmmirror.com/typed-function/-/typed-function-4.2.1.tgz", + "integrity": "sha512-EGjWssW7Tsk4DGfE+5yluuljS1OGYWiI1J6e8puZz9nTMM51Oug8CD5Zo4gWMsOhq5BI+1bF+rWTm4Vbj3ivRA==", + "license": "MIT", + "engines": { + "node": ">= 18" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmmirror.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -26185,9 +26464,9 @@ } }, "node_modules/unplugin": { - "version": "1.16.0", - "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.0.tgz", - "integrity": "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==", + "version": "1.16.1", + "resolved": "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.1.tgz", + "integrity": "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==", "devOptional": true, "license": "MIT", "dependencies": { @@ -26322,9 +26601,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -26342,7 +26621,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -26408,9 +26687,9 @@ } }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -26690,16 +26969,16 @@ } }, "node_modules/vue": { - "version": "3.5.12", - "resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.12.tgz", - "integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==", + "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.12", - "@vue/compiler-sfc": "3.5.12", - "@vue/runtime-dom": "3.5.12", - "@vue/server-renderer": "3.5.12", - "@vue/shared": "3.5.12" + "@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": "*" @@ -26710,6 +26989,32 @@ } } }, + "node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/vue-eslint-parser": { "version": "8.3.0", "resolved": "https://registry.npmmirror.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", @@ -26736,9 +27041,9 @@ } }, "node_modules/vue-eslint-parser/node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmmirror.com/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -26877,17 +27182,17 @@ } }, "node_modules/webpack": { - "version": "5.96.1", - "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.96.1.tgz", - "integrity": "sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA==", + "version": "5.99.6", + "resolved": "https://registry.npmmirror.com/webpack/-/webpack-5.99.6.tgz", + "integrity": "sha512-TJOLrJ6oeccsGWPl7ujCYuc0pIq2cNsuD6GZDma8i5o5Npvcco/z+NKvZSFsP0/x6SShVb0+X2JK/JHUjKY9dQ==", "dev": true, "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.14.0", "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", @@ -26901,9 +27206,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", + "schema-utils": "^4.3.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", + "terser-webpack-plugin": "^5.3.11", "watchpack": "^2.4.1", "webpack-sources": "^3.2.3" }, @@ -27000,9 +27305,9 @@ "license": "MIT" }, "node_modules/webpack-dev-middleware/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -27012,7 +27317,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -27130,9 +27435,9 @@ } }, "node_modules/webpack-dev-server/node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -27142,7 +27447,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -27187,10 +27492,40 @@ "dev": true, "license": "MIT" }, + "node_modules/webpack/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmmirror.com/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmmirror.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, "node_modules/webpack/node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "version": "1.7.0", + "resolved": "https://registry.npmmirror.com/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "dev": true, "license": "MIT" }, @@ -27218,16 +27553,24 @@ "node": ">=4.0" } }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmmirror.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "version": "4.3.2", + "resolved": "https://registry.npmmirror.com/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", "dev": true, "license": "MIT", "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" }, "engines": { "node": ">= 10.13.0" @@ -27496,9 +27839,9 @@ } }, "node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "version": "8.18.1", + "resolved": "https://registry.npmmirror.com/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, "license": "MIT", "engines": { @@ -27683,9 +28026,9 @@ } }, "node_modules/yup": { - "version": "1.4.0", - "resolved": "https://registry.npmmirror.com/yup/-/yup-1.4.0.tgz", - "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", + "version": "1.6.1", + "resolved": "https://registry.npmmirror.com/yup/-/yup-1.6.1.tgz", + "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", "license": "MIT", "dependencies": { "property-expr": "^2.0.5", diff --git a/package.json b/package.json index 6eb7c11..858da22 100644 --- a/package.json +++ b/package.json @@ -56,6 +56,8 @@ "@tarojs/taro": "3.6.35", "@turf/turf": "^7.2.0", "dayjs": "^1.11.13", + "gcoord": "^1.0.7", + "mathjs": "^14.4.0", "pinia": "^2.2.6", "popmotion": "^11.0.5", "vue": "^3.2.40" diff --git a/src/app.config.js b/src/app.config.js index 3efadb7..760815a 100644 --- a/src/app.config.js +++ b/src/app.config.js @@ -1,9 +1,12 @@ export default defineAppConfig({ pages: [ 'pages/login/index', + 'pages/studentMap/index', + 'pages/airfieldMap/index', 'pages/supervisionMap/index', - 'pages/supervision/index', + 'pages/airfield/index', 'pages/flightMap/index', + 'pages/supervision/index', 'pages/returnTripMap/index', 'pages/routePlanMap/index', 'pages/home/index', @@ -19,4 +22,10 @@ export default defineAppConfig({ navigationBarTitleText: 'WeChat', navigationBarTextStyle: 'black' }, + // permission: { + // "scope.device": { + // "desc": "需要获取设备信息以提供更好的服务" + // } + // } + // requiredBackgroundModes: ["audio"] }) diff --git a/src/app.js b/src/app.js index 0977927..0fa8f75 100644 --- a/src/app.js +++ b/src/app.js @@ -1,19 +1,25 @@ import { createApp } from 'vue'; import store from './stores'; // import './app.less'; -import './assets/iconfont.css' +import './assets/iconfont.less' // import './common.less'; import { IconFont } from '@nutui/icons-vue-taro'; +import Taro from "@tarojs/taro"; const App = createApp({ - onShow(options) { - console.log('App Show', options); + onShow() { + // 保持屏幕常亮 + Taro.setKeepScreenOn({ + keepScreenOn: true + }); }, // 入口组件不需要实现 render 方法,即使实现了也会被 taro 所覆盖 }) +App.config.warnHandler = () => {}; + App.use(store); App.use(IconFont); diff --git a/src/assets/droneDisImg.png b/src/assets/droneDisImg.png new file mode 100644 index 0000000000000000000000000000000000000000..bc595ff1999677fe8252d49c4d7c7293076320f1 GIT binary patch literal 7122 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 literal 0 HcmV?d00001 diff --git a/src/assets/droneImg.png b/src/assets/droneImg.png new file mode 100644 index 0000000000000000000000000000000000000000..66dbedd0238bc63ee2a3c64203898cab8d98f7b7 GIT binary patch literal 7059 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 LdMb6#?cV+m793Uy literal 0 HcmV?d00001 diff --git a/src/assets/errPoint.png b/src/assets/errPoint.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc4cc83c9b5d765531cf3061344e26ba428e430 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k8}blmSQK*5Dp-y;YjHK@_9X7978x} fCjU5p;DbB^D+A;I)#uDW3K=|I{an^LB{Ts5jNDA7x-9)cA%dRs&YR_`^UMYn2nqAWtN`s%&+5@GdNd=R4d7Cm}d z(W8Cy{0Z-S&zZTu&bjBznVCD0n(8oOLOQ}nj~)>#DavX8;~)PEe7t|T+OQ_)9|7HE zm2~m{;S;{qmq(A7G?e6IbbYc8P2deLmGhLs-RZa`Er6&l?E&W|~^_Z&1;j-Wx z>3pZ1kEC%UA#dK~*^-F3S~dP+BWn%BO9Ix)ID~+PHNxqp84F$RYaWeV(v{F{wb__w z#hbsv`5=Jn^^1gMEQsqN*KtsP$VY8M>j`RLDy(H{CZR8A=kK)_8iI*H@L0 z57HI3rGOst5Dw{*@8q|F&{LUaI$;!aZ{td2l#MTT7+Pt4*&s=}A_W{LTeCv>R-7P; zr$2`>1m&aB44iuKVOA5v*9ruetGLz+S~76p%z5iu@o|d6V6N9g_}vt(9c*z6n%aD_ zo+fsTh_<$}Ck!6z+Z?n*;=JI=u!=2IHDqa7{+nioHC6RQ=GnH87T8{WH#Yz9bnMWi zAvy!d?&1H8sReu`yR9I}PIZrKX{gELK14LoT#z@DM$b6yDW(1;NQ<*-8v&Ml1YR9e%om>TF9J6gQZLQ7(GY$ZcG$10wk?81~@ z5GwKRGy0kJ%98u*rR(LhF+~qmc-n+n^>gqVnt!%Ymd0P)s1F6RGL)E({_Yu^bT#?* zwUI{W@zBy*q9`%DSoWt_buDeN5R%h*u0so-5sIBLc9-zZ?$IgX+L8EEb6K7K#;r0| z1{1zos5ootryTdM$>ncHLJ9S<>q2im_1}C9>xm5JTS4w+g}X;lbgx-8RLY2DwQm-D zYWhz_^N+ZCEqd$+Xic_Kef3NKvKZl)H7PJAXpH5qZu68VbKROJfxqHRH{0|X)BCQG znSs<54l`5Zsj#dF+A?UqvHBCOKfk@@-#F&H4G@wm{5ERI6Mwn7Gj{x=rs?Alm)iM&5O4+&vpIDn{VyVk?xG4)eB|?$~WMV=~mZ1QR>gb5CGJ`|}?@xsz z%|8b(<2Q(~VU+>Aiei^QfH#QlSpWAZt1BHsg3_lYg>g8??kVn2<=At7%Eu{0J2C6V zLu6N+fLvDBHv8j(Fh3&vCHP3L!m1tM0j^r}A}2@S&s$niE2LGv_;L0r`B*)AE(2qX ze@0N%v=9)C5z)Wvr@XQ!WTwZjVsYg|+&Dr6g~6;W&f*Lj4P}rm%DG%jD*o+&gSQmo zCs*Lx4^KF;-1`|4_@BZsu@&koSvR-%aaNKE7Zd-=k9Ez1EW=i92@aPP%(;5|(==9t zRIfet>FLR@0zG0eII2IGII;XX+Z^hXLM}NMSa3MH;j{dyUFEM%%I07U5x%3bv=B6^^6|v4FziQ#Sso`3T#VG4t8UvY-T4u|o-44@_z4_Y&+qy=U*<*pojep|l=8uj3R**Xr(pEMKK-h( z#44}mZ>@;?#|TE%c^+$YG*CS+&4e^5`s;8Hrpd{7lBZqOE-<|R=mlQBU9ItwgNIL-dJ=j;SM`Y70H_CD`UH0{EG ze6AZc%$I}r{lx@6Fjo7rkreTZ;8Ql{Exu$phLkqbQH3f-@lBwr`A@B!{y7W{g$|9- zxP20^K6b<)B+zmpWc|^x%4)Bwp^w}uqtT^`8=ADJD0<2HLGE#no7$-<%osZTON!Kiom^7al35J!h;qkx+*?i0U0W9|9&n z@I(PSpC^66h#)ENUs)fh9xJ+K@ou<&Tw5XFVZ+{rNPe1mf61nYhV(w?M39#MnN*!O z!*@&>n^8w5(a!2{0A5=KnvLRd&_g58u#fVbc8Rh1)6Fgx<2M@9GjN@~tXk-MMSl3f zrmXfl#j(|(2ON*|n?jig*_=^wP=CXX3Ls9%npgYGG<9P62-!FhN_85Kdb+Zk)9diX zruu6#6`lGz4bs-99-5UcQ5@GvCYHojD>#+Z}aJ(gV$B!L5sB%K6DXk z8@1$yn#rRhY}J%4Ta_6H*i9KU~7JQ1ijFLKx)iFM`IBMpf zsBwum9`1M=$Bx0Ihryki$+=F0ue7bBK{xWuBlh0Beej9G4N~B1wXaV(dN?io0>wT?;eF5q0TtXri$liz(oW&Y#vi`wO74xm7ErW zSocK%?}sSh?Oa<6#vqB2Aoe<6*$y!2ejp%D*!qS$heXelRIvMQ^Jy!+ma3e#KJ$^> z>St88`n|)iF=VpUM+=rTMc+7&(Ew57Z)*AA0l8dM{DH~Q)r)1*={roIvLldW^&XB2! zfXZqmYRYeTvGjD|@Pz>MJto$1L{lFeMHuezAV#t<$*fr3M9zNIgv1!QFWlBp#FlPP z1!U3r2K@+Y=TJ^LRI(95A785vHvCaZ`!J~KCHNeXo3RpS!*F|3$K_8X?|+ar74EQ~ zwAI>4KF3`=;sqpO$JU}elJCAP9PoSuzVKjYahz|;lS9vzC0x;Z9z_CQE2a}f?NoEr zsVEy0fq0>RA?^jsTNy-Zcjrh-0?~ZA^;Gw{2;cZbz(+~MAz?%39QM{0(3VkOscM}2 zyiRoEuFjb+`^JLnaLHotjwSABE|hDRY3n^E#kOvcu(vG4VmvU{;f5FGIh*=Xte_+O zLn3=@0}AYmBKIdoz^L=?o=@MCqvrFZUo4%f0qcE5owV|79F|pnd4t%RXDA;W-EJOHO_qrbKAVfjvv|BR z!dCaVcT=qC1#cWH)@Bmq*m|i=ftTA80%xMNZArwOfX)lf&TC!g);Q!tvj#)js#0;- zaZX0VNBC!2I0a2>)pd?(`#9##b^Wb`ar#<(Es{K<_!8%y54SAf%Kh>=TnIVw*v+-m zZWr7e(F`%!P9t9^@dqJhDGd$(+%x4LxiBVCQa5p6P5a8Xjr!djSwhR zte>r@@(X$w3~6TfJ#kj}mxp>%8Wz z3+ZVqsLe0R?1VMFC0IIF%O(!b-FA1)T{6?LX;v6?FG%w)N;7;CGog>WVEs4Tm@@j> z*YIQwDG%11gzN#3aQo=pX#ubH(4F%lTg!syV}YQBG6QAb^5|8*-OKrgz`t&;G z(TYyu4Wr`4vOg*Kl8Ni1w^~v^iNi}>G#kcWqcooJ6xkJKt7W!ns;THqU=8Tr#W=(z z2J}>;6=kD>!*FZ3t09J6u|;!t%q*^NBH>&7rjHXmo~q&Kh;V-Kl6d&;>1@!qMQuO4 z%Gc}0iFMp6ax^?AH4u7LlDsdU?zxz{Ub>X&YPQcc^6-*Pk(=v&`j~*hv9XZ|aY^;N z`l(pW0xLmE@L4^S|0g^;K>?`D!Yu&z!`*XHi45aZ%f65NU|L)p&SQQcmn%DuH4lm+ zsGo7*91PFSx67{8v?)0xJSg-h zX)K68Nrk%IkHZD_Abic@pOin!Q?6Du(|<#t3P!-h3!L;u)|&X&z)1F#c$1pzpz zi==vdy2h)820TIM8rq+hYyyMSlLHdDM!<*|@#e0O*ENFO&+Yu@^PIE>n%D^P~RwM*8OtMG-Y>bKU3q&dCrRHsdkSmIymrtZ7n^23f9_bMEU*= zom?2s_jLrUG`aG{1n2;4)7>kHNpH$dT?}NgBzmvoLX~28tGf&B_X{hsxzi~v?djQX z6l&1mF|W0Kdih@R=T(Yua!bnfPO#QS2iRszk0!ekoXf}oo1;pvmuYambnXl6yB6A| z1Tv}c!()r0xHQpCks=b!=@`nXmKYE`#n{kXN`Wwr*TS)+x&lf&6%!S}2A=$WE%9e{ z5r2mzuU~AgF`R<`KC{4$ncbc*uPV|M=B96!GBzR$h#>Q^A?XOMzPXa>J%|$Oo)%i1 z;=5)`F3t42)Nxw09AO+0ySeyDo!h@b8m7(|PJcgkyH&MZv*Tav?y7)aR;tY*~lUgw} z7^}mjo>;$2MU4lcy9MXNPg1Rv#?y)!PobEU5ASF?cyP*>ydXb(Xpc>2>~35C)Y{-h5fs>MNkQFI`f*-(Ba+egn( z#Zi~*dGD)?`QD#3Oi!_}GD64WZ1K}9vbg6dK0AZ`StxV|IcU!IGNztpT^Ln0yYiB5 zKPFFZCBsm~Tw{M>82k-ZBp32;a_%%Ow^y+b84W8KwYfHt_t|w^-XW7HbJJXhpFVl) z#r$=|Wyq&3Q&F)~VSZM`JvqN6(4g;TJ&~ePtY~hMkBo;Z@bw zVbCCSms>2Y<1hW-yL~%KK()R`(}Gw|4~Le=l6qwHLHv*mtHzDC(CjoyOWI+-12oGp zDmH+nAj#B^u=XgS$Nz-*u;7$Db`i^v6>m5|Gvi_F*~imm7oY1)q^Og3Fs$5Xe0JQw z7B@R;*-rA;fGT%`OqpeLx%A?gD&`wAW!4Vh_P}PLB@`nF8dWsu-E>?iq?N#WQ~1<) z1_}bCb=o^}*K?PK*PaDH*cZJLS_8xDad(FmRxcs`8tliNQE2?k%>k_Zsc2-A>Eu~9 zq8`KP9UVyGyypmK&_-_t8JJ4oUPXG5v?oyvJfI4`!es9Z=mMP!8dYaJjz-J&&tZJt zd2&a!n{{}%%7E;SG{MKB-BRAl|CFN5=p6Cgr2^Bl@vNB>ehIKDDbTFf95o-j6sc;3 zff4>uEna1z#YQzzLuKQ5|ADCHYjWgYCibm zv?y9&)q-ZA=#!31acH&ZAt_CLvo+7U_JUG!z$Cr zGQaMPmJTIOf7kH`RI9_Ifq|hs-%b9^yaW?@FJm_EERPGW7^3weI->U$DUhWfItROg z*Bz9fu2{wtiz{UJiTUUi#4N8JRrYB$*@f-+x?nK?J0yrOl#Xx3{VvTZ-#{;2nzeM2p^ zGkdZx7TI~EJm^s)xK>sG*@2eChrDuVQjl?TO}dDSLH`YEuaJlfZA;Hpn$KGOK!Qj0 zpg6Gjt~;?y?5!;UJDsxzXD)mpD3}W_hGc;lwBN>)c#&7-L7>0J#bPGg9$~tqoQ?$< z{Zj^v?>fJP!Ye()K6UIOIqT(y*g|VV%Vu2D>I0}d@{|3kCN(nkq&cw7TE1MNQ46e& zN&WTa?OT>FaW{8SQ!y>=6)3;aRjfCg-Qaf&fS(kg@j;=k_EGIAHR-HYuLF2rDX{#i zH3Y(AAl$&IY&^$zi?8HbF%>*6_bj z(}%C38;qK-*6@GYsbJStjT_2+sg6zGIBH%Lbi7#W`oyVXNjvO;7tzW19l_>k^maZ= zoKQ2zKHHzd8e!n&&}-SCFG}R{J(sMKTeg78j=$3#Hl?Lf@3-dZ1h?A9(YI!q_t;6((;- zraHg>Y8!;%I*sq0Im)b+8NX@wEtXj&Kz3s3>|=jTT|;Oywf4boaXLmU%Ifp(A`4C@ z4rsogxx=HmFuB7|78(d$*zZnTAt1HPzW?lXi z@76so1J8|T*+)xmo|v-5=vM1JiTV22nz4@&HJ_jF*+E$nca1Gb}lsWW#_YDCVk=ww-m4# z@fV@5@Yj;c=5(Kk494hWr7h1TJO*-Mc>f$!NwG9)NxowEJzkCPnI?9jKuYdD{MwAD zcWEsHM*6rGvJfFqJTYM;+s~seTH!!cdjWe=?Lt)29x?VjdNP`Dpn5xT-wBZ5yGk`Lo z{7%L(H1DV_Rg2Ruq4@cN*7m3`ET5Z+ljfiMrRE`##AziJnp1yLxWrM4mfE;|$;;rB zN3W!U9+Ra9fG)g6n^v*XEfSnC;bOT_*f?*M0Opwn4@glWQv^guByP8PrO=ILzqPM zt|B#4Jm!GBXM#?i(T$hEB;-P6Vz5!u$4Q%k`V;ZP`!+%jiJeH^v5D6RiJG=2AI$Ik z<|SJ&kV~e|nqx46>FAjI@ETul+(jVdIqh;0ohTI***kzhGDpb8?8`JA)5mdwFOgyB zZ~~K+w>o3r4duJ=O;$o-#I!Ps9ubiW^O*BHB%qkfPz&5%%O6Rrm4vJY^>uL_@4T)c z3>PisU=&V!KfY2HdanEAsmTg6UlIErS=3h$+1`IhINtm2c5D*N?nC+YVg$0Hwfc21 z^>|!59yFD1KtsRbuV5m80x-9XIwV}RXU{mY)KuYd3VCqD=n^T0(E-`Jwa`!3P1A zPid(b=()*=bb~l(Vil8gsiVYSmzvN@60-KdK)r#ZA8#jPmyC+Y@5)=e-b=g3@rQY} zgGx<>p1&wmr}gQ=?%)}|g0A%T5GfG&Fc$%67x%u=#*NH~2BkWz^s+IVzHtZ!B|JVo zwerq-nimI*ST1B}4;BKd*acg4?Y@PcfMuseg9^({eGp}&rf=RUSUng|HdrX12Wsa( idqn#Gfw+mQAhQv<<{ZT<^uJg0BPDrtxf)sXkpBbz{0CV8 literal 0 HcmV?d00001 diff --git a/src/assets/iconfont.css b/src/assets/iconfont.css deleted file mode 100644 index 17ebb58..0000000 --- a/src/assets/iconfont.css +++ /dev/null @@ -1,27 +0,0 @@ -@font-face { - font-family: "FontAwesome"; /* Project id 4868745 */ - src: url('./iconfont.woff2?t=1742801623512') format('woff2'), - url('./iconfont.woff?t=1742801623512') format('woff'), - url('./iconfont.ttf?t=1742801623512') format('truetype'); -} - -.icon { - font-family: FontAwesome; - font-size: 16px; - font-style: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -.icon-stop:before { - content: "\e6b5"; -} - -.icon-pause:before { - content: "\e7fe"; -} - -.icon-play:before { - content: "\e6cf"; -} - diff --git a/src/assets/iconfont.less b/src/assets/iconfont.less new file mode 100644 index 0000000..a09b70e --- /dev/null +++ b/src/assets/iconfont.less @@ -0,0 +1,199 @@ +@font-face { + font-family: "iconfont"; /* Project id 4857170 */ + src: url('./iconfont.woff2?t=1746257417746') format('woff2'), + url('./iconfont.woff?t=1746257417746') format('woff'), + url('./iconfont.ttf?t=1746257417746') format('truetype') +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-angle-speed:before { + content: "\e8c2"; +} + +.icon-rotate360:before { + content: "\e6f3"; +} + +.icon-lock:before { + content: "\e861"; +} + +.icon-unlock:before { + content: "\e862"; +} + +.icon-enter-center:before { + content: "\e642"; +} + +.icon-heading:before { + content: "\e687"; +} + +.icon-tangent-speed:before { + content: "\e6e6"; +} + +.icon-stability:before { + content: "\e611"; +} + +.icon-throttle:before { + content: "\e743"; +} + +.icon-arrow-north:before { + content: "\e905"; +} + +.icon-playback:before { + content: "\e60a"; +} + +.icon-flag:before { + content: "\e66b"; +} + +.icon-air-route:before { + content: "\e809"; +} + +.icon-char8:before { + content: "\e6b1"; +} + +.icon-tangent-angle:before { + content: "\e6b0"; +} + +.icon-stopwatch:before { + content: "\e62b"; +} + +.icon-offset-h:before { + content: "\e753"; +} + +.icon-offset-v:before { + content: "\ee1a"; +} + +.icon-bg-arrow:before { + content: "\e6af"; +} + +.icon-arrow:before { + content: "\e6ad"; +} + +.icon-block:before { + content: "\e6ae"; +} + +.icon-stage:before { + content: "\e6fe"; +} + +.icon-lib:before { + content: "\e6bb"; +} + +.icon-add-point:before { + content: "\e7e4"; +} + +.icon-topic:before { + content: "\e60f"; +} + +.icon-mistake:before { + content: "\e600"; +} + +.icon-compass:before { + content: "\ee19"; +} + +.icon-speaker:before { + content: "\e652"; +} + +.icon-home-point:before { + content: "\e648"; +} + +.icon-waypoint:before { + content: "\e6ac"; +} + +.icon-measure:before { + content: "\e609"; +} + +.icon-location:before { + content: "\e608"; +} + +.icon-positioning:before { + content: "\e647"; +} + +.icon-zoom-in:before { + content: "\e6c4"; +} + +.icon-zoom-out:before { + content: "\e6c9"; +} + +.icon-uav4:before { + content: "\e736"; +} + +.icon-battery:before { + content: "\e6a9"; +} + +.icon-satellite:before { + content: "\e6aa"; +} + +.icon-fn:before { + content: "\e781"; +} + +.icon-setting:before { + content: "\e699"; +} + +.icon-scan:before { + content: "\e607"; +} + +.icon-help:before { + content: "\e63b"; +} + +.icon-book:before { + content: "\e638"; +} + +.icon-time:before { + content: "\e61d"; +} + +.icon-panel:before { + content: "\e60d"; +} + +.icon-visual:before { + content: "\e603"; +} + diff --git a/src/assets/iconfont.ttf b/src/assets/iconfont.ttf index 503de84c950661bb07f2385780901c65cdef4be5..ff245be6bad2f04b08b0bec9894466d649aae507 100644 GIT binary patch literal 16512 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 delta 895 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 M{sKY8jT!&|0Ci@z+yDRo delta 885 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 O0vXe0jCFuC0{{T4`_GU7 delta 926 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 NuBMSji<(pH{{df23`GC{ literal 0 HcmV?d00001 diff --git a/src/components/FlightDashboard.vue b/src/components/FlightDashboard.vue new file mode 100644 index 0000000..9b91c19 --- /dev/null +++ b/src/components/FlightDashboard.vue @@ -0,0 +1,424 @@ + + + + + diff --git a/src/components/RealTimeData.vue b/src/components/RealTimeData.vue index 75086e0..3cdfcd9 100644 --- a/src/components/RealTimeData.vue +++ b/src/components/RealTimeData.vue @@ -3,7 +3,7 @@ import { computed, ref } from 'vue'; import { Left, Right } from '@nutui/icons-vue-taro'; import { toFixed } from '../utils/helpers'; import { formatTime } from '../utils/helpers'; -import deviceCruise from '../core/deviceCruise'; +import deviceCruise from '../core/useDeviceCruise'; const isVisible = ref(true); // const toggleVisibility = () => { diff --git a/src/components/SupervisionData.vue b/src/components/SupervisionData.vue deleted file mode 100644 index b3e0ecb..0000000 --- a/src/components/SupervisionData.vue +++ /dev/null @@ -1,324 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/SupervisionSideData.vue b/src/components/SupervisionSideData.vue deleted file mode 100644 index 7ce2b98..0000000 --- a/src/components/SupervisionSideData.vue +++ /dev/null @@ -1,214 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/components/TabBar.vue b/src/components/TabBar.vue index d880e8f..edebbc4 100644 --- a/src/components/TabBar.vue +++ b/src/components/TabBar.vue @@ -1,7 +1,7 @@ @@ -88,107 +85,46 @@ function onStop() { .root { pointer-events: visible; position: absolute; - left: 10rpx; - right: 10rpx; - bottom: 5rpx; + left: 150px; + right: 150px; + bottom: 40px; z-index: 999; - background: rgba(0, 0, 0, 0.5); - padding: 10rpx 15rpx 10rpx 15rpx; - border-radius: 8rpx; + //padding: 10rpx 15rpx 10rpx 15rpx; + //border-radius: 8rpx; display: flex; // flex-direction: row; align-items: center; - gap: 20rpx; + //gap: 20rpx; :global { - .slider-container { - flex: 4; - - .nut-range-button { - width: 16rpx; - height: 16rpx; - } + .btn-box { + color: white; + //background: rgba(0, 0, 0, 0.5); + margin-right: 8px; } - - .time-display { - display: flex; - justify-content: space-between; - font-size: 16rpx; - color: #fff; - margin-top: 5rpx; - } - - - - .controls { - // flex: 2; + .slider-container { + flex: 1; display: flex; align-items: center; - // justify-content: flex-end; - gap: 10rpx; - .btn { - flex: 1; - display: flex; - align-items: center; - justify-content: center; - color: #fff; - background-color: #0069ca!important; - min-width: 30rpx; - font-size: 16rpx; - height: 40rpx; - width: 40rpx; - border-radius: 8rpx; - - &:active { - background-color: #0056b3!important; - } - - .nut-icon { - //width: 12px; - //height: 12px; - } + .nut-range-button { + width: 10px; + height: 10px; } - } - - .play-controls { - // display: flex; - // gap: 10rpx; - } - // .nut-button { - // min-width: 30rpx; - // height: 30rpx; - // padding: 0 6rpx; - // display: flex; - // align-items: center; - // justify-content: center; - // color: #fff; - // // background-color: #1890ff !important; - // } - - .iconfont { - font-size: 16rpx; + .nut-range { + height: 4px; + } } .time-display { - display: flex; - justify-content: space-between; - font-size: 16rpx; + //display: flex; + //justify-content: space-between; + font-size: 11px; + font-weight: bold; color: #fff; - margin-top: 8rpx; - } - - .icon-play:before { - content: '\e87c'; - } - - .icon-pause:before { - content: '\e87d'; - } - - .icon-stop:before { - content: '\e87e'; + white-space: nowrap; + margin-left: 10px; } } } diff --git a/src/config/fcSystemStatus.js b/src/config/fcSystemStatus.js new file mode 100644 index 0000000..72efe46 --- /dev/null +++ b/src/config/fcSystemStatus.js @@ -0,0 +1,18 @@ +/** + * 飞控系统状态 + */ + +// 依据https://mavlink.io/en/messages/common.html#MAV_STATE +export const FC_SYSTEM_STATUS = new Map([ + ['MAV_STATE_UNINIT', '未初始化'], + ['MAV_STATE_BOOT', '启动中'], + ['MAV_STATE_CALIBRATING', '校准中'], + ['MAV_STATE_STANDBY', '已上锁'], + ['MAV_STATE_ACTIVE', '已解锁'], + ['MAV_STATE_CRITICAL', '临界状态'], + ['MAV_STATE_EMERGENCY', '紧急状态'], + ['MAV_STATE_POWEROFF', '关闭'], + ['MAV_STATE_FLIGHT_TERMINATION', '终止中'], +]); + +export const FC_SYSTEM_STATUS_LABEL = [...FC_SYSTEM_STATUS.values()]; diff --git a/src/config/flyModeMap.js b/src/config/flyModeMap.js new file mode 100644 index 0000000..e19dcb3 --- /dev/null +++ b/src/config/flyModeMap.js @@ -0,0 +1,24 @@ +/** + * 飞行模式 + */ + +export const FLY_MODE = { + 3: '姿态模式', + 4: '定点模式', + 10: '自动起飞', + 11: '自动悬停', + 12: '自动返航', + 15: '自动巡航', + 18: '指点飞行', + 19: '降落', + 20: '迫降', + 21: '跟随', + 23: '航点环绕', + 24: '动平台起飞', + 25: '动平台降落', + 26: '自主避障', + 27: '控制', + 28: '队形编队', +}; + +export default {}; diff --git a/src/config/gpsFixTypeMap.js b/src/config/gpsFixTypeMap.js new file mode 100644 index 0000000..7d2df64 --- /dev/null +++ b/src/config/gpsFixTypeMap.js @@ -0,0 +1,29 @@ +/** + * GPS定位类型 + */ + +// 适用于GPS_INPUT(https://mavlink.io/en/messages/common.html#GPS_INPUT) +export const GPS_FIX_TYPE = { + 0: '无GPS', + 1: '无定位', + 2: '经纬定位', + 3: '经纬高定位', + 4: '差分GPS', + 5: 'RTK定位', +}; + +// 适用于GPS2_RAW(https://mavlink.io/en/messages/common.html#GPS2_RAW) +// 依据https://mavlink.io/en/messages/common.html#GPS_FIX_TYPE +export const GPS_FIX_TYPE2 = new Map([ + ['GPS_FIX_TYPE_NO_GPS', '无GPS'], + ['GPS_FIX_TYPE_NO_FIX', '无定位'], + ['GPS_FIX_TYPE_2D_FIX', '经纬定位'], + ['GPS_FIX_TYPE_3D_FIX', '经纬高定位'], + ['GPS_FIX_TYPE_DGPS', '差分GPS'], + ['GPS_FIX_TYPE_RTK_FLOAT', 'RTK浮点解'], + ['GPS_FIX_TYPE_RTK_FIXED', 'RTK固定解'], + ['GPS_FIX_TYPE_STATIC', '静态固定定位'], + ['GPS_FIX_TYPE_PPP', '精密单点定位'], +]); + +export const GPS_FIX_TYPE2_LABEL = [...GPS_FIX_TYPE2.values()]; diff --git a/src/config/stageMap.js b/src/config/stageMap.js new file mode 100644 index 0000000..0205078 --- /dev/null +++ b/src/config/stageMap.js @@ -0,0 +1,11 @@ +export const STAGE_MAP = { + spin: { + text: '自旋', + }, + shape8: { + text: '八字飞行', + }, + hover: { + text: '悬停', + }, +} diff --git a/src/config/tipTextMap.js b/src/config/tipTextMap.js new file mode 100644 index 0000000..a35edc1 --- /dev/null +++ b/src/config/tipTextMap.js @@ -0,0 +1,126 @@ +export const TIP_TEXT = { + "first_start_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745815890849334086.mp3", + text: "考试开始,请操作无人机飞行至高度大于1.5米,小于5米", + }, + "height_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745815948315941248.mp3", + text: "停至高度大于1.5米,小于5米", + }, + "enter_center_time_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745815671188591010.mp3", + text: "请进入中心桶,一分钟倒计时", + }, + "enter_center_time_out": { + icon: 'stopwatch', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816018284105950.mp3", + text: "操作失败,进入中心桶已超时" + }, + "hover_tail_hints":{ + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816051153798301.mp3", + text: "请悬停对尾" + }, + "second_start_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816095288763692.mp3", + text: "第2次考试开始" + }, + "third_start_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816133723481929.mp3", + text: "第3次考试开始" + }, + "height_hints2": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816207762815424.mp3", + text: "请升高至1.5米" + }, + "fail_horizontal_large": { + icon: 'offset-h', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816356733350242.mp3", + text: "操作失败,水平偏差过大" + }, + "fail_vertical_large": { + icon: 'offset-v', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816464302514672.mp3", + text: "操作失败,垂直偏差过大", + }, + "fail_direction_reverse": { + icon: 'rotate360', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816482427120413.mp3", + text: "操作失败,无人机回转" + }, + "fail_spin_time_out": { + icon: 'stopwatch', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816508442043575.mp3", + text: "操作失败,自旋已超时" + }, + "spin_first_clock_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816546262459206.mp3", + text: "第一圈完毕,请顺时针旋转" + }, + "spin_first_rclock_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816563363697085.mp3", + text: "第一圈完毕,请逆时针旋转" + }, + "spin_fail_clock_time_out": { + icon: 'stopwatch', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816583793120597.mp3", + text: "操作失败,顺时针自旋已超时" + }, + "spin_fail_rclock_time_out": { + icon: 'stopwatch', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816602031257891.mp3", + text: "操作失败,逆时针自旋已超时" + }, + "flight_8_start_hints": { + fileUrl: 'http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745814185096733360.mp3', + text: "8字飞行开始,3分钟倒计时", + }, + "fail_8_time_out": { + icon: 'stopwatch', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816626528127642.mp3", + text: "操作失败,8字飞行已超时" + }, + "fail_speed_large": { + icon: 'tangent-speed', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816721721001188.mp3", + text: "操作失败,切线速度过高" + }, + "fail_speed_low": { + icon: 'tangent-speed', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816653069185482.mp3", + text: "操作失败,切线速度过低" + }, + "fail_yaw_large": { + icon: 'heading', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816746696830596.mp3", + text: "操作失败,航向偏差过大" + }, + "exam_pass_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816765576959891.mp3", + text: "考试通过" + }, + "landing": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816825729131461.mp3", + text: "请降落到圈外" + }, + "pasue_time_out": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816842033628886.mp3", + text: "暂停已超时" + }, + "exam_fail_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745816864370674197.mp3", + text: "考试未通过" + }, + "spin_start_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745822423415207696.mp3", + text: '自旋开始,一分钟倒计时' + }, + "enter_90_hints": { + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745822448671992601.mp3", + text: '请进入中心桶, 90秒倒计时' + }, + 'angle_speed_low': { + icon: 'angle-speed', + fileUrl: "http://gcs-edu.obs.cn-east-2.myhuaweicloud.com/audio/2025/04/audio_1745829747486669352.mp3", + text: '操作失败,角速度过低' + } +} diff --git a/src/config/urls.js b/src/config/urls.js index aa72cf2..f30ad6e 100644 --- a/src/config/urls.js +++ b/src/config/urls.js @@ -3,94 +3,68 @@ */ import { buildURL } from '../utils/helpers'; const { TARO_APP_API: BASE_URL } = process.env; // 获取环境变量 -// const { TARO_APP_API: BASE_URL } = import.meta; // 获取环境变量 +// const { TARO_APP_API: BASE_URL, TARO_APP_WS_API: WS_BASE_URL } = import.meta; // 获取环境变量 +// console.log(BASE_URL); // 上传 -// export const UPLOAD = `${BASE_URL}/v1/files/upload`; -export const UPLOAD = `http://192.168.10.23:9762/v1/files/upload`; +export const UPLOAD = `${BASE_URL}/train/v1/files/upload`; // 用户登录 -export const LOGIN_WITH_PASSWORD = `${BASE_URL}/user/token`; -export const WECHAT_AUTH_URL = `${BASE_URL}/wechat/mini/auth`; -export const GET_WECHAT_USERINFO = `${BASE_URL}/wechat/mini/getWxUserInfo`; +export const LOGIN_WITH_PASSWORD = `${BASE_URL}/user/user/token`; +export const STUDENT_LOGIN_WITH_PASSWORD = `${BASE_URL}/user/student/token`; +export const WECHAT_AUTH_URL = `${BASE_URL}/user/wechat/mini/auth`; +export const GET_WECHAT_USERINFO = `${BASE_URL}/user/wechat/mini/getWxUserInfo`; //学生信息 -export const UPDATE_STUDENT = (id) => buildURL(`${BASE_URL}/v1/students/{id}`, id); +export const UPDATE_STUDENT = (id) => buildURL(`${BASE_URL}/user/v1/students/{id}`, id); //人员信息 -export const UPDATE_MEMBER = (id) => buildURL(`${BASE_URL}/v1/users/{id}`, id); +export const UPDATE_MEMBER = (id) => buildURL(`${BASE_URL}/user/v1/users/{id}`, id); // 讲评管理 -// export const GET_EVALUATION_LIST = `${BASE_URL}/v1/evaluations`; -// export const CREATE_EVALUATION = `${BASE_URL}/v1/evaluations`; -// export const UPDATE_EVALUATION = `${BASE_URL}/v1/evaluations`; -// export const GET_EVALUATION_DETAIL = (id) => buildURL(`${BASE_URL}/v1/evaluations/{id}`, id); - -export const GET_EVALUATION_LIST = `http://192.168.10.23:9762/v1/evaluations`; -export const CREATE_EVALUATION = `http://192.168.10.23:9762/v1/evaluations`; -export const UPDATE_EVALUATION = `http://192.168.10.23:9762/v1/evaluations`; -export const GET_EVALUATION_DETAIL = (id) => buildURL(`http://192.168.10.23:9762/v1/evaluations/{id}`, id); -export const REPLY_EVALUATION = 'http://192.168.10.23:9762/v1/evaluations/reply'; +export const GET_EVALUATION_LIST = `${BASE_URL}/train/v1/evaluations`; +export const CREATE_EVALUATION = `${BASE_URL}/train/v1/evaluations`; +export const UPDATE_EVALUATION = `${BASE_URL}/train/v1/evaluations`; +export const GET_EVALUATION_DETAIL = (id) => buildURL(`${BASE_URL}/train/v1/evaluations/{id}`, id); +export const REPLY_EVALUATION = `${BASE_URL}/train/v1/evaluations/reply`; // 实践飞行管理 -// export const GET_FLIGHT_LIST = `${BASE_URL}/v1/flightRecords`; -// export const GET_FLIGHT_DETAIL = (id) => buildURL(`${BASE_URL}/v1/flightRecords/{id}`, id); -// export const GET_FLIGHT_TRACKS = (id) => buildURL(`${BASE_URL}/v1/flightRecords/{id}/tracks`, id); - -export const GET_FLIGHT_LIST = `http://192.168.10.23:9762/v1/flightRecords`; -export const GET_FLIGHT_DETAIL = (id) => buildURL(`http://192.168.10.23:9762/v1/flightRecords/{id}`, id); -export const GET_FLIGHT_TRACKS = (id) => buildURL(`http://192.168.10.23:9762/v1/flightRecords/{id}/tracks`, id); +export const GET_FLIGHT_LIST = `${BASE_URL}/train/v1/flightRecords`; +export const GET_FLIGHT_DETAIL = (id) => buildURL(`${BASE_URL}/train/v1/flightRecords/{id}`, id); +export const GET_FLIGHT_TRACKS = (id) => buildURL(`${BASE_URL}/train/v1/flightRecords/{id}/tracks`, id); +export const STUDENT_BIND_DRONE = `${BASE_URL}/user/v1/drones/qrCode/scan`; // 航线管理 -// export const GET_ROUTE_PLAN_LIST = `${BASE_URL}/v1/routePlans`; -// export const GET_ROUTE_PLAN_DETAIL = (id) => buildURL(`${BASE_URL}/v1/routePlans/{id}`, id); - -export const GET_ROUTE_PLAN_LIST = `http://192.168.10.23:9762/v1/routePlans`; -export const GET_ROUTE_PLAN_DETAIL = (id) => buildURL(`http://192.168.10.23:9762/v1/routePlans/{id}`, id); +export const GET_ROUTE_PLAN_LIST = `${BASE_URL}/train/v1/routePlans`; +export const GET_ROUTE_PLAN_DETAIL = (id) => buildURL(`${BASE_URL}/train/v1/routePlans/{id}`, id); // 应急返航管理 -// export const GET_RETURN_TRIP_LIST = `${BASE_URL}/v1/returnTrips`; -// export const GET_RETURN_TRIP_DETAIL = (id) => buildURL(`${BASE_URL}/v1/returnTrips/{id}`, id); - -export const GET_RETURN_TRIP_LIST = `http://192.168.10.23:9762/v1/returnTrips`; -export const GET_RETURN_TRIP_DETAIL = (id) => buildURL(`http://192.168.10.23:9762/v1/returnTrips/{id}`, id); - - -// 用户信息 -export const GET_USER_INFO = `${BASE_URL}/user/userInfo`; +export const GET_RETURN_TRIP_LIST = `${BASE_URL}/train/v1/returnTrips`; +export const GET_RETURN_TRIP_DETAIL = (id) => buildURL(`${BASE_URL}/train/v1/returnTrips/{id}`, id); -// 识别记录 -export const CREATE_RECORD = `${BASE_URL}/record/createRecord`; +// 环境参数管理 +export const GET_ENV_LIST = `${BASE_URL}/train/v1/envs`; -// export const CREATE_RECORD = `${BASE_URL}/record/upload`; -export const GET_RECORD_LIST = `${BASE_URL}/record/page`; -export const DELETE_RECORD = `${BASE_URL}/record/delete/{recordId}`; -export const UPDATE_RECORD = `${BASE_URL}/record/update`; -export const GET_RECORD_DETAIL = `${BASE_URL}/record/getRecordDetail/{recordId}`; -export const UPDATE_RECORD_DETAIL = `${BASE_URL}/record/updateRecordContent`; -export const EXPORT_RECORD = `${BASE_URL}/record/export/{recordId}`; -export const SET_SCALE = `${BASE_URL}/record/scale`; +// 考试标准管理 +export const GET_EXAM_LIST = `${BASE_URL}/train/v1/exams`; -// 任务 -export const GET_TASK_LIST = `${BASE_URL}/record/tasks`; -export const GET_TASK_PROGRESS = `${BASE_URL}/record/taskProgress/{taskId}`; +// ws 飞机实时数据 +// export const GET_DRONE_REAL_TIME_DATA = `${WS_BASE_URL}/data/ws`; +export const GET_DRONE_REAL_TIME_DATA = `ws://uavedu.jiagutech.com/api/data/ws`; -// 模型列表 -export const GET_MODEL_LIST = `${BASE_URL}/record/models`; -export const UPDATE_USER = `${BASE_URL}/user/update`; -export const SEARCH_REGION_FARMER = `${BASE_URL}/user/listFarmerByRegionCode`; -export const UPDATE_FARMER = `${BASE_URL}/user/updateFarmer`; +// 场地管理 +export const GET_AIRFIELDS_LIST = `${BASE_URL}/train/v1/airfields`; +export const GET_AIRFIELDS_DETAIL = (id) => buildURL(`${BASE_URL}/train/v1/airfields/{id}`, id); +export const CREATE_AIRFIELD = `${BASE_URL}/train/v1/airfields` +export const GET_AIRFIELDS_OF_STUDENT = `${BASE_URL}/train/v1/airfields/student/current`; +export const UPDATE_AIRFIELD = (id) => buildURL(`${BASE_URL}/train/v1/airfields/{id}`, id) +export const DELETE_AIRFIELD = (id) => buildURL(`${BASE_URL}/train/v1/airfields/{id}`, id) +export const AIRFIELD_BIND_CLASS = `${BASE_URL}/train/v1/airfields/class/airfield`; -// 作业 -export const GET_WORK_RECORD_LIST = `${BASE_URL}/job/page`; -export const GET_TRACK_LIST = `${BASE_URL}/job/tracks/{jobId}`; -export const GET_WORK_TYPE_LIST = `${BASE_URL}/job/types`; -export const GET_WORKING_DETAIL = `${BASE_URL}/job/inWorking`; -export const UPDATE_WORK_STATUS = `${BASE_URL}/job/status`; -export const CREATE_WORK = `${BASE_URL}/job/start`; +// 无人机 +export const GET_DRONE_LIST = `${BASE_URL}/user/v1/drones`; -// 设备 -export const GET_DEVICE_LIST = `${BASE_URL}/device/page`; -export const GET_ONLINE_DEVICES = `${BASE_URL}/device/onlineAndRound`; +// 班级 +export const GET_CLASS_LIST = `${BASE_URL}/user/v1/classes` -// 地区 -export const GET_REGION_CHILDREN = `${BASE_URL}/region/getChildren`; +// 执照等级 +export const GET_LICENSE_GRADES_LIST = `${BASE_URL}/user/licenseGrades`; diff --git a/src/core/deviceCruise.js b/src/core/deviceCruise.js deleted file mode 100755 index 0114a81..0000000 --- a/src/core/deviceCruise.js +++ /dev/null @@ -1,296 +0,0 @@ -/** - * 设备按轨迹巡航 - */ -import { reactive, ref } from 'vue'; -import { interpolate } from 'popmotion'; -// import * as turf from '@turf/turf'; -import deviceIcon from '../assets/deviceIcon.png'; - -const markerId = 999; - -class DeviceCruise { - - _markerOptins = { - id: markerId, - iconPath: deviceIcon, - width: 32, - height: 32, - anchor: { x: 0.5, y: 0.5 } - } - _that = null; - - // 地图实例 - _map = null; - - // 单条轨迹数据 - _dataSource = {}; - - // 巡航速率 - speedRate = 1; - - // 动画计时器 - _timer = null; - - // 上一帧时间点 - _lastFrameAt = 0; - - // 累计播放时长(毫秒数) - elapsedMs = 0; - - // 每帧期望间隔(毫秒数,实际间隔取决于浏览器fps) - _fpsInterval = 1000 / 30; - - // 上一帧时间戳 - _lastFrameTimestamp = 0; - - // 巡航到的时间点数据 - timelyData = {}; - - isPlaying = false; - - isPaused = false; - - isStopped = true; - - // currentIndex = 0; - - // 是否准备完毕 - get ready() { - return Object.keys(this._that._dataSource).length > 0; - } - - get _points() { - const { points } = this._that._dataSource; - return points || []; - } - - // 基准时间点(从0开始的毫秒数) - get _datumTime() { - const [{ timestamp: startTs } = {}] = this._that._points || []; - return this._that._points.map(({ timestamp }) => timestamp - startTs); - } - - // 轨迹总时间(毫秒数) - get totalTime() { - return this._that._datumTime[this._that._datumTime.length - 1] || 0; - } - - // 是否已经开始播放了 - get isStarted() { - return this._that.isPlaying || this._that.isPaused; - } - - constructor() { - this._that = reactive(this); - return this._that; - } - - // 设置地图实例 - setMap(mapInstance) { - this._that._map = mapInstance; - } - - // 载入轨迹数据(point中必须包含lng, lat, timestamp, yaw) - loadTrack({ id, points, ...others }) { - // if (!this._that._that._map) { - // throw new Error('请先设置地图实例'); - // } - this._that._dataSource = { - id, - points: (points || []).map(item => ({ ...item })), - ...others, - }; - this._that._reset(); - this._that._initDevice(); - } - - // 设置速率 - setSpeedRate(val) { - this._that.speedRate = val; - } - - _setting = false; - // 设置当前巡航时间点 - setCurrentTime(ms) { - if (ms < 0 || ms > this._that.totalTime) return; - if (this._that.isPlaying) { - this._that.isPlaying = false; - this._that.isPaused = true; - } - - if (this._that._setting) return; - this._that._setting = true; - this._that.elapsedMs = ms; - const index = this._that._datumTime.findIndex(item => item >= ms); - this._that.currentIndex = index; - const point = this._that._points[index]; - const { lng, lat, yaw } = point; - this._that._map.removeMarkers({ - markerIds: [markerId], - success: () => { - // this._that._renderDevice(); - this._that._map.addMarkers({ - markers: [{ - ...this._that._markerOptins, - latitude: lat, - longitude: lng, - rotate: yaw || 0, - }], - success: () => { - this._that._setting = false; - } - }); - } - }); - } - - // 获取指定毫秒处的数据值 - _getTimelyData(ms = 0) { - const genTimelyData = interpolate(this._that._datumTime, this._that._points); - // const index = this._that._datumTime.findIndex(item => item >= ms); - // console.log('genTimelyData', genTimelyData(ms)); - // if (index === -1) { - // return {}; - // } - - return genTimelyData(ms); - // return this._that._points[index] || {}; - } - - _reset() { - this._that.isPlaying = false; - this._that.isPaused = false; - this._that.isStopped = true; - this._that.speedRate = 1; - this._that._lastFrameAt = 0; - this._that.elapsedMs = 0; - this._that._lastFrameTimestamp = 0; - } - - _initDevice() { - const [point] = this._that._points; - if (!point) { - return; - } - - const { lng, lat, yaw } = point; - this._that._map.addMarkers({ - markers: [{ - ...this._that._markerOptins, - latitude: lat, - longitude: lng, - rotate: yaw || 0, - }] - }) - } - - _clearDevice() { - // 清除timelyData即可 - this._that.timelyData = {}; - this._that._map.removeMarkers({ - markerIds: [markerId] - }); - } - - _renderDevice() { - if (!this._that._points.length) return; - // if (!this._that.isPlaying) return; - - // const lastData = this._that._getTimelyData(this._that.elapsedMs - 100 > 0 ? this._that.elapsedMs - 100 : 0); - const nextData = this._that._getTimelyData(this._that.elapsedMs); - - // const { deep, breadth, seeding, flow } = nextData; - this._that.timelyData = { ...nextData }; - const { lng, lat, yaw } = nextData; - - this._that._map.translateMarker({ - markerId, - destination: { - longitude: lng, - latitude: lat, - }, - autoRotate: false, - duration: 1, - rotate: yaw || 0, - moveWithRotate: true, - animationEnd: () => { - // this._that.timelyData = { ...nextData }; - // this._that.currentIndex += 1; - // if (this._that.isPlaying) { - // this._that.elapsedMs += (duration * this._that.speedRate); - // if (this._that.elapsedMs >= this._that.totalTime) { - // this._that.handleStop(); - // return; - // } - // this._that._renderDevice(); - // } - } - }); - } - - _ticker = timestamp => { - this._that.elapsedMs += Math.round((timestamp - this._that._lastFrameAt) * this._that.speedRate); - this._that._lastFrameAt = timestamp; - if (this._that.elapsedMs > this._that.totalTime) { - return; - } - - // 在期望的间隔内_renderDevice,而不是每个tick都_renderDevice(目的:降低render频率,提高显示性能) - const now = Date.now(); - const timeDiff = now - this._that._lastFrameTimestamp; - if (timeDiff > this._that._fpsInterval) { - this._that._lastFrameTimestamp = now - (timeDiff % this._that._fpsInterval); // 矫正时间戳 - this._that._renderDevice(); - } - - this._that._timer = requestAnimationFrame(this._that._ticker); - }; - - // 开始播放巡航动画、恢复播放巡航动画 - handlePlay() { - requestAnimationFrame(ms => { - this._that._lastFrameAt = ms; - }); - this._that.isPlaying = true; - this._that.isPaused = false; - this._that.isStopped = false; - requestAnimationFrame(this._that._ticker); - } - - // 暂停播放巡航动画 - handlePause() { - this._that.isPlaying = false; - this._that.isPaused = true; - this._that.isStopped = false; - cancelAnimationFrame(this._that._timer); - } - - // 停止播放巡航动画 - handleStop() { - this._that.isPlaying = false; - this._that.isPaused = false; - this._that.isStopped = true; - this._that._lastFrameAt = 0; - this._that.elapsedMs = 0; - cancelAnimationFrame(this._that._timer); - this._that._renderDevice(); - this._that.timelyData = {}; - } - - clear() { - if (!this._that._map) return; - this._that.handleStop(); - this._that._clearDevice(); - this._that._reset(); - this._that._dataSource = {}; - this._that.timelyData = {}; - } - - destroy() { - this._that.clear(); - this._that._timer = null; - this._that._map = null; - } -} - -export default new DeviceCruise(); diff --git a/src/core/helper/markHelper.js b/src/core/helper/markHelper.js new file mode 100644 index 0000000..6f750b8 --- /dev/null +++ b/src/core/helper/markHelper.js @@ -0,0 +1,92 @@ +import { Point, PointerEvent } from "@leafer-ui/miniapp"; +import CLASSIFY_MAP from '../../../config/classifyMap'; +// import { ref } from "vue"; + +let rapes; +let handles; +let beaks; + +function init(data = { rapes: [], handles: [], beaks: [] }) { + rapes = data.rapes; + handles = data.handles; + beaks = data.beaks; +} + +function allMarkOnListen(event = PointerEvent.TAP, ftn = () => {}) { + rapes.forEach(rapeItem => { + rapeItem.on(event, ftn); + }); + beaks.forEach(beakItem => { + beakItem.on(event, ftn); + }); + handles.forEach(handleItem => { + handleItem.on(event, ftn); + }); +} + +function allMarkOffListen(event = PointerEvent.TAP, ftn = () => {}) { + rapes.forEach(rapeItem => { + rapeItem.off(event, ftn); + }); + beaks.forEach(beakItem => { + beakItem.off(event, ftn); + }); + handles.forEach(handleItem => { + handleItem.off(event, ftn); + }); +} + +function setRapesVisible(val = true) { + rapes.forEach(rapeItem => { + rapeItem.set({ + visible: val, + }); + }); +} + +function setBeaksVisible(val = true) { + beaks.forEach(beakItem => { + beakItem.set({ + visible: val, + }); + }); +} + +function setHandlesVisible(val = true) { + handles.forEach(handleItem => { + handleItem.set({ + visible: val, + }); + }); +} + +function InfoInduction(e, ratio = 0) { + const { extra: { classify, points } } = e?.current || {}; + const pointStart = points[0]; + const pointEnd = points[2]; + const point = new Point() + const pixel = point.set(pointStart[0], pointStart[1]).getDistance({ x: pointEnd[0], y: pointEnd[1] }); // 100 + + const { [classify]: { zh: name } } = CLASSIFY_MAP; + const distance = ratio ? +((pixel / ratio).toFixed(1)) : 0; + // + // console.log('pixel', pixel); + // console.log('distance', distance); + // console.log('name', name); + // + return { + name, + pixel, + distance, + } +} + +export default { + init, + allMarkOnListen, + allMarkOffListen, + setRapesVisible, + setBeaksVisible, + setHandlesVisible, + InfoInduction, +} diff --git a/src/core/helper/pinHelper.js b/src/core/helper/pinHelper.js new file mode 100644 index 0000000..265a903 --- /dev/null +++ b/src/core/helper/pinHelper.js @@ -0,0 +1,281 @@ +import { DragEvent, Path, Point, PointerEvent, Text, ZoomEvent } from "@leafer-ui/miniapp"; +import { computed, ref } from "vue"; + +const pinOption = { + // scale: 0.03, + around: 'bottom', + path: "M464.1 461.4v-240c0-5-1.6-9.1-4.8-12.3-3.2-3.2-7.3-4.8-12.3-4.8-5 0-9.1 1.6-12.3 4.8-3.2 3.2-4.8 7.3-4.8 12.3v240c0 5 1.6 9.1 4.8 12.3 3.2 3.2 7.3 4.8 12.3 4.8 5 0 9.1-1.6 12.3-4.8 3.2-3.1 4.8-7.2 4.8-12.3z m360 188.6c0 9.3-3.4 17.3-10.1 24.1-6.8 6.8-14.8 10.2-24.1 10.1H560l-27.3 258.7c-0.7 4.3-2.6 8-5.6 11-3 3-6.7 4.5-11 4.5h-0.5c-9.6 0-15.4-4.8-17.1-14.5l-40.7-259.8H241.3c-9.3 0-17.3-3.4-24.1-10.1-6.8-6.8-10.2-14.8-10.1-24.1 0-43.9 14-83.5 42-118.6 28-35.1 59.7-52.7 95.1-52.8V204.2c-18.6 0-34.6-6.8-48.2-20.4-13.6-13.6-20.4-29.6-20.4-48.2s6.8-34.6 20.4-48.2C309.6 73.8 325.6 67 344.2 67H687c18.6 0 34.6 6.8 48.2 20.4 13.6 13.6 20.4 29.6 20.4 48.2s-6.8 34.6-20.4 48.2c-13.6 13.6-29.6 20.4-48.2 20.4v274.3c35.3 0 67 17.6 95.1 52.8 28 35.2 42 74.7 42 118.7z m0 0", + fill: 'rgba(255,108,0,0.9)', +}; +const lineOption = { + stroke: '#00ffff', + strokeWidth: 10, +} +const textOption = { + around: 'center', + fontSize: 100, + fill: 'rgb(175,0,0)', + text: `点击输入实际长度`, + fontWeight: 'bold', + padding: [0, 0, 200] +} + +let pinS; +let line; +let pinE; +let text; +let group; + +const length = ref('0'); +const ratio = computed(() => { + if (!pinE) return 0; + if (length.value === '0') return 0; + const pixel = new Point().set(pinS.x, pinS.y).getDistance({ x: pinE.x, y: pinE.y }); + return +((pixel / +length.value).toFixed(1)); +}); + +function installGroup(g = {}) { + group = g; +} + +function creatPinS(option = {}) { + if (pinS) return; + pinS = new Path({ ...pinOption, ...option }); + group.add(pinS); +} + +function creatLine(option = {}) { + if (pinE) return; + console.log('optionS', option); + line = new Path({ + path: [1, option.sx, option.sy, 2, option.ex, option.ey], + ...lineOption, + }) + group.add(line); +} + +function moveLine(option = {}) { + if (pinE) return; + line.set({ + path: [1, option.sx, option.sy, 2, option.ex, option.ey], + }) +} + +function creatPinE(option = {}) { + if (pinE) return; + pinE = new Path({ ...pinOption, ...option, className: 'pinE' }); + group.add(pinE); + // + pinS.set({ draggable: true }); + pinE.set({ draggable: true }); + + _creatComplete(); +} + +const eventPool = {}; +function textTapBack(ftn = () => {}) { + eventPool.textTapBack = ftn; + if (text) { + text.on(PointerEvent.TAP, eventPool?.textTapBack); + } +} + +function creatText(option = {}) { + if (text) return; + const textPoint = new Point().set(pinS.x, pinS.y).getCenter({ x: pinE.x, y: pinE.y }); + const rotation = new Point().set(pinS.x, pinS.y).getRotation({ x: pinS.x, y: pinS.y }, { x: pinE.x, y: pinE.y }); + // scale: 0.1 / e.current.scale, + text = new Text({ + x: textPoint.x, + y: textPoint.y, + rotation: rotation, + ...option, + ...textOption, + }); + group.add(text); + // + text.on(PointerEvent.TAP, (eventPool?.textTapBack || function () {})); +} + +function _pinSDragCallBack(e) { + const point = e.getLocal(); + pinS.set({ x: point.x, y: point.y }); + line.set({ path: [1, pinS.x, pinS.y, 2, pinE.x, pinE.y] }); + + const textPoint = new Point().set(pinS.x, pinS.y).getCenter({ x: pinE.x, y: pinE.y }); + const rotation = new Point().set(pinS.x, pinS.y).getRotation({ x: pinS.x, y: pinS.y }, { x: pinE.x, y: pinE.y }); + const pixel = new Point().set(pinS.x, pinS.y).getDistance({ x: pinE.x, y: pinE.y }); + // console.log('rotation', rotation, { x: pinS.x, y: pinS.y }, { x: pinE.x, y: pinE.y }); + const l = ratio.value ? +((pixel / ratio.value).toFixed(1)) : 0; + text.set({ + x: textPoint.x, + y: textPoint.y, + rotation, + text: l ? `${l}cm` : '点击输入实际长度', + }); + length.value = `${l}`; +} + +function _pinEDragCallBack(e) { + const point = e.getLocal(); + pinE.set({ x: point.x, y: point.y }); + line.set({ path: [1, pinS.x, pinS.y, 2, pinE.x, pinE.y] }); + + const textPoint = new Point().set(pinS.x, pinS.y).getCenter({ x: pinE.x, y: pinE.y }); + const rotation = new Point().set(pinS.x, pinS.y).getRotation({ x: pinS.x, y: pinS.y }, { x: pinE.x, y: pinE.y }); + const pixel = new Point().set(pinS.x, pinS.y).getDistance({ x: pinE.x, y: pinE.y }); + // console.log('rotation', rotation, { x: pinS.x, y: pinS.y }, { x: pinE.x, y: pinE.y }); + const l = ratio.value ? +((pixel / ratio.value).toFixed(1)) : 0; + text.set({ + x: textPoint.x, + y: textPoint.y, + rotation, + text: l ? `${l}cm` : '点击输入实际长度', + }); + length.value = `${l}`; +} + +function setLength(val) { + length.value = `${val}`; + if (text) { + text.set({ + text: `${val}cm`, + }) + } +} + +function _groupZoom(e) { + if (pinS) { + pinS.set({ + scale: 0.03 / e.current.scale, + }) + } + if (pinE) { + pinE.set({ + scale: 0.03 / e.current.scale, + }) + } + if (text) { + text.set({ + scale: 0.1 / e.current.scale, + }) + } + if (line) { + line.set({ + strokeWidth: 5 / group.scale, + }); + } +} + +function _creatComplete() { + pinS.on(DragEvent.DRAG, _pinSDragCallBack); + pinE.on(DragEvent.DRAG, _pinEDragCallBack); + group.on(ZoomEvent.ZOOM, _groupZoom) +} + +function _offDragEvent() { + pinS.off(DragEvent.DRAG, _pinSDragCallBack); + pinE.off(DragEvent.DRAG, _pinEDragCallBack); +} + +function _onDragEvent() { + pinS.on(DragEvent.DRAG, _pinSDragCallBack); + pinE.on(DragEvent.DRAG, _pinEDragCallBack); +} + +function pinDragAble(val = false) { + if (pinS) { + pinS.set({ draggable: val }); + } + if (pinE) { + pinE.set({ draggable: val }); + } + if (pinS && pinE) { + if (val) _onDragEvent(); + if (!val) _offDragEvent(); + } + console.log('val', val, pinS, pinE); +} + +function offTextTapBack() { + if (text) { + text.off(PointerEvent.TAP, (eventPool?.textTapBack || function () {})); + } +} + +function getScaleBarInfo() { + return { + points: [[pinS.x, pinS.y], [pinE.x, pinE.y]], + scale: ratio.value, + size: length.value, + } +} + +function showScale(option = {}, groupScale = 1) { + const { points, scale, size } = option; + const pinSxy = { x: points[0][0], y: points[0][1] }; + const pinExy = { x: points[1][0], y: points[1][1] }; + pinS = new Path({ ...pinOption, x: pinSxy.x, y: pinSxy.y, scale: 0.03 / groupScale, draggable: false }); + pinE = new Path({ ...pinOption, x: pinExy.x, y: pinExy.y, scale: 0.03 / groupScale, draggable: false, className: 'pinE' }); + line = new Path({ + path: [1, pinSxy.x, pinSxy.y, 2, pinExy.x, pinExy.y], + ...lineOption, + strokeWidth: 5 / groupScale, + }); + const textPoint = new Point().set(pinSxy.x, pinSxy.y).getCenter({ x: pinExy.x, y: pinExy.y }); + const rotation = new Point().set(pinSxy.x, pinSxy.y).getRotation({ x: pinSxy.x, y: pinSxy.y }, { x: pinExy.x, y: pinExy.y }); + // scale: 0.1 / e.current.scale, + text = new Text({ + x: textPoint.x, + y: textPoint.y, + rotation: rotation, + // ...option, + ...textOption, + scale: 0.1 / groupScale, + text: `${size}cm`, + }); + + // + text.on(PointerEvent.TAP, (eventPool?.textTapBack || function () {})); + + group.add(pinS); + group.add(pinE); + group.add(line); + group.add(text); + length.value = `${size}`; + group.on(ZoomEvent.ZOOM, _groupZoom) +} + +function clearPin() { + if (pinE) { + _offDragEvent(); + group.off(ZoomEvent.ZOOM, _groupZoom); + group.remove(pinS, true); + group.remove(pinE, true); + group.remove(line, true); + group.remove(text, true); + pinS = undefined; + pinE = undefined; + line = undefined; + text = undefined; + length.value = '0'; + } +} + +export default { + installGroup, + creatPinS, + creatLine, + moveLine, + creatPinE, + creatText, + textTapBack, + length, + ratio, + setLength, + pinDragAble, + offTextTapBack, + getScaleBarInfo, + showScale, + clearPin, +}; diff --git a/src/core/helper/sceneHelper.js b/src/core/helper/sceneHelper.js new file mode 100644 index 0000000..a273fc1 --- /dev/null +++ b/src/core/helper/sceneHelper.js @@ -0,0 +1,273 @@ +import { Group, Image, ImageEvent, Leafer, Line, Path, Point, PointerEvent } from "@leafer-ui/miniapp"; +import CLASSIFY_MAP from '../../../config/classifyMap'; +import MarkHelper from './markHelper'; +import PinHelper from './pinHelper'; +import Taro from "@tarojs/taro"; +// import { ref } from "vue"; + +let leafer; +let group; +let image; + +function init(option = {}) { + leafer = new Leafer({ ...option }); + return leafer; +} + +function setGroup(option = {}) { + group = new Group({ ...option }); + leafer.add(group); + leafer.zoomLayer = group; + PinHelper.installGroup(group); + return group; +} + +let scale = 0.1; +function groupSetImage(option = {}, callBackFtn = () => {}) { + image = new Image({ ...option }); + group.add(image); + image.once(ImageEvent.LOADED, function (e) { + const res = Taro.getSystemInfoSync(); + const scale = res.windowWidth / e.current.width; + groupFill(scale); + callBackFtn(scale); + }) + return image; +} + +function groupSetMark(data = [], option = {}) { + const rapes = []; + const handles = []; + const beaks = []; + data.forEach(({ classify, name, points }) => { + const { [classify]: { color: stroke, strokeWidth } } = CLASSIFY_MAP; + const point1 = { x: points[0][0], y: points[0][1] }; + const point2 = { x: points[1][0], y: points[1][1] }; + const point3 = { x: points[2][0], y: points[2][1] }; + const point4 = { x: points[3][0], y: points[3][1] }; + const item = new Path({ + className: name, + extra: { classify, name, points }, + path: [1, point1.x, point1.y, 2, point2.x, point2.y, 2, point3.x, point3.y, 2, point4.x, point4.y, 11], + stroke, + strokeWidth, + fill: 'rgba(255,255,255,0)' + }) + group.add(item); + // 分类 + const { [classify]: list } = { 0: rapes, 1: beaks, 2: handles }; + list.push(item); + }); + MarkHelper.init({ rapes, handles, beaks }); +} + +function getMarkList() { + const rapesList = group.find('.rape'); + const handlesList = group.find('.handle'); + const beaksList = group.find('.beak'); + return { rapesList, handlesList, beaksList }; +} + +function setMarkTapListen(ftn = () => {}) { + MarkHelper.allMarkOnListen(PointerEvent.TAP, ftn); +} + +function offMarkTapListen(ftn = () => {}) { + MarkHelper.allMarkOffListen(PointerEvent.TAP, ftn); +} + +function groupFill(scale = 0.1) { + group.scaleOf('left', scale); + group.set({ + y: 150 + }); +} + +function groupOnDownListen(ftn = () => {}) { + group.on(PointerEvent.DOWN, ftn); +} + +function groupOffDownListen(ftn = () => {}) { + group.off(PointerEvent.DOWN, ftn); +} + +function groupRemoveChild(child = {}) { + group.remove(child); +} + +function groupOnMoveListen(ftn = () => {}) { + group.on(PointerEvent.MOVE, ftn); +} + +function groupOnUpListen(ftn = () => {}) { + group.on(PointerEvent.UP, ftn); +} + +let sx; +let sy; +function _moveLineEPoint(e) { + const point = { x: e.x, y: e.y }; + image.worldToLocal(point); + const lineOption = { sx, sy, ex: point.x, ey: point.y }; + PinHelper.moveLine({ ...lineOption }); +} + +function _creatPinSPoint(e) { + const point = { x: e.x, y: e.y }; + image.worldToLocal(point); + sx = point.x; + sy = point.y; + PinHelper.creatPinS({ ...point, scale: 0.03 / e.current.scale, }); + const lineOption = { sx: point.x, sy: point.y, ex: point.x, ey: point.y }; + PinHelper.creatLine({ ...lineOption }); +} + +// let pinTextTapCallBack = () => {}; +function _endPinEPoint(e) { + const point = { x: e.x, y: e.y }; + image.worldToLocal(point); + const lineOption = { sx, sy, ex: point.x, ey: point.y }; + PinHelper.moveLine({ ...lineOption }); + PinHelper.creatPinE({ ...point, scale: 0.03 / e.current.scale }); + PinHelper.creatText({ scale: 0.1 / e.current.scale }); + + group.off(PointerEvent.DOWN, _creatPinSPoint); + group.off(PointerEvent.MOVE, _moveLineEPoint); + group.off(PointerEvent.UP, _endPinEPoint); +} + +function groupCreatPin() { + group.on(PointerEvent.DOWN, _creatPinSPoint); + group.on(PointerEvent.MOVE, _moveLineEPoint); + group.on(PointerEvent.UP, _endPinEPoint); +} + +function calculateNewPoints(A, B, d) { + // 计算方向向量 + let directionVector = { x: B.x - A.x, y: B.y - A.y }; + // 计算方向向量的长度 + let length = Math.hypot(directionVector.x, directionVector.y); + // 归一化方向向量 + let unitDirectionVector = { x: directionVector.x / length, y: directionVector.y / length }; + // 计算延长线段的向量 + // let extensionVector = { x: unitDirectionVector.x * d, y: unitDirectionVector.y * d }; + // 计算延长后的端点坐标 + // let newPointA1 = { x: A.x - extensionVector.x, y: A.y - extensionVector.y }; + // let newPointA2 = { x: A.x + extensionVector.x, y: A.y + extensionVector.y }; + // let newPointB1 = { x: B.x - extensionVector.x, y: B.y - extensionVector.y }; + // let newPointB2 = { x: B.x + extensionVector.x, y: B.y + extensionVector.y }; + // 计算垂直于AB的单位向量 + let perpendicularUnitVector = { x: -unitDirectionVector.y, y: unitDirectionVector.x }; + // 计算顺时针和逆时针旋转90度后的新端点坐标 + let newPointA3 = { x: A.x + perpendicularUnitVector.x * d, y: A.y + perpendicularUnitVector.y * d }; + let newPointA4 = { x: A.x - perpendicularUnitVector.x * d, y: A.y - perpendicularUnitVector.y * d }; + let newPointB3 = { x: B.x + perpendicularUnitVector.x * d, y: B.y + perpendicularUnitVector.y * d }; + let newPointB4 = { x: B.x - perpendicularUnitVector.x * d, y: B.y - perpendicularUnitVector.y * d }; + return { + // newPointsA: [newPointA1, newPointA2, newPointA3, newPointA4], + // newPointsB: [newPointB1, newPointB2, newPointB3, newPointB4], + point: [newPointA3, newPointB3, newPointB4, newPointA4], + }; +} + +function groupAddMark({ type = '', tapCallBack = () => {}, height = 10 }) { + group.set({ draggable: false }); + + let line; + let sx; + let sy; + + function _addMarkStart(e) { + const point = e.getInner(); + sx = point.x; + sy = point.y; + line = new Line({ + points: [sx, sy, sx, sy], + stroke: '#00ffff', + strokeWidth: 10, + }) + group.add(line); + } + + function _moveMark(e) { + const point = e.getInner(); + line.set({ + points: [sx, sy, point.x, point.y], + }) + } + + function _doneDrawMark(e) { + const point = e.getInner(); + line.set({ + points: [sx, sy, point.x, point.y], + }); + + // 示例使用 + // let A = { x: 1, y: 2 }; + // let B = { x: 4, y: 6 }; + // let d = 3; + let result = calculateNewPoints({ x: sx, y: sy }, { x: point.x, y: point.y }, height); + + const temp = result.point; + const point1 = { x: temp[0].x, y: temp[0].y }; + const point2 = { x: temp[1].x, y: temp[1].y }; + const point3 = { x: temp[2].x, y: temp[2].y }; + const point4 = { x: temp[3].x, y: temp[3].y }; + const points = [[point1.x, point1.y], [point2.x, point2.y], [point3.x, point3.y], [point4.x, point4.y],] + + const typeItem = Object.values(CLASSIFY_MAP).find(({ name }) => name === type); + + const item = new Path({ + className: typeItem.name, + extra: { classify: typeItem.classify, name: typeItem.name, points }, + path: [1, point1.x, point1.y, 2, point2.x, point2.y, 2, point3.x, point3.y, 2, point4.x, point4.y, 11], + stroke: typeItem.color, + strokeWidth: typeItem.strokeWidth, + fill: 'rgba(255,255,255,0)' + }) + group.add(item); + item.on(PointerEvent.TAP, tapCallBack); + + group.off(PointerEvent.DOWN, _addMarkStart); + group.off(PointerEvent.MOVE, _moveMark) + group.off(PointerEvent.UP, _doneDrawMark) + + callBackFtn(); + + const { rapesList, handlesList, beaksList } = getMarkList() + MarkHelper.init({ rapes: rapesList, handles: handlesList, beaks: beaksList }); + + group.set({ draggable: true }); + group.remove(line); + } + + let callBackFtn = () => {}; + function done(ftn = () => {}) { + callBackFtn = ftn; + } + + group.on(PointerEvent.DOWN, _addMarkStart); + group.on(PointerEvent.MOVE, _moveMark) + group.on(PointerEvent.UP, _doneDrawMark) + + return { + done, + } +} + +export default { + // leafer, + init, + setGroup, + groupSetImage, + groupSetMark, + setMarkTapListen, + offMarkTapListen, + groupFill, + groupOnDownListen, + groupOffDownListen, + groupRemoveChild, + getMarkList, + groupCreatPin, + groupAddMark, +} diff --git a/src/core/useDeviceCruise.js b/src/core/useDeviceCruise.js new file mode 100755 index 0000000..466b205 --- /dev/null +++ b/src/core/useDeviceCruise.js @@ -0,0 +1,461 @@ +/** + * 设备按轨迹巡航 + */ +import {computed, reactive, ref} from 'vue'; +// import { interpolate } from 'popmotion'; +// import * as turf from '@turf/turf'; +// import deviceIcon from '../assets/deviceIcon.png'; +import deviceIcon from '../assets/droneImg.png'; +// import { GPS2GCJ } from '../utils/helpers'; +// import * as geo from "../utils/geo"; + +const markerId = 1e6; +const markerOption = { + id: markerId, + iconPath: deviceIcon, + width: 18, + height: 18, + anchor: { x: 0.5, y: 0.5 }, +} + +export const useDeviceCruise = () => { + const markers = ref([]); + const points = ref([]); + const isPlaying = ref(false); + const isPaused = ref(true); + const rotate = ref(0); + const elapsedMs = ref(0); + const timelyData = ref({}); + + const datumTime = computed(() => { + const [{ timestamp: startTs } = {}] = points.value || []; + return points.value.map(({ timestamp }) => timestamp - startTs); + }); + const totalTime = computed(() => datumTime.value[datumTime.value.length - 1] || 0); + + function setCurrentTime(ms) { + if (ms < 0 || ms > totalTime.value) return; + elapsedMs.value = ms; + const index = datumTime.value.findIndex(item => item >= ms); + // this._that.currentIndex = index; + const point = points.value[index]; + const { lng, lat, yaw } = point; + timelyData.value = { ...point }; + markers.value = [{ + ...markerOption, + latitude: lat, + longitude: lng, + rotate: yaw + rotate.value, + }]; + } + + function initRenderDevice() { + const [point] = points.value || []; + if (!point) { + return; + } + + const { lng, lat, yaw } = point; + timelyData.value = { ...point }; + // console.log(yaw, rotate.value, yaw + rotate.value); + markers.value = [{ + ...markerOption, + latitude: lat, + longitude: lng, + rotate: yaw + rotate.value, + }]; + } + + let timer + function autoRenderDevice() { + if (isPaused.value) return; + const index = datumTime.value.findIndex(item => item >= elapsedMs.value); + // this._that.currentIndex = index; + if (index === -1) { + isPlaying.value = false; + isPaused.value = true; + if (timer) { + clearTimeout(timer); + } + return; + } + const point = points.value[index]; + + timelyData.value = { ...point }; + const { lng, lat, yaw } = point; + + markers.value = [{ + ...markerOption, + latitude: lat, + longitude: lng, + rotate: yaw + rotate.value, + }]; + // console.log('yaw', yaw); + elapsedMs.value += 100; + timer = setTimeout(autoRenderDevice, 100); + } + + function play() { + isPlaying.value = true; + isPaused.value = false; + if (timer) { + clearTimeout(timer); + } + autoRenderDevice(); + } + + function pause() { + isPlaying.value = false; + isPaused.value = true; + if (timer) { + clearTimeout(timer); + } + } + + return { + markers, + points, + isPlaying, + isPaused, + rotate, + elapsedMs, + timelyData, + datumTime, + totalTime, + setCurrentTime, + initRenderDevice, + autoRenderDevice, + play, + pause, + } +} + +// class DeviceCruise { +// +// _that = null; +// +// // 地图实例 +// _map = null; +// +// // 单条轨迹数据 +// _dataSource = {}; +// +// // 巡航速率 +// speedRate = 1; +// +// // 动画计时器 +// _timer = null; +// +// // 上一帧时间点 +// _lastFrameAt = 0; +// +// // 累计播放时长(毫秒数) +// elapsedMs = 0; +// +// // 每帧期望间隔(毫秒数,实际间隔取决于浏览器fps) +// _fpsInterval = 1000 / 50; +// +// // 上一帧时间戳 +// _lastFrameTimestamp = 0; +// +// // 巡航到的时间点数据 +// timelyData = {}; +// +// isPlaying = false; +// +// isPaused = false; +// +// isStopped = true; +// +// // currentIndex = 0; +// +// // 是否准备完毕 +// get ready() { +// return Object.keys(this._that._dataSource).length > 0; +// } +// +// get _points() { +// const { points } = this._that._dataSource; +// return points || []; +// } +// +// // 基准时间点(从0开始的毫秒数) +// get _datumTime() { +// const [{ timestamp: startTs } = {}] = this._that._points || []; +// return this._that._points.map(({ timestamp }) => timestamp - startTs); +// } +// +// // 轨迹总时间(毫秒数) +// get totalTime() { +// // console.log('this._that._datumTime', this._that._datumTime); +// return this._that._datumTime[this._that._datumTime.length - 1] || 0; +// } +// +// // 是否已经开始播放了 +// get isStarted() { +// return this._that.isPlaying || this._that.isPaused; +// } +// +// constructor() { +// this._that = reactive(this); +// return this._that; +// } +// +// // 设置地图实例 +// setMap(mapInstance) { +// this._that._map = mapInstance; +// } +// +// mapRotate = 0; +// // 载入轨迹数据(point中必须包含lng, lat, timestamp, yaw) +// loadTrack({ id, points, ...others }, rotate = 0) { +// // if (!this._that._that._map) { +// // throw new Error('请先设置地图实例'); +// // } +// this._that.mapRotate = rotate; +// this._that._dataSource = { +// id, +// points: (points || []).map(item => { +// const [lng, lat] = GPS2GCJ([item.lng, item.lat]); +// return { +// ...item, +// lng, +// lat, +// yaw: +geo.radToDeg(item.yaw || 0).toFixed(1), +// }; +// }), +// ...others, +// }; +// this._that._reset(); +// this._that._initDevice(); +// } +// +// // 设置速率 +// setSpeedRate(val) { +// this._that.speedRate = val; +// } +// +// _setting = false; +// // 设置当前巡航时间点 +// setCurrentTime(ms) { +// if (ms < 0 || ms > this._that.totalTime) return; +// // if (this._that.isPlaying) { +// // this._that.isPlaying = false; +// // this._that.isPaused = true; +// // } +// +// // if (this._that._setting) return; +// // this._that._setting = true; +// this._that.elapsedMs = ms; +// const index = this._that._datumTime.findIndex(item => item >= ms); +// this._that.currentIndex = index; +// const point = this._that._points[index]; +// const { lng, lat, yaw } = point; +// // this._that._map.removeMarkers({ +// // markerIds: [markerId], +// // success: () => { +// // // this._that._renderDevice(); +// // this._that._map.addMarkers({ +// // markers: [{ +// // ...this._that._markerOptins, +// // latitude: lat, +// // longitude: lng, +// // rotate: yaw + this._that.mapRotate, +// // }], +// // success: () => { +// // this._that._setting = false; +// // } +// // }); +// // } +// // }); +// this._that.markers.value = [{ +// ...this._that._markerOptins, +// latitude: lat, +// longitude: lng, +// rotate: yaw + this._that.mapRotate, +// }]; +// } +// +// // 获取指定毫秒处的数据值 +// _getTimelyData(ms = 0) { +// // const genTimelyData = interpolate(this._that._datumTime, this._that._points); +// const index = this._that._datumTime.findIndex(item => item >= ms); +// // console.log('genTimelyData', genTimelyData(ms)); +// // if (index === -1) { +// // return {}; +// // } +// +// // return genTimelyData(ms); +// return this._that._points[index] || {}; +// } +// +// _reset() { +// this._that.isPlaying = false; +// this._that.isPaused = false; +// this._that.isStopped = true; +// this._that.speedRate = 1; +// this._that._lastFrameAt = 0; +// this._that.elapsedMs = 0; +// this._that._lastFrameTimestamp = 0; +// this._that.markers.value = []; +// } +// +// markers = ref([]); +// _initDevice() { +// const [point] = this._that._points; +// if (!point) { +// return; +// } +// +// const { lng, lat, yaw } = point; +// this._that.markers.value = [{ +// ...this._that._markerOptins, +// latitude: lat, +// longitude: lng, +// rotate: yaw + this._that.mapRotate, +// }]; +// // this._that._map.addMarkers({ +// // markers: [{ +// // ...this._that._markerOptins, +// // latitude: lat, +// // longitude: lng, +// // rotate: yaw + this._that.mapRotate, +// // }] +// // }) +// } +// +// _clearDevice() { +// // 清除timelyData即可 +// this._that.timelyData = {}; +// // this._that._map.removeMarkers({ +// // markerIds: [markerId] +// // }); +// this._that.markers.value = []; +// } +// +// _renderDevice() { +// if (!this._that._points.length) return; +// // if (!this._that.isPlaying) return; +// +// // const lastData = this._that._getTimelyData(this._that.elapsedMs - 100 > 0 ? this._that.elapsedMs - 100 : 0); +// const nextData = this._that._getTimelyData(this._that.elapsedMs); +// +// // const { deep, breadth, seeding, flow } = nextData; +// this._that.timelyData = { ...nextData }; +// const { lng, lat, yaw } = nextData; +// +// // this._that._map.translateMarker({ +// // markerId, +// // destination: { +// // longitude: lng, +// // latitude: lat, +// // }, +// // autoRotate: false, +// // duration: 1, +// // rotate: yaw + this._that.mapRotate, +// // moveWithRotate: true, +// // animationEnd: () => { +// // // this._that.timelyData = { ...nextData }; +// // // this._that.currentIndex += 1; +// // // if (this._that.isPlaying) { +// // // this._that.elapsedMs += (duration * this._that.speedRate); +// // // if (this._that.elapsedMs >= this._that.totalTime) { +// // // this._that.handleStop(); +// // // return; +// // // } +// // // this._that._renderDevice(); +// // // } +// // } +// // }); +// +// // this._that._map.removeMarkers({ +// // markerIds: [markerId], +// // success: () => { +// // // this._that._renderDevice(); +// // this._that._map.addMarkers({ +// // markers: [{ +// // ...this._that._markerOptins, +// // latitude: lat, +// // longitude: lng, +// // rotate: yaw + this._that.mapRotate, +// // }], +// // success: () => { +// // // this._that._setting = false; +// // } +// // }); +// // } +// // }); +// this._that.markers.value = [{ +// ...this._that._markerOptins, +// latitude: lat, +// longitude: lng, +// rotate: yaw + this._that.mapRotate, +// }]; +// } +// +// _ticker = timestamp => { +// this._that.elapsedMs += Math.round((timestamp - this._that._lastFrameAt) * this._that.speedRate); +// this._that._lastFrameAt = timestamp; +// if (this._that.elapsedMs > this._that.totalTime) { +// return; +// } +// +// // 在期望的间隔内_renderDevice,而不是每个tick都_renderDevice(目的:降低render频率,提高显示性能) +// const now = Date.now(); +// const timeDiff = now - this._that._lastFrameTimestamp; +// if (timeDiff > this._that._fpsInterval) { +// this._that._lastFrameTimestamp = now - (timeDiff % this._that._fpsInterval); // 矫正时间戳 +// this._that._renderDevice(); +// } +// +// this._that._timer = requestAnimationFrame(this._that._ticker); +// }; +// +// // 开始播放巡航动画、恢复播放巡航动画 +// handlePlay() { +// requestAnimationFrame(ms => { +// this._that._lastFrameAt = ms; +// }); +// this._that.isPlaying = true; +// this._that.isPaused = false; +// this._that.isStopped = false; +// requestAnimationFrame(this._that._ticker); +// } +// +// // 暂停播放巡航动画 +// handlePause() { +// this._that.isPlaying = false; +// this._that.isPaused = true; +// this._that.isStopped = false; +// cancelAnimationFrame(this._that._timer); +// } +// +// // 停止播放巡航动画 +// handleStop() { +// this._that.isPlaying = false; +// this._that.isPaused = false; +// this._that.isStopped = true; +// this._that._lastFrameAt = 0; +// this._that.elapsedMs = 0; +// cancelAnimationFrame(this._that._timer); +// this._that._renderDevice(); +// this._that.timelyData = {}; +// } +// +// clear() { +// if (!this._that._map) return; +// this._that.handleStop(); +// this._that._clearDevice(); +// this._that._reset(); +// this._that._dataSource = {}; +// this._that.timelyData = {}; +// } +// +// destroy() { +// this._that.clear(); +// this._that._timer = null; +// this._that._map = null; +// } +// } + +// export default new DeviceCruise(); diff --git a/src/pages/airfield/index.config.js b/src/pages/airfield/index.config.js new file mode 100644 index 0000000..090d926 --- /dev/null +++ b/src/pages/airfield/index.config.js @@ -0,0 +1,9 @@ +export default definePageConfig({ + navigationBarTitleText: '场地管理', + // disableSwipeBack: true, + // enablePullDownRefresh: true, + // backgroundTextStyle: 'dark', + // navigationStyle: 'custom', + // enablePullDownRefresh: false, + // disableScroll: false, +}) diff --git a/src/pages/airfield/index.vue b/src/pages/airfield/index.vue new file mode 100644 index 0000000..8806599 --- /dev/null +++ b/src/pages/airfield/index.vue @@ -0,0 +1,413 @@ + + + + + diff --git a/src/pages/airfieldMap/BottomSide.vue b/src/pages/airfieldMap/BottomSide.vue new file mode 100644 index 0000000..1681816 --- /dev/null +++ b/src/pages/airfieldMap/BottomSide.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/src/pages/airfieldMap/LeftSide.vue b/src/pages/airfieldMap/LeftSide.vue new file mode 100644 index 0000000..c1e382a --- /dev/null +++ b/src/pages/airfieldMap/LeftSide.vue @@ -0,0 +1,222 @@ + + + + + diff --git a/src/pages/airfieldMap/ResultModal.vue b/src/pages/airfieldMap/ResultModal.vue new file mode 100644 index 0000000..d8f53b9 --- /dev/null +++ b/src/pages/airfieldMap/ResultModal.vue @@ -0,0 +1,124 @@ + + + + + diff --git a/src/pages/airfieldMap/RightSide.vue b/src/pages/airfieldMap/RightSide.vue new file mode 100644 index 0000000..14520b5 --- /dev/null +++ b/src/pages/airfieldMap/RightSide.vue @@ -0,0 +1,257 @@ + + + + + diff --git a/src/pages/airfieldMap/geo.js b/src/pages/airfieldMap/geo.js new file mode 100644 index 0000000..bf2b67c --- /dev/null +++ b/src/pages/airfieldMap/geo.js @@ -0,0 +1,118 @@ +/** + * 地理空间函数库 + */ +import * as math from 'mathjs'; +import * as turf from '@turf/turf'; + +/** + * 将两个点连成一个向量(并确保落在1、4象限) + * @param point1 + * @param point2 + * @returns {Vector} + */ +export function pointToVector(point1, point2) { + const vec = math.subtract(point2, point1); + return vec[0] < 0 ? math.multiply(-1, vec) : vec; +} + +/** + * 弧度2角度 + * @param radians + * @returns {number} + */ +export function radToDeg(radians) { + return math.multiply(radians, math.divide(180, math.pi)); +} + +/** + * 计算二维向量与x轴的夹角(弧度) + * @param {number[]} vector - 二维向量 [x, y] + * @returns {number} 夹角的弧度值 + */ +export function angleWithXAxis(vector) { + const [x] = vector; + const magnitude = math.norm(vector); + + if (magnitude === 0) { + throw new Error('零向量的夹角未定义'); + } + + const cosTheta = x / magnitude; + // 处理浮点数精度问题,确保 cosTheta 在 [-1, 1] 范围内 + const safeCosTheta = Math.max(-1, Math.min(1, cosTheta)); + + return math.acos(safeCosTheta); +} + +/** + * 计算二维向量与 y 轴的夹角(弧度) + * @param {number[]} vector - 二维向量 [x, y] + * @returns {number} 夹角的弧度值 + */ +export function angleWithYAxis(vector) { + const [, y] = vector; + const magnitude = math.norm(vector); // 计算向量的模长 ||v|| + + if (magnitude === 0) { + throw new Error('零向量的夹角未定义'); + } + + const cosTheta = y / magnitude; + // 处理浮点数精度问题,确保 cosTheta 在 [-1, 1] 范围内 + const safeCosTheta = math.max(-1, math.min(1, cosTheta)); + + // 计算夹角 theta + return math.acos(safeCosTheta); +} + +/** + * 计算两个二维向量之间的夹角(弧度) + * @param {number[]} vectorA - 第一个二维向量 [x1, y1] + * @param {number[]} vectorB - 第二个二维向量 [x2, y2] + * @returns {number} 夹角的弧度值 + */ +export function angleBetweenVectors(vectorA, vectorB) { + const dotProduct = math.dot(vectorA, vectorB); + const magnitudeA = math.norm(vectorA); + const magnitudeB = math.norm(vectorB); + + if (magnitudeA === 0 || magnitudeB === 0) { + throw new Error('其中一个向量是零向量,夹角未定义'); + } + + const cosTheta = dotProduct / (magnitudeA * magnitudeB); + // 处理浮点数精度问题,确保 cosTheta 在 [-1, 1] 范围内 + const safeCosTheta = Math.max(-1, Math.min(1, cosTheta)); + + return math.acos(safeCosTheta); +} + +/** + * 计算两个坐标点的中点 + * @param point1 + * @param point2 + * @returns {number[]} + */ +export function midPoint(point1, point2) { + const [x1, y1] = point1; + const [x2, y2] = point2; + const x = (x1 + x2) / 2; + const y = (y1 + y2) / 2; + return [+x.toFixed(8), +y.toFixed(8)]; +} + +/** + * 生成圆形路径 + * @param center 圆心([lng, lat]) + * @param radius 半径(单位:米) + * @param steps 分段数 + * @returns {any} + */ +export function genCirclePath(center, radius, steps = 64) { + const geojson = turf.circle(center, radius / 1000, { + steps, + units: 'kilometers', + }); + const [coords] = turf.getCoords(geojson); + return coords; +} diff --git a/src/pages/airfieldMap/index.config.js b/src/pages/airfieldMap/index.config.js new file mode 100644 index 0000000..7078b9a --- /dev/null +++ b/src/pages/airfieldMap/index.config.js @@ -0,0 +1,5 @@ +export default definePageConfig({ + navigationBarTitleText: '场地', + navigationStyle: 'custom', + pageOrientation: 'landscape' +}) diff --git a/src/pages/airfieldMap/index.vue b/src/pages/airfieldMap/index.vue new file mode 100644 index 0000000..b28f7c0 --- /dev/null +++ b/src/pages/airfieldMap/index.vue @@ -0,0 +1,444 @@ + + + + + diff --git a/src/pages/airfieldMap/useConnector.js b/src/pages/airfieldMap/useConnector.js new file mode 100644 index 0000000..4391860 --- /dev/null +++ b/src/pages/airfieldMap/useConnector.js @@ -0,0 +1,224 @@ +import { createGlobalState, useWebSocket } from '@vueuse/core'; +import { computed, ref, watch } from 'vue'; +import * as turf from '@turf/turf'; +import gcoord from 'gcoord'; +import * as urls from '../config/urls'; +import * as geo from '../utils/geo'; +import { GPS_FIX_TYPE, GPS_FIX_TYPE2 } from '../config/gpsFixTypeMap'; +import { FLY_MODE } from '../config/flyModeMap'; +import { FC_SYSTEM_STATUS } from '../config/fcSystemStatus'; +import { ERRORS_COUNT_1, ERRORS_COUNT_2, ERRORS_COUNT_3 } from '../config/errorMap'; +import { useAnnouncer } from './useAnnouncer'; + +const announcer = useAnnouncer(); + +export const useConnector = createGlobalState(() => { + const { ws, status, data, send, open, close } = useWebSocket(urls.WS_URL, { + immediate: false, + heartbeat: { + interval: 3000, + }, + }); + + watch(data, (val) => { + if (val === 'ping') { + send('pong'); + } + }); + + const isConnecting = computed(() => status.value === 'CONNECTING'); + const isConnected = computed(() => status.value === 'OPEN'); + + const time = ref({}); + const battery = ref({}); + const gps = ref({}); + const position = ref({}); + const attitude = ref({}); + const home = ref({}); + const homeAngle = ref(0); + const modeName = ref('N/A'); + const sysStatus = ref('N/A'); + const extra = ref({}); + + const info = computed(() => { + let result = data.value || ''; + if (!`${data.value}`.startsWith('{')) { + return {}; + } + try { + result = JSON.parse(result); + } catch (e) { + return {}; + } + return result; + }); + + // 闲置计时器(闲置时做些动作) + let idleTimer = null; + + watch(info, (val) => { + // info有变化时,清掉上一个计时器 + if (idleTimer) clearTimeout(idleTimer); + + // 电池信息、故障信息 + // http://vk-fly.com:10880/VKFLY_INDUSTRY/VK_Mavlink/src/main#22-%E7%B3%BB%E7%BB%9F%E7%8A%B6%E6%80%81-sys_status + if (val?.msgId === 1) { + const { VoltageBattery, CurrentBattery, BatteryRemaining, ErrorsCount1, ErrorsCount2, ErrorsCount3 } = val.data || {}; + const voltage = +(VoltageBattery / 1e2 || 0).toFixed(1) || null; // 飞控给的电压是cV即厘伏(mavlink文档中写的是mV即毫伏) + const current = +(CurrentBattery / 1e2 || 0).toFixed(1) || null; // 飞控给的电压是cA即厘安 + const remaining = BatteryRemaining >= 0 ? BatteryRemaining : null; // 单位:% + battery.value = { voltage, current, remaining }; + // todo 临时 + if (ErrorsCount1) { + const { [ErrorsCount1]: errorContent } = ERRORS_COUNT_1; + announcer.alarmThrottle(errorContent); + } + if (ErrorsCount2) { + const { [ErrorsCount2]: errorContent } = ERRORS_COUNT_2; + announcer.alarmThrottle(errorContent); + } + if (ErrorsCount3) { + const { [ErrorsCount3]: errorContent } = ERRORS_COUNT_3; + announcer.alarmThrottle(errorContent); + } + } + + // 系统时间 + // https://mavlink.io/en/messages/common.html#SYSTEM_TIME + if (val?.msgId === 2) { + const { TimeUnixUsec, TimeBootMs } = val.data || {}; + const timestamp = parseInt(TimeUnixUsec / 1e3, 10); // to毫秒 + const boot = TimeBootMs; // 毫秒 + time.value = { timestamp, boot }; + } + + // GPS(with RTK) + // https://mavlink.io/en/messages/common.html#GPS2_RAW + if (val?.msgId === 124) { + const { FixType: fixType, SatellitesVisible: satellite } = val.data || {}; + const fixTypeLabel = GPS_FIX_TYPE2.get(fixType); + gps.value = { fixType, fixTypeLabel, satellite }; + } + + // GPS(普通GPS) + // https://mavlink.io/en/messages/common.html#GPS_INPUT + if (val?.msgId === 232) { + if ('fixType' in gps.value) return; + + const { FixType: fixType, SatellitesVisible: satellite } = val.data || {}; + const { [fixType]: fixTypeLabel } = GPS_FIX_TYPE; + gps.value = { fixType, fixTypeLabel, satellite }; + } + + // 飞机位置 + // http://vk-fly.com:10880/VKFLY_INDUSTRY/VK_Mavlink/src/main#25-%E8%9E%8D%E5%90%88%E7%BB%8F%E7%BA%AC%E5%BA%A6%E9%80%9F%E5%BA%A6-global_position_int + if (val?.msgId === 33) { + const { Lon, Lat, Alt, RelativeAlt, Vx, Vy, Vz } = val.data || {}; + const [lng, lat] = gcoord.transform([Lon / 1e7, Lat / 1e7], gcoord.WGS84, gcoord.GCJ02); + const alt = Alt / 1e3; // 源值毫米 + const height = RelativeAlt / 1e3; // 源值毫米 + const sx = (+Vx || 0) / 1e2; // 向北速度分量(源值厘米) + const sy = (+Vy || 0) / 1e2; // 向东速度分量(源值厘米) + const sz = (+Vz || 0) / 1e2; // 向下速度分量(源值厘米) + const hSpeed = Math.hypot(sx, sy); + const vSpeed = Math.abs(sz); + + const { lng: hLng, lat: hLat } = home.value || {}; + const homeDist = hLng !== undefined ? turf.distance([lng, lat], [hLng, hLat]) * 1e3 : null; // distance单位是km + + position.value = { lng, lat, alt, height, hSpeed, vSpeed, sx, sy, sz, homeDist }; + } + + // 飞机姿态 + // http://vk-fly.com:10880/VKFLY_INDUSTRY/VK_Mavlink/src/main#26-%E9%A3%9E%E6%9C%BA%E5%A7%BF%E6%80%81%E8%A7%92%E9%80%9F%E5%BA%A6-attitude + if (val?.msgId === 30) { + const { Yaw, Pitch, Roll } = val.data || {}; + const yaw = +geo.radToDeg(Yaw || 0).toFixed(1); + const pitch = +geo.radToDeg(Pitch || 0).toFixed(1); + const roll = +geo.radToDeg(Roll || 0).toFixed(1); + attitude.value = { yaw, pitch, roll }; + } + + // 油门 + // https://mavlink.io/en/messages/common.html#VFR_HUD + if (val?.msgId === 74) { + const { Throttle } = val.data || {}; + extra.value = { throttle: Throttle }; + } + + // home点 + // http://vk-fly.com:10880/VKFLY_INDUSTRY/VK_Mavlink/src/main#23-home%E7%82%B9-home_position + if (val?.msgId === 242) { + const { Longitude, Latitude } = val.data || {}; + let lng = +(Longitude / 1e7).toFixed(7); + let lat = +(Latitude / 1e7).toFixed(7); + [lng, lat] = [lat, lng]; // todo 临时颠倒一下 + home.value = { lng, lat }; + } + + // 飞行模式、解锁状态 + // http://vk-fly.com:10880/VKFLY_INDUSTRY/VK_Mavlink/src/main#110-%E8%87%AA%E5%AE%9A%E4%B9%89%E9%A3%9E%E8%A1%8C%E6%A8%A1%E5%BC%8F-vkfly_custom_mode + // https://mavlink.io/en/messages/common.html#HEARTBEAT + if (val?.msgId === 0) { + const { CustomMode, SystemStatus } = val.data || {}; + const { [CustomMode]: label } = FLY_MODE; + modeName.value = label || 'N/A'; + sysStatus.value = FC_SYSTEM_STATUS.get(SystemStatus) || 'N/A'; + } + + // 1秒后,若info没有新的变化,则清空这些数据 + idleTimer = setTimeout(() => { + time.value = {}; + battery.value = {}; + gps.value = {}; + position.value = {}; + attitude.value = {}; + home.value = {}; + modeName.value = 'N/A'; + sysStatus.value = 'N/A'; + }, 1000); + }); + + // 动态计算机头与home点的夹角 + watch([position, attitude], () => { + const { lng: hLng, lat: hLat } = home.value || {}; + if (hLng === undefined) { + homeAngle.value = 0; + return; + } + const { lng: dLng, lat: dLat } = position.value || {}; + const { yaw } = attitude.value || {}; + if (dLng === undefined || yaw === undefined) return; + const [lng, lat] = [hLng - dLng, hLat - dLat]; // 以飞机为起点,home为终点的向量 + // 不能是0向量(飞机与home点完全重合时,则令机头始终指向home) + if (!lng && !lat) { + homeAngle.value = 0; + return; + } + const rad = geo.angleWithYAxis([lng, lat]); // 与(0,1)这个单位向量的夹角 + const deg = geo.radToDeg(rad) * (lng >= 0 ? 1 : -1); // 通过x轴正负来决定角度正负 + homeAngle.value = +(deg - yaw).toFixed(2) || 0; + }); + + return { + ws, + isConnecting, + isConnected, + time, + battery, + gps, + position, + attitude, + home, + homeAngle, + modeName, + sysStatus, + extra, + send, + connect: open, + reconnect: open, + close, + }; +}); + +export default null; diff --git a/src/pages/airfieldMap/useDroneMarker.js b/src/pages/airfieldMap/useDroneMarker.js new file mode 100644 index 0000000..9132cdc --- /dev/null +++ b/src/pages/airfieldMap/useDroneMarker.js @@ -0,0 +1,320 @@ +import {computed, onMounted, ref} from 'vue'; +import deviceIcon from "../../assets/droneImg.png"; +import droneDisImg from '../../assets/droneDisImg.png'; +import Taro from "@tarojs/taro"; +import {storeToRefs} from "pinia"; +import {useAirFieldsStore, useStandardStore, useSupervisionStore} from "../../stores"; +import {GCJ2GPS, GPS2GCJ} from "../../utils/helpers"; +import {creatEightShaped} from "../flightMap/utils"; +import * as turf from "@turf/turf"; +import transparentImg from "../../assets/transparent-marker.png"; + +const { formData } = storeToRefs(useAirFieldsStore()); +const { examList, envList } = storeToRefs(useStandardStore()); + +const envItem = computed(() => { + return envList.value.find((item) => item.id === formData.value.envGradeId) || {}; + +}); +const standardData = computed(() => { + return examList.value.find((item) => item.name === '8字圆圈半径' && item.licenseLevelId === formData.value.licenseGradeId && item.envGrade === envItem.value.gradeName) || {}; +}); + +const standardDiffData = computed(() => { + return examList.value.find((item) => item.name === '8字水平偏差阈值' && item.licenseLevelId === formData.value.licenseGradeId && item.envGrade === envItem.value.gradeName) || {}; +}); +const point3standardData = computed(() => { + return examList.value.find((item) => item.name === '点3中心筒范围-内' && item.licenseLevelId === formData.value.licenseGradeId && item.envGrade === envItem.value.gradeName) || {}; +}); + +export function useDroneMarker() { + let mapContext; + const { position, attitude, droneOnLine } = storeToRefs(useSupervisionStore()); + const rotate = ref(0); + + const extMarker = ref([]); + const markers = computed(() => { + if (!Object.keys(position.value).length || !mapContext) return [...extMarker.value]; + return [{ + id: 1e7, + iconPath: droneOnLine.value ? deviceIcon : droneDisImg, + width: 18, + height: 18, + anchor: { x: 0.5, y: 0.5 }, + latitude: position.value?.lat, + longitude: position.value?.lng, + rotate: attitude.value?.yaw + rotate.value, + }, ...extMarker.value] + }) + + const circle1 = ref([]); + const circle2 = ref([]); + const currentCircle = computed(() => { + if (!Object.keys(position.value).length || !mapContext) return []; + return [{ + latitude: position.value?.lat, + longitude: position.value?.lng, + color: '#00d9ff', + radius: standardData.value.value || 6, + // fillColor: '#00000000', + strokeWidth: 0.8 + }] + }); + const extCircles = ref([]); + const circles = computed(() => [...circle1.value, ...circle2.value, ...currentCircle.value, ...extCircles.value]); + const polygons = ref([]); + + const distanceText = computed(() => { + if (!droneOnLine.value) { + return [] + } + if (circle1.value.length) { + const center1 = turf.point([position.value?.lng, position.value?.lat]); + const center2 = turf.point([circle1.value[0]?.longitude, circle1.value[0]?.latitude]); + const text = turf.distance(center1, center2, { units: 'meters' }).toFixed(1); + const [lng, lat] = turf.midpoint(center1, center2).geometry.coordinates + return [ + { + id: 1e7 + 9, + latitude: lat, + longitude: lng, + iconPath: transparentImg, + width: 1, + height: 1, + label: { + content: `${text || 0} m`, + color: '#000000', + fontSize: 8, + // textStrokeWidth: 2, + // textStrokeColor: '#007fcf', + anchorX: -3, + anchorY: 0, + bgColor: '#00000000' + } + } + ] + } + + if (circle2.value.length) { + const center1 = turf.point([position.value?.lng, position.value?.lat]); + const center2 = turf.point([circle2.value[0]?.longitude, circle2.value[0]?.latitude]); + const text = turf.distance(center1, center2, { units: 'meters' }).toFixed(1); + const [lng, lat] = turf.midpoint(center1, center2).geometry.coordinates; + return [ + { + id: 1e7 + 9, + latitude: lat, + longitude: lng, + iconPath: transparentImg, + width: 1, + height: 1, + label: { + content: `${text || 0} m`, + color: '#000000', + fontSize: 8, + // textStrokeWidth: 2, + // textStrokeColor: '#007fcf', + anchorX: -3, + anchorY: 0, + bgColor: '#00000000' + } + } + ] + } + + return []; + }) + + + const polyline = computed(() => { + if (!droneOnLine.value) { + return [] + } + if (circle1.value.length) { + return [ + { + points: [ + { + latitude: position.value?.lat, + longitude: position.value?.lng, + }, + { + latitude: circle1.value[0]?.latitude, + longitude: circle1.value[0]?.longitude, + }, + ], + color: '#FF0000', + width: 0.8, + dottedLine: true, + level:'abovebuildings', + } + ] + } + + if (circle2.value.length) { + return [ + { + points: [ + { + latitude: position.value?.lat, + longitude: position.value?.lng, + }, + { + latitude: circle2.value[0]?.latitude, + longitude: circle2.value[0]?.longitude, + }, + ], + color: '#FF0000', + width: 0.8, + dottedLine: true, + level:'abovebuildings', + // segmentTexts: [{ + // name: 'ccccc', + // startIndex: 0, + // endIndex: 1, + // }], + // textStyle: { + // fontSize: 20, + // textColor: '#000000' + // } + } + ] + } + + return []; + }) + + onMounted(() => { + mapContext = Taro.createMapContext('map'); + }) + + let callBack = () => {}; + function createCircle(index = 1) { + const { lat, lng } = position.value || {}; + if (index === 1) { + circle1.value = [ + { + latitude: lat, + longitude: lng, + color: '#FF0000', + radius: standardData.value.value || 6, + // fillColor: '#00000000', + strokeWidth: 0.8 + }, + { + latitude: lat, + longitude: lng, + color: '#FF0000', + radius: 0.1, + fillColor: '#FF0000', + strokeWidth: 0 + }, + ]; + const [Lng, Lat] = GCJ2GPS([lng, lat]); + formData.value.circle1Lat = Lat; + formData.value.circle1Lng = Lng; + callBack(index); + } + if (index === 2) { + circle2.value = [ + { + latitude: lat, + longitude: lng, + color: '#FF0000', + radius: standardData.value.value || 6, + // fillColor: '#00000000', + strokeWidth: 0.8 + }, + { + latitude: lat, + longitude: lng, + color: '#FF0000', + radius: 0.1, + fillColor: '#FF0000', + strokeWidth: 0 + }, + ] + const [Lng, Lat] = GCJ2GPS([lng, lat]); + formData.value.circle2Lat = Lat; + formData.value.circle2Lng = Lng; + callBack(index); + } + } + + function setCallBack(fn = () => {}) { + callBack = fn; + } + // function moveDevice(point, mapRotate = 0) { + // const { lng, lat, yaw } = point; + // + // map.translateMarker({ + // markerId, + // destination: { + // longitude: lng, + // latitude: lat, + // }, + // autoRotate: false, + // duration: 1, + // rotate: yaw + mapRotate, + // moveWithRotate: true, + // animationEnd: () => { + // // this._that.timelyData = { ...nextData }; + // // this._that.currentIndex += 1; + // // if (this._that.isPlaying) { + // // this._that.elapsedMs += (duration * this._that.speedRate); + // // if (this._that.elapsedMs >= this._that.totalTime) { + // // this._that.handleStop(); + // // return; + // // } + // // this._that._renderDevice(); + // // } + // } + // }); + // } + + // const polyine = ref(); + // function renderTrack(points = []) { + // + // } + + function showEight() { + const center1 = GPS2GCJ([formData.value.circle1Lng, formData.value.circle1Lat]); + const center2 = GPS2GCJ([formData.value.circle2Lng, formData.value.circle2Lat]); + + // const center1 = [-122.3895127, 37.6280898]; + // const center2 = [-122.3894255, 37.6281725]; + // console.log(center1, center2); + const { polygons: shapePolygons, circles: shapeCircles, markers: shapeMarkers } = creatEightShaped({ + center: center1, + radius: standardData.value.value, + radiusDiff: standardDiffData.value.value, + centerWidth: 0.1, + }, { + center: center2, + radius: standardData.value.value, + radiusDiff: standardDiffData.value.value, + centerWidth: 0.1, + }, + [6, 0, 1, 3, 4, 5, 2], + { radius: point3standardData.value.value }); + + extCircles.value = [...shapeCircles]; + polygons.value = [...shapePolygons]; + extMarker.value = [...shapeMarkers]; + // } + } + + return { + // initDevice, + // moveDevice, + markers, + rotate, + circles, + polygons, + createCircle, + showEight, + setCallBack, + polyline, + distanceText, + } +} diff --git a/src/pages/flight/index.vue b/src/pages/flight/index.vue index 623a0f0..7c7b138 100644 --- a/src/pages/flight/index.vue +++ b/src/pages/flight/index.vue @@ -7,6 +7,7 @@ const { getFlightList } = useFlightStore(); const { flightList, flightExtra, flightQueries } = storeToRefs(useFlightStore()); + const list = ref([]) const state = reactive({ msg: '错误提示', type: 'warn', @@ -28,6 +29,7 @@ isRefreshing.value = true; flightQueries.value.pageNum = 1; getFlightList().then(() => { + list.value = [...flightList.value]; Taro.stopPullDownRefresh(); }).catch(({ msg }) => { if (msg) openToast('warn', msg); @@ -36,21 +38,25 @@ }); } + onRefresh(); + function onLoadMore() { if (loading.value) return; - if (flightList.value.length >= flightExtra.value.total) return; + if (list.value.length >= flightExtra.value.total) return; loading.value = true; flightQueries.value.pageNum += 1; - getFlightList().catch(({ msg }) => { + getFlightList().then(() => { + list.value = [...list.value, ...flightList.value]; + }).catch(({ msg }) => { if (msg) openToast('warn', msg); }).finally(() => { loading.value = false; }); } - function onNavTo(id) { + function onNavTo(recordId) { Taro.navigateTo({ - url: `/pages/flightMap/index?id=${id}`, + url: `/pages/flightMap/index?recordId=${recordId}`, }); } @@ -62,20 +68,20 @@ onLoadMore(); }); - Taro.useDidShow(() => { - getFlightList().catch(({ msg }) => { - if (msg) openToast('warn', msg); - }); - }); + // Taro.useDidShow(() => { + // getFlightList().catch(({ msg }) => { + // if (msg) openToast('warn', msg); + // }); + // }); @@ -219,6 +337,7 @@ width: 100%; height: 100%; // z-index: -1; + transform: scale(2); } .real-time-data { diff --git a/src/pages/flightMap/utils.js b/src/pages/flightMap/utils.js index 5406c79..2fa28eb 100644 --- a/src/pages/flightMap/utils.js +++ b/src/pages/flightMap/utils.js @@ -1,5 +1,5 @@ import * as turf from '@turf/turf'; -import deviceIcon from '../../assets/deviceIcon.png'; +import transparentImg from '../../assets/transparent-marker.png'; // 创建同心圆多边形点集 function _createCircle({ center, redRadius, radiusDiff }) { @@ -14,7 +14,7 @@ function _createCircle({ center, redRadius, radiusDiff }) { const innerCircle = turf.circle([center.lng, center.lat], innerRadius, options); // 生成红色参考圆 - const redCircle = turf.circle([center.lng, center.lat], redRadius, options); + // const redCircle = turf.circle([center.lng, center.lat], redRadius, options); // 创建环形(外圆 - 内圆) const featureCollection = turf.featureCollection([outerCircle, innerCircle]); @@ -22,7 +22,7 @@ function _createCircle({ center, redRadius, radiusDiff }) { // 转换坐标格式为小程序地图组件要求的格式 const convertCoordinates = (coords) => { - return coords.map(coord => ({ + return (coords || []).map(coord => ({ longitude: coord[0], latitude: coord[1] })); @@ -31,12 +31,12 @@ function _createCircle({ center, redRadius, radiusDiff }) { // // 获取环形的坐标点集 // const ringCoords = ring.geometry.coordinates[0]; // 获取红色圆的坐标点集 - const redCircleCoords = redCircle.geometry.coordinates[0]; + // const redCircleCoords = redCircle.geometry.coordinates[0]; // 返回所需的点集 return { ring: [...convertCoordinates(ring.geometry.coordinates[0]), ...convertCoordinates(ring.geometry.coordinates[1])], - redCircle: convertCoordinates(redCircleCoords), + // redCircle: convertCoordinates(redCircleCoords), center: { latitude: center.lat, longitude: center.lng @@ -104,14 +104,14 @@ export function addCircleMarkers(circle1, circle2, indexMap = [6, 0, 1, 3, 4, 5, id: index, latitude: markerPoint.latitude, longitude: markerPoint.longitude, - iconPath: deviceIcon, + iconPath: transparentImg, width: 10, height: 10, label: { content: String(indexMap[index] + 1), color: '#FFFFFF', - fontSize: 20, - textStrokeWidth: 2, + fontSize: 2, + textStrokeWidth: 1, textStrokeColor: '#000000', anchorX: -6, anchorY: -12, @@ -124,7 +124,7 @@ export function addCircleMarkers(circle1, circle2, indexMap = [6, 0, 1, 3, 4, 5, } -export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, indexMap = [6, 0, 1, 3, 4, 5, 2], markerOptions = { radius: 50 }) { +export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, indexMap = [6, 0, 1, 3, 4, 5, 2], markerOptions = { radius: 5 }) { const circle1 = _createCircle({ center: { lng: circleOptions1.center[0], lat: circleOptions1.center[1] }, redRadius: circleOptions1.radius, @@ -136,36 +136,71 @@ export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, index radiusDiff: circleOptions2.radiusDiff }); const polygons = []; - + const circles = []; // 添加第一个圆的环形 polygons.push({ points: circle1.ring, fillColor: '#FFFFFF80', strokeColor: '#00000000', - strokeWidth: 2 + strokeWidth: 1 }); - polygons.push({ - points: circle1.redCircle, - fillColor: '#00000000', - strokeColor: '#FF0000', - strokeWidth: 2 - }); + // polygons.push({ + // points: circle1.redCircle, + // fillColor: '#00000000', + // strokeColor: '#FF0000', + // strokeWidth: 2 + // }); + circles.push({ + latitude: circleOptions1.center[1], + longitude: circleOptions1.center[0], + color: '#FF0000', + radius: circleOptions1.radius, + // fillColor: '#00000000', + strokeWidth: 0.8 + }) + + circles.push({ + latitude: circleOptions1.center[1], + longitude: circleOptions1.center[0], + color: '#FF0000', + radius: circleOptions1.centerWidth, + fillColor: '#FF0000', + strokeWidth: 0 + }) // 添加第二个圆的环形 polygons.push({ points: circle2.ring, fillColor: '#FFFFFF80', strokeColor: '#00000000', - strokeWidth: 2 + strokeWidth: 1 }); - polygons.push({ - points: circle2.redCircle, - fillColor: '#00000000', - strokeColor: '#FF0000', - strokeWidth: 2 - }); + // polygons.push({ + // points: circle2.redCircle, + // fillColor: '#00000000', + // strokeColor: '#FF0000', + // strokeWidth: 2 + // }); + + circles.push({ + latitude: circleOptions2.center[1], + longitude: circleOptions2.center[0], + color: '#FF0000', + radius: circleOptions2.radius, + // fillColor: '#FF0000', + strokeWidth: 0.8 + }) + + circles.push({ + latitude: circleOptions2.center[1], + longitude: circleOptions2.center[0], + color: '#FF0000', + radius: circleOptions2.centerWidth, + fillColor: '#FF0000', + strokeWidth: 0 + }) // 生成标记点和圆形标记 const center1 = turf.point(circleOptions1.center); @@ -199,7 +234,6 @@ export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, index turf.midpoint(center1, center2).geometry.coordinates // 连线中点 ]; - const circles = []; const markers = []; // 生成标记点数据 @@ -216,8 +250,26 @@ export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, index longitude: markerPoint.longitude, color: '#FF0000', radius: markerOptions.radius, - strokeWidth: 2 + strokeWidth: 0.8 }); + + // // 生成红色参考圆 + // const redCircle = turf.circle([markerPoint.longitude, markerPoint.latitude], markerOptions.radius, {steps: 64, units: 'meters'}); + // // 转换坐标格式为小程序地图组件要求的格式 + // const convertCoordinates = (coords) => { + // return coords.map(coord => ({ + // longitude: coord[0], + // latitude: coord[1] + // })); + // }; + // // 获取红色圆的坐标点集 + // const redCircleCoords = redCircle.geometry.coordinates[0]; + // polygons.push({ + // points: convertCoordinates(redCircleCoords), + // fillColor: '#00000000', + // strokeColor: '#FF0000', + // strokeWidth: 1 + // }); } // 添加数字标记 @@ -225,17 +277,17 @@ export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, index id: index, latitude: markerPoint.latitude, longitude: markerPoint.longitude, - iconPath: deviceIcon, + iconPath: transparentImg, width: 1, height: 1, label: { content: String(indexMap[index] + 1), - color: '#FFFFFF', - fontSize: 20, - textStrokeWidth: 2, - textStrokeColor: '#000000', - anchorX: -6, - anchorY: -12, + color: '#000000', + fontSize: 8, + // textStrokeWidth: 2, + // textStrokeColor: '#007fcf', + anchorX: -3, + anchorY: -6, bgColor: '#00000000' } }); @@ -285,74 +337,3 @@ export function creatEightShaped(circleOptions1 = {}, circleOptions2 = {}, index // this._circle2 = null; // } // } - - -/////////////// - -/** - * 将二维坐标数组转换为轨迹对象,包含自动生成的时间戳和航向角 - * @param {Array} coords 二维数组,格式如 [[lng, lat], ...] - * @param {Object} [options] 配置选项 - * @param {Date|string} [options.startTime] 起始时间(默认当前时间) - * @param {number} [options.interval=1000] 时间间隔(毫秒) - * @param {boolean} [options.calculateYaw=true] 是否计算航向角 - * @returns {Object} 轨迹对象 {id: string, points: Array} - */ -export function convertToTrajectory(coords, options = {}) { - // 参数处理 - const { - startTime = new Date(), - interval = 1000, - calculateYaw = true - } = options; - - const startTimestamp = new Date(startTime).getTime(); - const id = `trajectory_${startTimestamp}`; - - // 核心转换逻辑 - const points = coords.map(([lng, lat], index, arr) => { - // 生成时间戳 - const timestamp = startTimestamp + index * interval; - - // 航向角计算 - let yaw = 0; - if (calculateYaw && index > 0) { - const prev = arr[index - 1]; - yaw = calculateBearing(prev, [lng, lat]); - } - - return { - lng, - lat, - timestamp, - yaw: parseFloat(yaw.toFixed(2)), - alt: index * 2 // 示例高度值 - }; - }); - - // 闭环处理(首尾坐标相同时) - // if (calculateYaw && points.length > 1) { - // const first = points[0]; - // const last = points[points.length - 1]; - // if (first.lng === last.lng && first.lat === last.lat) { - // last.yaw = calculateBearing(points[points.length - 2], first); - // } - // } - - return { id, points }; - } - - // 航向角计算函数(单位:度) - export function calculateBearing(prev, current) { - // console.log(prev, current); - const [lng1, lat1] = prev; - const [lng2, lat2] = current; - - const dLon = (lng2 - lng1) * Math.PI / 180; - const y = Math.sin(dLon) * Math.cos(lat2 * Math.PI / 180); - const x = Math.cos(lat1 * Math.PI / 180) * Math.sin(lat2 * Math.PI / 180) - - Math.sin(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.cos(dLon); - - let angle = Math.atan2(y, x); - return ((angle * 180 / Math.PI) + 360) % 360; // 转换为0-360度 - } diff --git a/src/pages/home/index.vue b/src/pages/home/index.vue index 9a3e712..a41f0da 100644 --- a/src/pages/home/index.vue +++ b/src/pages/home/index.vue @@ -4,13 +4,17 @@ import TabBar from '../../components/TabBar.vue'; // import { useTaskStore } from "../../stores"; // import { storeToRefs } from "pinia"; - import { reactive } from "vue"; + import { reactive, ref, onMounted, onUnmounted } from "vue"; import { RectRight } from '@nutui/icons-vue-taro' import list from '../../assets/list.png'; import flower from '../../assets/flower.png'; + import {useAuthStore} from "../../stores"; + import {storeToRefs} from "pinia"; Taro.hideHomeButton(); + const { isStudent } = storeToRefs(useAuthStore()); + // const { getTaskList } = useTaskStore(); // const { taskList } = storeToRefs(useTaskStore()); @@ -44,8 +48,8 @@ Taro.navigateTo({ url: '/pages/returnTrip/index', }) - } - + } + function onNavToEvaluation() { Taro.navigateTo({ url: '/pages/evaluation/index', @@ -67,6 +71,13 @@ state.type = type; state.show = true; } + + onMounted(() => { + + }); + + onUnmounted(() => { + });