Commit 3a4a0449 by 吴春元

高德地图接入,接口调试

parent 568600c8
...@@ -11,6 +11,7 @@ declare module 'vue' { ...@@ -11,6 +11,7 @@ declare module 'vue' {
AsyncMap3D: typeof import('./src/components/ThreeMap/AsyncMap3D.vue')['default'] AsyncMap3D: typeof import('./src/components/ThreeMap/AsyncMap3D.vue')['default']
ContainerWrap: typeof import('./src/components/ContainerWrap/index.vue')['default'] ContainerWrap: typeof import('./src/components/ContainerWrap/index.vue')['default']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElCard: typeof import('element-plus/es')['ElCard']
ElCascader: typeof import('element-plus/es')['ElCascader'] ElCascader: typeof import('element-plus/es')['ElCascader']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCol: typeof import('element-plus/es')['ElCol'] ElCol: typeof import('element-plus/es')['ElCol']
...@@ -21,6 +22,7 @@ declare module 'vue' { ...@@ -21,6 +22,7 @@ declare module 'vue' {
ElIcon: typeof import('element-plus/es')['ElIcon'] ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage'] ElImage: typeof import('element-plus/es')['ElImage']
ElInput: typeof import('element-plus/es')['ElInput'] ElInput: typeof import('element-plus/es')['ElInput']
ElLink: typeof import('element-plus/es')['ElLink']
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton'] ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup'] ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
......
...@@ -24,23 +24,11 @@ ...@@ -24,23 +24,11 @@
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/hk/index.css"> <link rel="stylesheet" type="text/css" href="/videoPlayer/common/hk/index.css">
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/dh/index.css"> <link rel="stylesheet" type="text/css" href="/videoPlayer/common/dh/index.css">
<link rel="stylesheet" type="text/css" href="/videoPlayer/common/css/videoPlayer.css"> <link rel="stylesheet" type="text/css" href="/videoPlayer/common/css/videoPlayer.css">
<!-- <script src="https://cdn.jsdelivr.net/particles.js/2.0.0/particles.min.js"></script> -->
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/particlesjs/2.2.2/particles.min.js"></script> -->
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
<script type="text/javascript"
src="https://api.map.baidu.com/api?v=1.0&&type=webgl&ak=i8RgXE4a6vzGgbFs5s4ynlyUh6YnUQIB">
</script>
<script type="text/javascript"
src="https://webapi.amap.com/maps?v=2.0&key=fee919a8e608c39d1d528ec662a2ca17&plugin=AMap.DistrictSearch"></script>
<script src="https://a.amap.com/jsapi_demos/static/demo-center/js/demoutils.js"></script>
<!-- <link rel="stylesheet" href="https://a.amap.com/jsapi_demos/static/demo-center/css/demo-center.css" /> -->
</body> </body>
</html> </html>
\ No newline at end of file
../sass/sass.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules/sass/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules/sass/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../sass/sass.js" "$@"
else
exec node "$basedir/../sass/sass.js" "$@"
fi
../typescript/bin/tsc
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
else
exec node "$basedir/../typescript/bin/tsc" "$@"
fi
../typescript/bin/tsserver
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules/typescript/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
else
exec node "$basedir/../typescript/bin/tsserver" "$@"
fi
../vite/bin/vite.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules/vite/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vite@7.1.5_@types+node@24.3.1_jiti@2.5.1_lightningcss@1.30.1_sass@1.92.1/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
else
exec node "$basedir/../vite/bin/vite.js" "$@"
fi
../vue-tsc/bin/vue-tsc.js
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -z "$NODE_PATH" ]; then
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules"
else
export NODE_PATH="/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/bin/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules/vue-tsc/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/vue-tsc@3.0.6_typescript@5.8.3/node_modules:/Library/web/git/iot-web/node_modules/.pnpm/node_modules:$NODE_PATH"
fi
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../vue-tsc/bin/vue-tsc.js" "$@"
else
exec node "$basedir/../vue-tsc/bin/vue-tsc.js" "$@"
fi
...@@ -185,100 +185,6 @@ hoistedDependencies: ...@@ -185,100 +185,6 @@ hoistedDependencies:
'@tailwindcss/oxide-win32-x64-msvc': private '@tailwindcss/oxide-win32-x64-msvc': private
'@tailwindcss/oxide@4.1.13': '@tailwindcss/oxide@4.1.13':
'@tailwindcss/oxide': private '@tailwindcss/oxide': private
'@tsparticles/basic@3.9.1':
'@tsparticles/basic': private
'@tsparticles/engine@3.9.1':
'@tsparticles/engine': private
'@tsparticles/interaction-external-attract@3.9.1':
'@tsparticles/interaction-external-attract': private
'@tsparticles/interaction-external-bounce@3.9.1':
'@tsparticles/interaction-external-bounce': private
'@tsparticles/interaction-external-bubble@3.9.1':
'@tsparticles/interaction-external-bubble': private
'@tsparticles/interaction-external-connect@3.9.1':
'@tsparticles/interaction-external-connect': private
'@tsparticles/interaction-external-grab@3.9.1':
'@tsparticles/interaction-external-grab': private
'@tsparticles/interaction-external-pause@3.9.1':
'@tsparticles/interaction-external-pause': private
'@tsparticles/interaction-external-push@3.9.1':
'@tsparticles/interaction-external-push': private
'@tsparticles/interaction-external-remove@3.9.1':
'@tsparticles/interaction-external-remove': private
'@tsparticles/interaction-external-repulse@3.9.1':
'@tsparticles/interaction-external-repulse': private
'@tsparticles/interaction-external-slow@3.9.1':
'@tsparticles/interaction-external-slow': private
'@tsparticles/interaction-external-trail@3.9.1':
'@tsparticles/interaction-external-trail': private
'@tsparticles/interaction-particles-attract@3.9.1':
'@tsparticles/interaction-particles-attract': private
'@tsparticles/interaction-particles-collisions@3.9.1':
'@tsparticles/interaction-particles-collisions': private
'@tsparticles/interaction-particles-links@3.9.1':
'@tsparticles/interaction-particles-links': private
'@tsparticles/move-base@3.9.1':
'@tsparticles/move-base': private
'@tsparticles/move-parallax@3.9.1':
'@tsparticles/move-parallax': private
'@tsparticles/plugin-absorbers@3.9.1':
'@tsparticles/plugin-absorbers': private
'@tsparticles/plugin-easing-quad@3.9.1':
'@tsparticles/plugin-easing-quad': private
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
'@tsparticles/plugin-emitters-shape-circle': private
'@tsparticles/plugin-emitters-shape-square@3.9.1':
'@tsparticles/plugin-emitters-shape-square': private
'@tsparticles/plugin-emitters@3.9.1':
'@tsparticles/plugin-emitters': private
'@tsparticles/plugin-hex-color@3.9.1':
'@tsparticles/plugin-hex-color': private
'@tsparticles/plugin-hsl-color@3.9.1':
'@tsparticles/plugin-hsl-color': private
'@tsparticles/plugin-rgb-color@3.9.1':
'@tsparticles/plugin-rgb-color': private
'@tsparticles/shape-circle@3.9.1':
'@tsparticles/shape-circle': private
'@tsparticles/shape-emoji@3.9.1':
'@tsparticles/shape-emoji': private
'@tsparticles/shape-image@3.9.1':
'@tsparticles/shape-image': private
'@tsparticles/shape-line@3.9.1':
'@tsparticles/shape-line': private
'@tsparticles/shape-polygon@3.9.1':
'@tsparticles/shape-polygon': private
'@tsparticles/shape-square@3.9.1':
'@tsparticles/shape-square': private
'@tsparticles/shape-star@3.9.1':
'@tsparticles/shape-star': private
'@tsparticles/shape-text@3.9.1':
'@tsparticles/shape-text': private
'@tsparticles/slim@3.9.1':
'@tsparticles/slim': private
'@tsparticles/updater-color@3.9.1':
'@tsparticles/updater-color': private
'@tsparticles/updater-destroy@3.9.1':
'@tsparticles/updater-destroy': private
'@tsparticles/updater-life@3.9.1':
'@tsparticles/updater-life': private
'@tsparticles/updater-opacity@3.9.1':
'@tsparticles/updater-opacity': private
'@tsparticles/updater-out-modes@3.9.1':
'@tsparticles/updater-out-modes': private
'@tsparticles/updater-roll@3.9.1':
'@tsparticles/updater-roll': private
'@tsparticles/updater-rotate@3.9.1':
'@tsparticles/updater-rotate': private
'@tsparticles/updater-size@3.9.1':
'@tsparticles/updater-size': private
'@tsparticles/updater-stroke-color@3.9.1':
'@tsparticles/updater-stroke-color': private
'@tsparticles/updater-tilt@3.9.1':
'@tsparticles/updater-tilt': private
'@tsparticles/updater-twinkle@3.9.1':
'@tsparticles/updater-twinkle': private
'@tsparticles/updater-wobble@3.9.1':
'@tsparticles/updater-wobble': private
'@types/estree@1.0.8': '@types/estree@1.0.8':
'@types/estree': private '@types/estree': private
'@types/lodash-es@4.17.12': '@types/lodash-es@4.17.12':
...@@ -617,8 +523,6 @@ hoistedDependencies: ...@@ -617,8 +523,6 @@ hoistedDependencies:
to-regex-range: private to-regex-range: private
tslib@2.3.0: tslib@2.3.0:
tslib: private tslib: private
tsparticles-engine@2.12.0:
tsparticles-engine: private
ufo@1.6.1: ufo@1.6.1:
ufo: private ufo: private
undici-types@7.10.0: undici-types@7.10.0:
......
...@@ -47,9 +47,6 @@ importers: ...@@ -47,9 +47,6 @@ importers:
nprogress: nprogress:
specifier: ^0.2.0 specifier: ^0.2.0
version: 0.2.0 version: 0.2.0
particles.vue3:
specifier: ^2.12.0
version: 2.12.0(typescript@5.8.3)
pinia: pinia:
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3)) version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3))
...@@ -62,9 +59,6 @@ importers: ...@@ -62,9 +59,6 @@ importers:
three: three:
specifier: ^0.181.2 specifier: ^0.181.2
version: 0.181.2 version: 0.181.2
tsparticles:
specifier: ^3.9.1
version: 3.9.1
vue: vue:
specifier: ^3.5.18 specifier: ^3.5.18
version: 3.5.21(typescript@5.8.3) version: 3.5.21(typescript@5.8.3)
...@@ -216,147 +210,6 @@ packages: ...@@ -216,147 +210,6 @@ packages:
'@tailwindcss/postcss@4.1.13': '@tailwindcss/postcss@4.1.13':
resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==}
'@tsparticles/basic@3.9.1':
resolution: {integrity: sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==}
'@tsparticles/engine@3.9.1':
resolution: {integrity: sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==}
'@tsparticles/interaction-external-attract@3.9.1':
resolution: {integrity: sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==}
'@tsparticles/interaction-external-bounce@3.9.1':
resolution: {integrity: sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==}
'@tsparticles/interaction-external-bubble@3.9.1':
resolution: {integrity: sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==}
'@tsparticles/interaction-external-connect@3.9.1':
resolution: {integrity: sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==}
'@tsparticles/interaction-external-grab@3.9.1':
resolution: {integrity: sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==}
'@tsparticles/interaction-external-pause@3.9.1':
resolution: {integrity: sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==}
'@tsparticles/interaction-external-push@3.9.1':
resolution: {integrity: sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==}
'@tsparticles/interaction-external-remove@3.9.1':
resolution: {integrity: sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==}
'@tsparticles/interaction-external-repulse@3.9.1':
resolution: {integrity: sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==}
'@tsparticles/interaction-external-slow@3.9.1':
resolution: {integrity: sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==}
'@tsparticles/interaction-external-trail@3.9.1':
resolution: {integrity: sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==}
'@tsparticles/interaction-particles-attract@3.9.1':
resolution: {integrity: sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==}
'@tsparticles/interaction-particles-collisions@3.9.1':
resolution: {integrity: sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==}
'@tsparticles/interaction-particles-links@3.9.1':
resolution: {integrity: sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==}
'@tsparticles/move-base@3.9.1':
resolution: {integrity: sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==}
'@tsparticles/move-parallax@3.9.1':
resolution: {integrity: sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==}
'@tsparticles/plugin-absorbers@3.9.1':
resolution: {integrity: sha512-q9SQllpbPPgw1+euxHPYCFawOVUazQkkwnleiIgpYSiimlCyjIdwGnFPSNe1Sypzqmr2h6oOyX2vkK5ZVNEu8A==}
'@tsparticles/plugin-easing-quad@3.9.1':
resolution: {integrity: sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==}
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
resolution: {integrity: sha512-z+9MsAPWr++sNz6N6303rRDjusW0BIPhHY51E5eXGDcRdOqrESDs6y99AJ/6Kdb/PpibCIYjFY9jVi2JJADPRA==}
'@tsparticles/plugin-emitters-shape-square@3.9.1':
resolution: {integrity: sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==}
'@tsparticles/plugin-emitters@3.9.1':
resolution: {integrity: sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==}
'@tsparticles/plugin-hex-color@3.9.1':
resolution: {integrity: sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==}
'@tsparticles/plugin-hsl-color@3.9.1':
resolution: {integrity: sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==}
'@tsparticles/plugin-rgb-color@3.9.1':
resolution: {integrity: sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==}
'@tsparticles/shape-circle@3.9.1':
resolution: {integrity: sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==}
'@tsparticles/shape-emoji@3.9.1':
resolution: {integrity: sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==}
'@tsparticles/shape-image@3.9.1':
resolution: {integrity: sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==}
'@tsparticles/shape-line@3.9.1':
resolution: {integrity: sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==}
'@tsparticles/shape-polygon@3.9.1':
resolution: {integrity: sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==}
'@tsparticles/shape-square@3.9.1':
resolution: {integrity: sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==}
'@tsparticles/shape-star@3.9.1':
resolution: {integrity: sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==}
'@tsparticles/shape-text@3.9.1':
resolution: {integrity: sha512-oNsLHI0lGkIXoUw3W598iwd7dtoHCDrwpwJRGnQzgfk6T5a9dCpSD5vDeQN89lr3BUbVui4lhxq+/TyC64oAqA==}
'@tsparticles/slim@3.9.1':
resolution: {integrity: sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==}
'@tsparticles/updater-color@3.9.1':
resolution: {integrity: sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==}
'@tsparticles/updater-destroy@3.9.1':
resolution: {integrity: sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==}
'@tsparticles/updater-life@3.9.1':
resolution: {integrity: sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==}
'@tsparticles/updater-opacity@3.9.1':
resolution: {integrity: sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==}
'@tsparticles/updater-out-modes@3.9.1':
resolution: {integrity: sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==}
'@tsparticles/updater-roll@3.9.1':
resolution: {integrity: sha512-zl4JeM3gUBJ0uttmIsond3lrZ3f3AkItFeS0Lhj/7jiCKfUoRyyOMrcBk8R1AhW7lI+7ko1iBs3jhO0jnxz9vg==}
'@tsparticles/updater-rotate@3.9.1':
resolution: {integrity: sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==}
'@tsparticles/updater-size@3.9.1':
resolution: {integrity: sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==}
'@tsparticles/updater-stroke-color@3.9.1':
resolution: {integrity: sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==}
'@tsparticles/updater-tilt@3.9.1':
resolution: {integrity: sha512-PB2yaoyXRmSk4iIVgjtRrzOxXMK9mjeAQHIJGtT4faq46Z8cbIIEFgjTwqrUV8qOrNg/h4sm5NE/s0qsTYjp1Q==}
'@tsparticles/updater-twinkle@3.9.1':
resolution: {integrity: sha512-xgTcYr6LmP44IPIBeQmEExN2Y5Nfl3ikmC08eOh5nZy/ta6ORP+JTsprrnfuv/O2DwTyoqFLkZ16hZfkdc1yOQ==}
'@tsparticles/updater-wobble@3.9.1':
resolution: {integrity: sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==}
'@types/estree@1.0.8': '@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
...@@ -962,10 +815,6 @@ packages: ...@@ -962,10 +815,6 @@ packages:
nprogress@0.2.0: nprogress@0.2.0:
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
particles.vue3@2.12.0:
resolution: {integrity: sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==}
deprecated: '@tsparticles/vue3 is the new package for v3, please use that'
path-browserify@1.0.1: path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
...@@ -1084,13 +933,6 @@ packages: ...@@ -1084,13 +933,6 @@ packages:
tslib@2.3.0: tslib@2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
tsparticles-engine@2.12.0:
resolution: {integrity: sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==}
deprecated: starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name
tsparticles@3.9.1:
resolution: {integrity: sha512-Y780IGSL4qjkZj7+fI92PV/cziHqLR/s6nnYri4K6vH3NQRmDK5D6pfskDO8T4Y96ChCWHY3uxPtOb/hKQ83Qg==}
typescript@5.8.3: typescript@5.8.3:
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
...@@ -1361,228 +1203,6 @@ snapshots: ...@@ -1361,228 +1203,6 @@ snapshots:
postcss: 8.5.6 postcss: 8.5.6
tailwindcss: 4.1.13 tailwindcss: 4.1.13
'@tsparticles/basic@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base': 3.9.1
'@tsparticles/plugin-hex-color': 3.9.1
'@tsparticles/plugin-hsl-color': 3.9.1
'@tsparticles/plugin-rgb-color': 3.9.1
'@tsparticles/shape-circle': 3.9.1
'@tsparticles/updater-color': 3.9.1
'@tsparticles/updater-opacity': 3.9.1
'@tsparticles/updater-out-modes': 3.9.1
'@tsparticles/updater-size': 3.9.1
'@tsparticles/engine@3.9.1': {}
'@tsparticles/interaction-external-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bounce@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bubble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-connect@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-grab@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-pause@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-push@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-remove@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-repulse@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-slow@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-collisions@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-links@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-parallax@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-absorbers@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-easing-quad@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hex-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hsl-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-rgb-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-emoji@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-image@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-line@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-polygon@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-star@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-text@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/slim@3.9.1':
dependencies:
'@tsparticles/basic': 3.9.1
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-attract': 3.9.1
'@tsparticles/interaction-external-bounce': 3.9.1
'@tsparticles/interaction-external-bubble': 3.9.1
'@tsparticles/interaction-external-connect': 3.9.1
'@tsparticles/interaction-external-grab': 3.9.1
'@tsparticles/interaction-external-pause': 3.9.1
'@tsparticles/interaction-external-push': 3.9.1
'@tsparticles/interaction-external-remove': 3.9.1
'@tsparticles/interaction-external-repulse': 3.9.1
'@tsparticles/interaction-external-slow': 3.9.1
'@tsparticles/interaction-particles-attract': 3.9.1
'@tsparticles/interaction-particles-collisions': 3.9.1
'@tsparticles/interaction-particles-links': 3.9.1
'@tsparticles/move-parallax': 3.9.1
'@tsparticles/plugin-easing-quad': 3.9.1
'@tsparticles/shape-emoji': 3.9.1
'@tsparticles/shape-image': 3.9.1
'@tsparticles/shape-line': 3.9.1
'@tsparticles/shape-polygon': 3.9.1
'@tsparticles/shape-square': 3.9.1
'@tsparticles/shape-star': 3.9.1
'@tsparticles/updater-life': 3.9.1
'@tsparticles/updater-rotate': 3.9.1
'@tsparticles/updater-stroke-color': 3.9.1
'@tsparticles/updater-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-destroy@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-life@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-opacity@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-out-modes@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-roll@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-rotate@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-size@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-stroke-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-tilt@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-twinkle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-wobble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@types/estree@1.0.8': {} '@types/estree@1.0.8': {}
'@types/js-cookie@3.0.6': {} '@types/js-cookie@3.0.6': {}
...@@ -2250,13 +1870,6 @@ snapshots: ...@@ -2250,13 +1870,6 @@ snapshots:
nprogress@0.2.0: {} nprogress@0.2.0: {}
particles.vue3@2.12.0(typescript@5.8.3):
dependencies:
tsparticles-engine: 2.12.0
vue: 3.5.21(typescript@5.8.3)
transitivePeerDependencies:
- typescript
path-browserify@1.0.1: {} path-browserify@1.0.1: {}
pathe@2.0.3: {} pathe@2.0.3: {}
...@@ -2387,24 +2000,6 @@ snapshots: ...@@ -2387,24 +2000,6 @@ snapshots:
tslib@2.3.0: {} tslib@2.3.0: {}
tsparticles-engine@2.12.0: {}
tsparticles@3.9.1:
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail': 3.9.1
'@tsparticles/plugin-absorbers': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-circle': 3.9.1
'@tsparticles/plugin-emitters-shape-square': 3.9.1
'@tsparticles/shape-text': 3.9.1
'@tsparticles/slim': 3.9.1
'@tsparticles/updater-destroy': 3.9.1
'@tsparticles/updater-roll': 3.9.1
'@tsparticles/updater-tilt': 3.9.1
'@tsparticles/updater-twinkle': 3.9.1
'@tsparticles/updater-wobble': 3.9.1
typescript@5.8.3: {} typescript@5.8.3: {}
ufo@1.6.1: {} ufo@1.6.1: {}
......
import {
__commonJS
} from "./chunk-G3PMV62Z.js";
// node_modules/@bmapgl-plugin/cluster/index.js
var require_cluster = __commonJS({
"node_modules/@bmapgl-plugin/cluster/index.js"(exports, module) {
!(function(t, i) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = i() : "function" == typeof define && define.amd ? define(i) : (t = "undefined" != typeof globalThis ? globalThis : t || self).Cluster = i();
})(exports, (function() {
"use strict";
class t {
constructor(i2) {
this.t = null != i2 ? i2 : t.guid();
}
getHandlers(t2) {
let i2 = this.i || (this.i = /* @__PURE__ */ new Map());
return i2.has(t2) || i2.set(t2, /* @__PURE__ */ new Map()), i2.get(t2);
}
on(i2, e2) {
"function" == typeof e2 && this.getHandlers(i2).set(e2, t.guid());
}
addEventListener(t2, i2) {
this.on(t2, i2);
}
off(t2, i2) {
var e2;
let s2 = this.getHandlers(t2);
i2 ? s2.has(i2) && s2.delete(i2) : null === (e2 = this.i) || void 0 === e2 || e2.clear();
}
removeEventListener(t2, i2) {
this.off(t2, i2);
}
fire(t2, i2) {
let e2 = Array.from(this.getHandlers(t2).entries());
for (const [t3] of e2) t3.call(this, i2);
}
dispatchEvent(t2, i2) {
this.fire(t2, i2);
}
destroy() {
var t2;
null === (t2 = this.i) || void 0 === t2 || t2.clear(), this.i = null;
}
get hashCode() {
return this.t;
}
static guid() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (function(t2) {
let i2 = 16 * Math.random() | 0;
return ("x" == t2 ? i2 : 3 & i2 | 8).toString(16);
}));
}
}
var i, e, s, r, n, h;
!(function(t2) {
t2.CLICK = "click", t2.MOUSE_OVER = "mouseover", t2.MOUSE_OUT = "mouseout", t2.CHANGE = "change", t2.DESTROY = "destroy";
})(i || (i = {})), (function(t2) {
t2.DIS_PIXEL = "dis-pixel", t2.ATTR_REF = "attribute", t2.GEO_FENCE = "geo-fence";
})(e || (e = {})), (function(t2) {
t2[t2.SUM = 1] = "SUM", t2[t2.AVERAGE = 2] = "AVERAGE", t2[t2.MAX = 4] = "MAX";
})(s || (s = {})), (function(t2) {
t2[t2.AVERAGE = 1] = "AVERAGE", t2[t2.COUNT_AVERAGE = 3] = "COUNT_AVERAGE", t2[t2.WEIGHT_AVERAGE = 5] = "WEIGHT_AVERAGE", t2[t2.WEIGHT_MAX = 4] = "WEIGHT_MAX";
})(r || (r = {})), (function(t2) {
t2.DOM = "dom", t2.WEBGL = "webgl";
})(n || (n = {})), (function(t2) {
t2.MULTI = "multi", t2.SINGLE = "single";
})(h || (h = {}));
const o = [Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array];
class l {
/**
* Creates an index from raw `ArrayBuffer` data.
* @param {ArrayBuffer} data
*/
static from(t2) {
if (!(t2 instanceof ArrayBuffer)) throw new Error("Data must be an instance of ArrayBuffer.");
const [i2, e2] = new Uint8Array(t2, 0, 2);
if (219 !== i2) throw new Error("Data does not appear to be in a KDBush format.");
const s2 = e2 >> 4;
if (1 !== s2) throw new Error(`Got v${s2} data when expected v1.`);
const r2 = o[15 & e2];
if (!r2) throw new Error("Unrecognized array type.");
const [n2] = new Uint16Array(t2, 2, 1), [h2] = new Uint32Array(t2, 4, 1);
return new l(h2, n2, r2, t2);
}
/**
* Creates an index that will hold a given number of items.
* @param {number} numItems
* @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).
* @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).
* @param {ArrayBuffer} [data] (For internal use only)
*/
constructor(t2, i2 = 64, e2 = Float64Array, s2) {
if (isNaN(t2) || t2 < 0) throw new Error(`Unpexpected numItems value: ${t2}.`);
this.numItems = +t2, this.nodeSize = Math.min(Math.max(+i2, 2), 65535), this.ArrayType = e2, this.IndexArrayType = t2 < 65536 ? Uint16Array : Uint32Array;
const r2 = o.indexOf(this.ArrayType), n2 = 2 * t2 * this.ArrayType.BYTES_PER_ELEMENT, h2 = t2 * this.IndexArrayType.BYTES_PER_ELEMENT, l2 = (8 - h2 % 8) % 8;
if (r2 < 0) throw new Error(`Unexpected typed array class: ${e2}.`);
s2 && s2 instanceof ArrayBuffer ? (
// reconstruct an index from a buffer
(this.data = s2, this.ids = new this.IndexArrayType(this.data, 8, t2), this.coords = new this.ArrayType(this.data, 8 + h2 + l2, 2 * t2), this.h = 2 * t2, this.o = true)
) : (
// initialize a new index
(this.data = new ArrayBuffer(8 + n2 + h2 + l2), this.ids = new this.IndexArrayType(this.data, 8, t2), this.coords = new this.ArrayType(this.data, 8 + h2 + l2, 2 * t2), this.h = 0, this.o = false, // set header
new Uint8Array(this.data, 0, 2).set([219, 16 + r2]), new Uint16Array(this.data, 2, 1)[0] = i2, new Uint32Array(this.data, 4, 1)[0] = t2)
);
}
/**
* Add a point to the index.
* @param {number} x
* @param {number} y
* @returns {number} An incremental index associated with the added item (starting from `0`).
*/
add(t2, i2) {
const e2 = this.h >> 1;
return this.ids[e2] = e2, this.coords[this.h++] = t2, this.coords[this.h++] = i2, e2;
}
/**
* Perform indexing of the added points.
*/
finish() {
const t2 = this.h >> 1;
if (t2 !== this.numItems) throw new Error(`Added ${t2} items when expected ${this.numItems}.`);
return a(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0), this.o = true, this;
}
/**
* Search the index for items within a given bounding box.
* @param {number} minX
* @param {number} minY
* @param {number} maxX
* @param {number} maxY
* @returns {number[]} An array of indices correponding to the found items.
*/
range(t2, i2, e2, s2) {
if (!this.o) throw new Error("Data not yet indexed - call index.finish().");
const { ids: r2, coords: n2, nodeSize: h2 } = this, o2 = [0, r2.length - 1, 0], l2 = [];
for (; o2.length; ) {
const a2 = o2.pop() || 0, u2 = o2.pop() || 0, c2 = o2.pop() || 0;
if (u2 - c2 <= h2) {
for (let h3 = c2; h3 <= u2; h3++) {
const o3 = n2[2 * h3], a3 = n2[2 * h3 + 1];
o3 >= t2 && o3 <= e2 && a3 >= i2 && a3 <= s2 && l2.push(r2[h3]);
}
continue;
}
const f2 = c2 + u2 >> 1, d2 = n2[2 * f2], p2 = n2[2 * f2 + 1];
d2 >= t2 && d2 <= e2 && p2 >= i2 && p2 <= s2 && l2.push(r2[f2]), // queue search in halves that intersect the query
(0 === a2 ? t2 <= d2 : i2 <= p2) && (o2.push(c2), o2.push(f2 - 1), o2.push(1 - a2)), (0 === a2 ? e2 >= d2 : s2 >= p2) && (o2.push(f2 + 1), o2.push(u2), o2.push(1 - a2));
}
return l2;
}
/**
* Search the index for items within a given radius.
* @param {number} qx
* @param {number} qy
* @param {number} r Query radius.
* @returns {number[]} An array of indices correponding to the found items.
*/
within(t2, i2, e2) {
if (!this.o) throw new Error("Data not yet indexed - call index.finish().");
const { ids: s2, coords: r2, nodeSize: n2 } = this, h2 = [0, s2.length - 1, 0], o2 = [], l2 = e2 * e2;
for (; h2.length; ) {
const a2 = h2.pop() || 0, u2 = h2.pop() || 0, c2 = h2.pop() || 0;
if (u2 - c2 <= n2) {
for (let e3 = c2; e3 <= u2; e3++) d(r2[2 * e3], r2[2 * e3 + 1], t2, i2) <= l2 && o2.push(s2[e3]);
continue;
}
const f2 = c2 + u2 >> 1, p2 = r2[2 * f2], y2 = r2[2 * f2 + 1];
d(p2, y2, t2, i2) <= l2 && o2.push(s2[f2]), // queue search in halves that intersect the query
(0 === a2 ? t2 - e2 <= p2 : i2 - e2 <= y2) && (h2.push(c2), h2.push(f2 - 1), h2.push(1 - a2)), (0 === a2 ? t2 + e2 >= p2 : i2 + e2 >= y2) && (h2.push(f2 + 1), h2.push(u2), h2.push(1 - a2));
}
return o2;
}
}
function a(t2, i2, e2, s2, r2, n2) {
if (r2 - s2 <= e2) return;
const h2 = s2 + r2 >> 1;
u(t2, i2, h2, s2, r2, n2), // recursively kd-sort first half and second half on the opposite axis
a(t2, i2, e2, s2, h2 - 1, 1 - n2), a(t2, i2, e2, h2 + 1, r2, 1 - n2);
}
function u(t2, i2, e2, s2, r2, n2) {
for (; r2 > s2; ) {
if (r2 - s2 > 600) {
const h3 = r2 - s2 + 1, o3 = e2 - s2 + 1, l3 = Math.log(h3), a2 = 0.5 * Math.exp(2 * l3 / 3), c2 = 0.5 * Math.sqrt(l3 * a2 * (h3 - a2) / h3) * (o3 - h3 / 2 < 0 ? -1 : 1);
u(t2, i2, e2, Math.max(s2, Math.floor(e2 - o3 * a2 / h3 + c2)), Math.min(r2, Math.floor(e2 + (h3 - o3) * a2 / h3 + c2)), n2);
}
const h2 = i2[2 * e2 + n2];
let o2 = s2, l2 = r2;
for (c(t2, i2, s2, e2), i2[2 * r2 + n2] > h2 && c(t2, i2, s2, r2); o2 < l2; ) {
for (c(t2, i2, o2, l2), o2++, l2--; i2[2 * o2 + n2] < h2; ) o2++;
for (; i2[2 * l2 + n2] > h2; ) l2--;
}
i2[2 * s2 + n2] === h2 ? c(t2, i2, s2, l2) : (l2++, c(t2, i2, l2, r2)), l2 <= e2 && (s2 = l2 + 1), e2 <= l2 && (r2 = l2 - 1);
}
}
function c(t2, i2, e2, s2) {
f(t2, e2, s2), f(i2, 2 * e2, 2 * s2), f(i2, 2 * e2 + 1, 2 * s2 + 1);
}
function f(t2, i2, e2) {
const s2 = t2[i2];
t2[i2] = t2[e2], t2[e2] = s2;
}
function d(t2, i2, e2, s2) {
const r2 = t2 - e2, n2 = i2 - s2;
return r2 * r2 + n2 * n2;
}
function p(t2) {
return !isNaN(t2) && null !== t2 && !Array.isArray(t2);
}
function y(t2, i2, e2) {
if (null !== t2)
for (var s2, r2, n2, h2, o2, l2, a2, u2, c2 = 0, f2 = 0, d2 = t2.type, p2 = "FeatureCollection" === d2, m2 = "Feature" === d2, w2 = p2 ? t2.features.length : 1, v2 = 0; v2 < w2; v2++) {
o2 = (u2 = !!(a2 = p2 ? t2.features[v2].geometry : m2 ? t2.geometry : t2) && "GeometryCollection" === a2.type) ? a2.geometries.length : 1;
for (var g2 = 0; g2 < o2; g2++) {
var M2 = 0, b2 = 0;
if (null !== (h2 = u2 ? a2.geometries[g2] : a2)) {
l2 = h2.coordinates;
var x2 = h2.type;
switch (c2 = !e2 || "Polygon" !== x2 && "MultiPolygon" !== x2 ? 0 : 1, x2) {
case null:
break;
case "Point":
if (false === i2(l2, f2, v2, M2, b2)) return false;
f2++, M2++;
break;
case "LineString":
case "MultiPoint":
for (s2 = 0; s2 < l2.length; s2++) {
if (false === i2(l2[s2], f2, v2, M2, b2)) return false;
f2++, "MultiPoint" === x2 && M2++;
}
"LineString" === x2 && M2++;
break;
case "Polygon":
case "MultiLineString":
for (s2 = 0; s2 < l2.length; s2++) {
for (r2 = 0; r2 < l2[s2].length - c2; r2++) {
if (false === i2(l2[s2][r2], f2, v2, M2, b2)) return false;
f2++;
}
"MultiLineString" === x2 && M2++, "Polygon" === x2 && b2++;
}
"Polygon" === x2 && M2++;
break;
case "MultiPolygon":
for (s2 = 0; s2 < l2.length; s2++) {
for (b2 = 0, r2 = 0; r2 < l2[s2].length; r2++) {
for (n2 = 0; n2 < l2[s2][r2].length - c2; n2++) {
if (false === i2(l2[s2][r2][n2], f2, v2, M2, b2)) return false;
f2++;
}
b2++;
}
M2++;
}
break;
case "GeometryCollection":
for (s2 = 0; s2 < h2.geometries.length; s2++) if (false === y(h2.geometries[s2], i2, e2)) return false;
break;
default:
throw new Error("Unknown Geometry Type");
}
}
}
}
}
function m(t2) {
var i2 = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
return y(t2, (function(t3) {
i2[0] > t3[0] && (i2[0] = t3[0]), i2[1] > t3[1] && (i2[1] = t3[1]), i2[2] < t3[0] && (i2[2] = t3[0]), i2[3] < t3[1] && (i2[3] = t3[1]);
})), i2;
}
function w(t2, i2, e2) {
if (void 0 === e2 && (e2 = {}), !t2) throw new Error("point is required");
if (!i2) throw new Error("polygon is required");
var s2, r2 = (
/**
* Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.
*
* @name getCoord
* @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers
* @returns {Array<number>} coordinates
* @example
* var pt = turf.point([10, 10]);
*
* var coord = turf.getCoord(pt);
* //= [10, 10]
*/
(function(t3) {
if (!t3) throw new Error("coord is required");
if (!Array.isArray(t3)) {
if ("Feature" === t3.type && null !== t3.geometry && "Point" === t3.geometry.type) return t3.geometry.coordinates;
if ("Point" === t3.type) return t3.coordinates;
}
if (Array.isArray(t3) && t3.length >= 2 && !Array.isArray(t3[0]) && !Array.isArray(t3[1])) return t3;
throw new Error("coord must be GeoJSON Point or an Array of numbers");
})(t2)
), n2 = "Feature" === (s2 = i2).type ? s2.geometry : s2, h2 = n2.type, o2 = i2.bbox, l2 = n2.coordinates;
if (o2 && false === /**
* inBBox
*
* @private
* @param {Position} pt point [x,y]
* @param {BBox} bbox BBox [west, south, east, north]
* @returns {boolean} true/false if point is inside BBox
*/
(function(t3, i3) {
return i3[0] <= t3[0] && i3[1] <= t3[1] && i3[2] >= t3[0] && i3[3] >= t3[1];
})(r2, o2)) return false;
"Polygon" === h2 && (l2 = [l2]);
for (var a2 = false, u2 = 0; u2 < l2.length && !a2; u2++)
if (v(r2, l2[u2][0], e2.ignoreBoundary)) {
for (var c2 = false, f2 = 1; f2 < l2[u2].length && !c2; ) v(r2, l2[u2][f2], !e2.ignoreBoundary) && (c2 = true), f2++;
c2 || (a2 = true);
}
return a2;
}
function v(t2, i2, e2) {
var s2 = false;
i2[0][0] === i2[i2.length - 1][0] && i2[0][1] === i2[i2.length - 1][1] && (i2 = i2.slice(0, i2.length - 1));
for (var r2 = 0, n2 = i2.length - 1; r2 < i2.length; n2 = r2++) {
var h2 = i2[r2][0], o2 = i2[r2][1], l2 = i2[n2][0], a2 = i2[n2][1];
if (t2[1] * (h2 - l2) + o2 * (l2 - t2[0]) + a2 * (t2[0] - h2) == 0 && (h2 - t2[0]) * (l2 - t2[0]) <= 0 && (o2 - t2[1]) * (a2 - t2[1]) <= 0) return !e2;
o2 > t2[1] != a2 > t2[1] && t2[0] < (l2 - h2) * (t2[1] - o2) / (a2 - o2) + h2 && (s2 = !s2);
}
return s2;
}
m.default = m;
const g = (t2, i2, e2) => {
let s2, r2, n2, h2 = null, o2 = 0;
e2 || (e2 = {});
let l2 = function() {
o2 = false === e2.leading ? 0 : Date.now(), h2 = null, n2 = t2.apply(r2, s2), h2 || (r2 = s2 = null);
};
return function() {
let a2 = Date.now();
o2 || false !== e2.leading || (o2 = a2);
let u2 = i2 - (a2 - o2);
return r2 = this, s2 = arguments, u2 <= 0 || u2 > i2 ? (h2 && (clearTimeout(h2), h2 = null), o2 = a2, n2 = t2.apply(r2, s2), h2 || (r2 = s2 = null)) : h2 || false === e2.trailing || (h2 = setTimeout(l2, u2)), n2;
};
}, M = Math.fround || (b = new Float32Array(1), (t2) => (b[0] = +t2, b[0]));
var b;
const x = (t2, i2, e2) => t2.reduce(((t3, s2, r2) => {
let n2 = i2(s2);
return n2 = null == n2 || "" === n2 ? "undefined" : n2, t3[n2] || (t3[n2] = []), e2.type && e2.zoom && (s2["_inner_" + e2.type + "_" + e2.zoom] = n2), s2.id = r2, t3[n2].push(s2), t3;
}), {}), A = (t2) => ({ fence: true, bbox: m(t2), center: L(t2) }), E = (t2, i2) => m(i2 ? { type: "FeatureCollection", features: [{ type: "Feature", properties: {}, geometry: { type: "Polygon", coordinates: [t2] } }] } : { type: "FeatureCollection", features: t2 }), L = (t2) => (function(t3, i2) {
void 0 === i2 && (i2 = {});
var e2 = 0, s2 = 0, r2 = 0;
return y(t3, (function(t4) {
e2 += t4[0], s2 += t4[1], r2++;
}), true), /**
* Creates a {@link Point} {@link Feature} from a Position.
*
* @name point
* @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)
* @param {Object} [properties={}] an Object of key-value pairs to add as properties
* @param {Object} [options={}] Optional Parameters
* @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature
* @param {string|number} [options.id] Identifier associated with the Feature
* @returns {Feature<Point>} a Point feature
* @example
* var point = turf.point([-75.343, 39.984]);
*
* //=point
*/
(function(t4, i3, e3) {
if (void 0 === e3 && (e3 = {}), !t4) throw new Error("coordinates is required");
if (!Array.isArray(t4)) throw new Error("coordinates must be an Array");
if (t4.length < 2) throw new Error("coordinates must be at least 2 numbers long");
if (!p(t4[0]) || !p(t4[1])) throw new Error("coordinates must contain numbers");
return (function(t5, i4, e4) {
void 0 === e4 && (e4 = {});
var s3 = { type: "Feature" };
return (0 === e4.id || e4.id) && (s3.id = e4.id), e4.bbox && (s3.bbox = e4.bbox), s3.properties = i4 || {}, s3.geometry = t5, s3;
})({ type: "Point", coordinates: t4 }, i3, e3);
})([e2 / r2, s2 / r2], i2.properties);
})(t2).geometry.coordinates, C = (t2) => {
if (!t2 || !Array.isArray(t2) || t2.length < 2) return [];
let i2 = [t2[0], t2[1]];
for (let e2 = 2; e2 < t2.length - 1; e2 += 2) t2[e2] !== i2[e2 - 2] && t2[e2 + 1] !== i2[e2 - 1] && i2.push(t2[e2], t2[e2 + 1]);
return i2;
}, k = (t2) => t2 / 360 + 0.5, _ = (t2) => {
const i2 = Math.sin(t2 * Math.PI / 180), e2 = 0.5 - 0.25 * Math.log((1 + i2) / (1 - i2)) / Math.PI;
return e2 < 0 ? 0 : e2 > 1 ? 1 : e2;
};
class T {
constructor() {
}
}
var G;
!(function(t2) {
t2[t2.NONE = 0] = "NONE", t2[t2.INNER = 1] = "INNER", t2[t2.OUT = 2] = "OUT", t2[t2.ALL = 3] = "ALL";
})(G || (G = {}));
class B {
constructor(t2, e2 = false) {
this.trees = {}, this.nodeSize = 64, this.isSort = true, this.splitChar = "*.*", this.OFFSET_ZOOM = 2, this.OFFSET_ID = 3, this.OFFSET_PARENT = 4, this.OFFSET_NUM = 5, this.OFFSET_PROP = 6, this.ZOOM_BITS = 5, this.mapping = /* @__PURE__ */ new Map(), this.geo_refs = /* @__PURE__ */ new Map(), this.key_refs = /* @__PURE__ */ new Map(), this.cluster_geo_refs = /* @__PURE__ */ new Map(), this.own = t2, this.showLog = e2, this.reduceType = this.isClusterReduce(), this.stride = this.reduceType !== G.NONE ? 7 : 6, this.reduceType & G.INNER && (this.innerReduce = (t3, i2) => {
var e3, s2, r2;
this.weightKey && (t3.weight_list || (t3.weight_list = [null !== (e3 = t3.weight) && void 0 !== e3 ? e3 : 1]), t3.weight_list.push(null !== (s2 = null == i2 ? void 0 : i2.weight) && void 0 !== s2 ? s2 : 1)), this.typeKey && (t3.divide_type = null !== (r2 = null == i2 ? void 0 : i2.divide_type) && void 0 !== r2 ? r2 : "unknown");
}, this.innerMap = (t3) => {
var i2, e3, s2, r2;
let n2 = {};
return this.weightKey && ("function" == typeof this.weightKey ? n2.weight = null !== (i2 = this.weightKey(t3)) && void 0 !== i2 ? i2 : 1 : n2.weight = t3 ? null !== (e3 = t3[this.weightKey]) && void 0 !== e3 ? e3 : 1 : null), this.typeKey && ("function" == typeof this.typeKey ? n2.divide_type = null !== (s2 = this.typeKey(t3)) && void 0 !== s2 ? s2 : "unknown" : n2.divide_type = t3 ? null !== (r2 = t3[this.typeKey]) && void 0 !== r2 ? r2 : "unknown" : null), n2;
}), this.createZoomMapping(), this.own.on(i.DESTROY, (() => {
this.reset(), this.mapping.clear();
}));
}
isClusterReduce() {
let t2 = this.own.getOptions().clusterPointWeight, i2 = this.own.getOptions().clusterPointType;
return t2 || i2 ? (t2 && (this.weightKey = t2), i2 && (this.typeKey = i2), this.own.getOptions().clusterReduce ? G.ALL : G.INNER) : this.own.getOptions().clusterReduce ? G.OUT : G.NONE;
}
createZoomMapping() {
let t2 = this.own.getOptions().clusterType;
t2 && 0 !== t2.length && (t2.forEach(((t3) => {
let [i2, s2, r2, n2, h2] = t3;
if (s2 = null != s2 ? s2 : this.own.getOptions().clusterMaxZoom, r2 === e.GEO_FENCE || r2 === e.ATTR_REF) this.mapping.set(i2, [null != h2 ? h2 : s2, r2, n2]);
else if (h2) this.mapping.set(i2, [h2, e.DIS_PIXEL, n2]);
else for (var o2 = i2; o2 <= s2; o2++) this.mapping.set(o2, [o2, e.DIS_PIXEL, n2]);
})), this.showLog);
}
getClusterType(t2) {
let i2, s2 = e.DIS_PIXEL;
for (let [r2, n2] of [...this.mapping.entries()].reverse()) if (r2 <= t2) {
s2 = n2[1], i2 = s2 === e.ATTR_REF && n2[2] instanceof Array ? n2[2][n2[2].length - 1] : n2[2];
break;
}
return { type: s2, name: i2 };
}
getClusterZoom(t2) {
let i2 = this.l(t2);
for (let [e2] of [...this.mapping.entries()].reverse()) if (e2 <= t2) {
i2 = e2;
break;
}
return i2;
}
getClusterTree(t2) {
let i2 = this.getClusterZoom(t2);
const { clusterMaxZoom: e2 = 21 } = this.own.getOptions();
return i2 < t2 && e2 + 1 === t2 && (i2 = e2 + 1), this.trees[i2];
}
createClusters(t2) {
this.reset(), this.points = t2.filter(((t3) => {
if (t3.geometry) {
const [i3, e2] = t3.geometry.coordinates;
if (!isNaN(i3) && !isNaN(e2) && i3 >= -180 && i3 <= 180 && e2 >= -90 && e2 <= 90) return true;
}
return false;
}));
const { clusterMinZoom: i2 = 3, clusterMaxZoom: s2 = 21 } = this.own.getOptions();
t2.length, this.showLog;
const r2 = [];
for (let t3 = 0; t3 < this.points.length; t3++) {
const i3 = this.points[t3];
if (!i3.geometry) continue;
const [e2, s3] = i3.geometry.coordinates, n3 = M(e2), h2 = M(s3);
r2.push(n3, h2, 1 / 0, t3, -1, 1), this.reduceType !== G.NONE && r2.push(-1);
}
let n2 = this.trees[s2 + 1] = this.u(new Float32Array(r2));
for (let t3 = s2; t3 >= i2; t3--) {
Date.now();
const i3 = this.getClusterZoom(t3);
if (this.mapping.has(i3)) {
if (this.trees[i3]) continue;
let t4, [s3, r3, h2] = this.mapping.get(i3);
switch (r3) {
case e.GEO_FENCE:
t4 = this.p(s3, h2);
break;
case e.ATTR_REF:
t4 = this.m(s3, h2);
break;
default:
t4 = this.v(n2, s3, h2);
}
n2 = this.trees[i3] = this.u(t4);
} else n2 = this.trees[i3] = this.u(this.v(n2, i3));
this.showLog;
}
this.showLog;
}
u(t2) {
const i2 = new l(t2.length / this.stride | 0, this.nodeSize, Float32Array);
for (let e2 = 0; e2 < t2.length; e2 += this.stride) i2.add(k(t2[e2]), _(t2[e2 + 1]));
return i2.finish(), i2.data = t2, i2;
}
m(t2, i2) {
let s2 = x(this.points, ((t3) => {
if (!t3.properties) return null;
let s3 = null;
if (i2 instanceof Array ? i2.forEach(((i3) => {
var e2;
(null === (e2 = t3.properties) || void 0 === e2 ? void 0 : e2.hasOwnProperty(i3)) && (null === s3 ? s3 = t3.properties[i3] : s3 += this.splitChar + t3.properties[i3]);
})) : s3 = t3.properties[i2], this.own.getOptions().clusterDictionary && s3 && !this.geo_refs.has(s3)) {
let t4 = this.own.getOptions().clusterDictionary(e.ATTR_REF, s3);
t4 && t4.point && this.geo_refs.set(s3, t4);
}
return s3;
}), { zoom: t2, type: e.ATTR_REF });
return this.showLog, this.M(e.ATTR_REF, s2, t2);
}
p(t2, i2) {
let s2 = /* @__PURE__ */ new Map();
if (this.own.getOptions().clusterDictionary) {
let t3 = i2;
t3 instanceof Array || (t3 = [t3]), t3.forEach(((t4) => {
if (this.geo_refs.has(t4)) s2.set(t4, this.geo_refs.get(t4));
else {
this.showLog;
let i3 = this.own.getOptions().clusterDictionary(e.GEO_FENCE, t4);
i3 && i3.region && (i3.point || (i3.point = L(i3.region)), this.geo_refs.set(t4, i3), s2.set(t4, i3));
}
}));
}
let r2 = x(this.points, ((t3) => ((t4, i3, e2) => {
let s3 = null;
for (let [e3, r3] of t4) if (w(i3, { type: "Feature", geometry: { type: "Polygon", coordinates: [r3.region] } })) {
s3 = e3;
break;
}
return s3;
})(s2, t3)), { zoom: t2, type: e.GEO_FENCE });
return this.showLog, this.M(e.GEO_FENCE, r2, t2);
}
M(t2, i2, s2) {
let r2 = [];
const { clusterMinPoints: n2 = 3, clusterReduce: h2 } = this.own.getOptions();
for (const o2 in i2) if (i2.hasOwnProperty(o2)) {
let l2 = i2[o2];
if ("undefined" === o2 || l2.length < n2) l2.forEach(((t3) => {
var i3;
const [e2, s3] = t3.geometry.coordinates, n3 = e2, h3 = s3;
r2.push(n3, h3, 1 / 0, +(null !== (i3 = t3.id) && void 0 !== i3 ? i3 : 0), -1, 1), this.reduceType !== G.NONE && r2.push(-1);
}));
else {
let i3, a2 = -1;
l2.forEach(((t3, e2) => {
if (this.reduceType !== G.NONE) {
let s3 = {};
if (this.reduceType & G.INNER && (s3 = this.innerMap(t3.properties)), h2) {
let i4 = this.own.getOptions().clusterMap(t3.properties);
Object.assign(s3, i4);
}
i3 ? (this.reduceType & G.INNER && (this.innerReduce(i3, Object.assign({}, s3)), e2 === l2.length - 1 && this.A(i3)), h2 && h2(i3, Object.assign({}, s3))) : (i3 = Object.assign({}, s3), a2 = this.clusterProps.length, this.clusterProps.push(i3));
}
}));
let u2 = (l2[0].id << this.ZOOM_BITS) + (s2 + 1) + this.points.length, c2 = o2.split(this.splitChar);
if (this.key_refs.set(u2, c2[c2.length - 1]), this.geo_refs.has(o2)) {
let i4 = this.geo_refs.get(o2), s3 = i4.point;
r2.push(s3[0], s3[1], 1 / 0, u2, -1, l2.length), t2 === e.GEO_FENCE ? this.cluster_geo_refs.set(u2, { bbox: E(i4.region, true) }) : this.cluster_geo_refs.set(u2, { bbox: E(l2, false) });
} else {
let { fence: t3, bbox: i4, center: e2 } = A({ type: "FeatureCollection", features: l2 });
C(i4).length <= 2 || i4[0] === 1 / 0 || !t3 ? (n2 > 1 && (u2 = l2[0].id), r2.push(e2[0], e2[1], 1 / 0, u2, -1, 1)) : r2.push(e2[0], e2[1], 1 / 0, u2, -1, l2.length), this.cluster_geo_refs.set(u2, { bbox: i4 });
}
this.reduceType !== G.NONE && r2.push(a2);
}
}
return r2;
}
v(t2, i2, e2) {
var s2, r2, n2;
const { clusterRadius: h2 = 60, tileSize: o2 = 256, clusterMinPoints: l2 = 3, clusterReduce: a2 } = this.own.getOptions(), u2 = (void 0 === e2 ? h2 : e2) / (o2 * Math.pow(2, i2 - 1)), c2 = t2.data, f2 = [], d2 = this.stride;
for (let e3 = 0; e3 < c2.length; e3 += d2) {
if (c2[e3 + this.OFFSET_ZOOM] <= i2) continue;
c2[e3 + this.OFFSET_ZOOM] = i2;
const h3 = c2[e3], o3 = c2[e3 + 1];
let p2 = t2.within(k(c2[e3]), _(c2[e3 + 1]), u2);
if (this.showLog, this.typeKey) {
let t3 = null !== (r2 = null === (s2 = this.L(c2, e3)) || void 0 === s2 ? void 0 : s2.divide_type) && void 0 !== r2 ? r2 : "unknown";
p2 = p2.filter(((i3) => {
var e4, s3;
const r3 = i3 * d2;
let n3 = null !== (s3 = null === (e4 = this.L(c2, r3)) || void 0 === e4 ? void 0 : e4.divide_type) && void 0 !== s3 ? s3 : "unknown";
return n3 != t3 && this.showLog, n3 === t3;
}));
}
this.showLog;
const y2 = c2[e3 + this.OFFSET_NUM];
let m2 = y2;
for (const t3 of p2) {
const e4 = t3 * d2;
c2[e4 + this.OFFSET_ZOOM] > i2 && (m2 += c2[e4 + this.OFFSET_NUM]);
}
if (m2 > y2 && m2 >= l2) {
let t3, s3 = -1, r3 = [[h3, o3]], l3 = [y2];
this.reduceType !== G.NONE && (t3 || (t3 = this.L(c2, e3, true), s3 = this.clusterProps.length, this.clusterProps.push(t3)));
const u3 = (e3 / d2 << this.ZOOM_BITS) + (i2 + 1) + this.points.length;
for (let e4 = 0; e4 < p2.length; ++e4) {
const s4 = p2[e4] * d2;
if (c2[s4 + this.OFFSET_ZOOM] <= i2) continue;
let n3;
c2[s4 + this.OFFSET_ZOOM] = i2, this.reduceType !== G.NONE && t3 && (n3 = this.L(c2, s4), this.reduceType & G.INNER && this.innerReduce(t3, n3), a2 && a2(t3, n3));
let h4 = c2[s4 + this.OFFSET_NUM];
l3.push(h4), r3.push([c2[s4], c2[s4 + 1]]), c2[s4 + this.OFFSET_PARENT] = u3;
}
c2[e3 + this.OFFSET_PARENT] = u3, this.cluster_geo_refs.set(u3, { bbox: E(r3, true) });
let [w2, v2] = this.C(r3, l3, null !== (n2 = null == t3 ? void 0 : t3.weight_list) && void 0 !== n2 ? n2 : []);
f2.push(w2, v2, 1 / 0, u3, -1, m2), this.reduceType & G.INNER && t3 && this.weightKey && this.A(t3), this.reduceType !== G.NONE && f2.push(s3);
} else {
for (let t3 = 0; t3 < d2; t3++) f2.push(c2[e3 + t3]);
if (m2 > 1) for (const t3 of p2) {
const e4 = t3 * d2;
if (!(c2[e4 + this.OFFSET_ZOOM] <= i2)) {
c2[e4 + this.OFFSET_ZOOM] = i2;
for (let t4 = 0; t4 < d2; t4++) f2.push(c2[e4 + t4]);
}
}
}
}
return f2;
}
C(t2, i2, e2) {
let s2 = 0, n2 = 0, h2 = 0, o2 = this.own.getOptions().clusterPointLocationType;
if (0 === e2.length) o2 = r.COUNT_AVERAGE;
else if (t2.length !== e2.length) throw new Error("weight_list length not equal clusterPoints length");
switch (o2) {
case r.WEIGHT_MAX:
let o3 = e2.reduce(((t3, i3, s3) => i3 > e2[t3] ? s3 : t3), 0);
s2 = t2[o3][0], n2 = t2[o3][1];
break;
case r.WEIGHT_AVERAGE:
h2 = 0, e2.forEach(((t3) => {
h2 += t3;
}));
for (let i3 = 0; i3 < t2.length; i3++) s2 += t2[i3][0] * e2[i3], n2 += t2[i3][1] * e2[i3];
s2 /= h2, n2 /= h2;
break;
case r.COUNT_AVERAGE:
h2 = 0, i2.forEach(((t3) => {
h2 += t3;
}));
for (let e3 = 0; e3 < t2.length; e3++) s2 += t2[e3][0] * i2[e3], n2 += t2[e3][1] * i2[e3];
s2 /= h2, n2 /= h2;
break;
default:
for (let i3 = 0; i3 < t2.length; i3++) s2 += t2[i3][0], n2 += t2[i3][1];
s2 /= t2.length, n2 /= t2.length;
}
return [s2, n2];
}
A(t2) {
let i2 = 0;
switch (this.own.getOptions().clusterPointWeightType) {
case s.AVERAGE:
t2.weight_list.forEach(((t3) => {
i2 += t3;
})), i2 /= t2.weight_list.length;
break;
case s.MAX:
t2.weight_list.forEach(((t3) => {
i2 < t3 && (i2 = t3);
}));
break;
case s.SUM:
t2.weight_list.forEach(((t3) => {
i2 += t3;
}));
break;
default:
i2 = 1;
}
delete t2.weight_list, t2.weight = i2;
}
k(t2) {
return t2 - this.points.length >> this.ZOOM_BITS;
}
_(t2) {
return (t2 - this.points.length) % 32;
}
L(t2, i2, e2) {
if (t2[i2 + this.OFFSET_NUM] > 1) {
const s3 = this.clusterProps[t2[i2 + this.OFFSET_PROP]];
return e2 ? Object.assign({}, s3) : s3;
}
const s2 = this.points[t2[i2 + this.OFFSET_ID]].properties;
let r2 = {};
if (this.reduceType & G.INNER && (r2 = this.innerMap(s2)), this.own.getOptions().clusterReduce) {
let t3 = this.own.getOptions().clusterMap(s2);
Object.assign(r2, t3);
}
return e2 && r2 === s2 ? Object.assign({}, r2) : r2;
}
l(t2) {
var i2, e2;
let s2 = this.own.getOptions();
return Math.max(null !== (i2 = s2.clusterMinZoom) && void 0 !== i2 ? i2 : 3, Math.min(Math.floor(+t2), (null !== (e2 = s2.clusterMaxZoom) && void 0 !== e2 ? e2 : 21) + 1));
}
getClusters(t2, i2) {
var s2;
if (this.isIllegal(t2)) return [[], []];
let r2 = ((i2[0] + 180) % 360 + 360) % 360 - 180;
const n2 = Math.max(-90, Math.min(90, i2[1]));
let h2 = 180 === i2[2] ? 180 : ((i2[2] + 180) % 360 + 360) % 360 - 180;
const o2 = Math.max(-90, Math.min(90, i2[3]));
if (i2[2] - i2[0] >= 360) r2 = -180, h2 = 180;
else if (r2 > h2) {
const i3 = this.getClusters(t2, [r2, n2, 180, o2]), e2 = this.getClusters(t2, [-180, n2, h2, o2]);
return [[...i3[0], ...e2[0]], [...i3[1], ...e2[1]]];
}
let l2 = this.getClusterZoom(t2);
const a2 = this.getClusterTree(t2);
if (!a2) return [[], []];
const { type: u2, name: c2 } = this.getClusterType(t2), f2 = a2.range(k(r2), _(o2), k(h2), _(n2)), d2 = a2.data, p2 = [], y2 = [];
this.showLog;
for (const t3 of f2) {
const i3 = this.stride * t3;
if (this.showLog, d2[i3 + this.OFFSET_NUM] >= this.own.getOptions().clusterMinPoints) {
let r3 = this.getClusterJSON(d2, i3, this.clusterProps);
r3.properties || (r3.properties = {}), r3.properties.listChildren = this.getLeaves(d2[i3 + this.OFFSET_ID], [], null !== (s2 = this.own.getOptions().clusterListChildren) && void 0 !== s2 ? s2 : -1), r3.properties.clusterIndex = (t3 << this.ZOOM_BITS) + l2, r3.properties.allCount = this.points.length, r3.properties.type = u2, u2 !== e.GEO_FENCE && u2 !== e.ATTR_REF || this.key_refs.has(d2[i3 + this.OFFSET_ID]) && (r3.properties.belongKey = c2, r3.properties.belongValue = this.key_refs.get(d2[i3 + this.OFFSET_ID])), p2.push(r3);
} else {
let t4 = d2[i3 + this.OFFSET_ID], e2 = this.points[t4];
e2.id = t4, e2.properties ? e2.properties.listChildren = [] : e2.properties = { listChildren: [] }, e2.properties ? e2.properties.clusterId = t4 : e2.properties = { clusterId: t4 }, e2.properties ? e2.properties.allCount = this.points.length : e2.properties = { allCount: this.points.length }, e2.properties ? e2.properties.parentId = d2[i3 + this.OFFSET_PARENT] : e2.properties = { parentId: d2[i3 + this.OFFSET_PARENT] }, y2.push(e2);
}
}
return this.isSort && p2.sort(((t3, i3) => {
var e2, s3;
return (null === (e2 = t3.properties) || void 0 === e2 ? void 0 : e2.pointCount) - (null === (s3 = i3.properties) || void 0 === s3 ? void 0 : s3.pointCount);
})), [y2, p2];
}
getElementById(t2, i2, s2) {
let r2 = s2 ? i2 >> this.ZOOM_BITS : i2, n2 = new T();
n2.id = t2, n2.index = r2;
let h2 = s2 ? i2 & (1 << this.ZOOM_BITS) - 1 : this._(t2) - 1, { type: o2, name: l2 } = this.getClusterType(h2);
if (n2.type = o2, t2 <= this.points.length) n2.isCluster = false, n2.properties = this.points[t2].properties, n2.latLng = this.points[t2].geometry.coordinates;
else {
n2.isCluster = true;
let i3 = this.getClusterTree(h2), s3 = i3.data;
if (i3) {
let i4 = r2 * this.stride;
this.showLog, n2.latLng = [s3[i4], s3[i4 + 1]], n2.pointCount = s3[i4 + this.OFFSET_NUM], n2.parentId = s3[i4 + this.OFFSET_PARENT], o2 !== e.GEO_FENCE && o2 !== e.ATTR_REF || this.key_refs.has(t2) && (n2.belongKey = l2, n2.belongValue = this.key_refs.get(t2)), this.reduceType !== G.NONE && (n2.reduces = this.clusterProps[s3[i4 + this.OFFSET_PROP]]);
const h3 = this.getLeaves(t2, [], 1 / 0);
if (h3 && h3.length > 0) {
const i5 = h3.map(((t3) => t3.latLng));
i5.length > 0 ? (n2.bbox = E(i5, true), this.showLog) : this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox);
} else this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox);
}
}
return !n2.bbox && this.cluster_geo_refs.has(t2) && (n2.bbox = this.cluster_geo_refs.get(t2).bbox), this.showLog, n2;
}
getUnDistanceBrothers(t2, i2, e2, s2, r2) {
let n2 = this.k(t2), h2 = this.points[n2], o2 = h2 ? h2["_inner_" + i2 + "_" + s2] : void 0, l2 = [];
return o2 && (l2 = this.points.filter(((t3) => !!t3 && t3["_inner_" + i2 + "_" + s2] === o2))), l2.slice(0, r2).map(((t3) => {
let e3 = new T();
return e3.id = t3.id, e3.index = t3.id, e3.type = i2, e3.isCluster = false, e3.properties = this.points[t3.id].properties, e3.latLng = this.points[t3.id].geometry.coordinates, e3;
}));
}
getLeaves(t2, i2 = [], s2) {
if (void 0 === s2 && (s2 = 1 / 0), s2 <= 0) return [];
i2 || (i2 = []);
let r2 = this._(t2) - 1, { type: n2, name: h2 } = this.getClusterType(r2);
if (n2 === e.GEO_FENCE || n2 === e.ATTR_REF) return this.getUnDistanceBrothers(t2, n2, h2, r2, s2);
if (t2 > this.points.length) {
let e2 = this.getClusterTree(r2 + 1), n3 = e2.data;
if (e2) for (let e3 = 0; e3 < n3.length / this.stride; e3++) {
let r3 = e3 * this.stride + this.OFFSET_ID;
if (n3[e3 * this.stride + this.OFFSET_PARENT] === t2) if (n3[r3] <= this.points.length) {
if (!(i2.length < s2)) break;
{
let t3 = this.getElementById(n3[r3], e3);
i2.push(t3);
}
} else this.getLeaves(n3[r3], i2, s2);
}
}
return i2;
}
getChildNodes(t2) {
let i2 = [];
if (t2 <= this.points.length) i2 = [];
else {
let e2 = this._(t2) - 1, s2 = this.getClusterTree(e2 + 1), r2 = s2.data;
if (s2) {
for (let e3 = 0; e3 < r2.length / this.stride; e3++) if (r2[e3 * this.stride + this.OFFSET_PARENT] === t2) {
let s3 = this.getElementById(r2[e3 * this.stride + this.OFFSET_ID], e3);
s3.parentId = t2, i2.push(s3);
}
}
}
return i2;
}
getClusterJSON(t2, i2, e2) {
return { type: "Feature", id: t2[i2 + this.OFFSET_ID], properties: this.getClusterProperties(t2, i2, e2), geometry: { type: "Point", coordinates: [t2[i2], t2[i2 + 1]] } };
}
getClusterProperties(t2, i2, e2) {
const s2 = t2[i2 + this.OFFSET_NUM], r2 = s2 >= 1e4 ? `${Math.round(s2 / 1e3)}k` : s2 >= 1e3 ? Math.round(s2 / 100) / 10 + "k" : s2;
let n2 = {};
if (this.reduceType !== G.NONE) {
const s3 = t2[i2 + this.OFFSET_PROP];
n2 = -1 === s3 ? {} : Object.assign({}, { reduces: e2[s3] });
}
return Object.assign(n2, { isCluster: true, clusterId: t2[i2 + this.OFFSET_ID], parentId: t2[i2 + this.OFFSET_PARENT], point: [t2[i2], t2[i2 + 1]], pointCount: s2, pointCountAbbrev: r2 });
}
isIllegal(t2) {
var i2, e2;
let s2 = null !== (i2 = this.own.getOptions().minZoom) && void 0 !== i2 ? i2 : 3, r2 = null !== (e2 = this.own.getOptions().maxZoom) && void 0 !== e2 ? e2 : 23;
return t2 < s2 || t2 > r2;
}
reset() {
this.points = [], this.clusterProps = [], this.trees = {}, this.geo_refs.clear(), this.key_refs.clear(), this.cluster_geo_refs.clear();
}
}
class P {
constructor(t2, i2, e2, s2) {
this.T = 600, this.G = [12, 12, 12, 12], this.own = t2, this.engine = i2, this.map = e2, this.showLog = s2;
let r2 = this.own.getOptions().fitViewMargin;
r2 && (this.G = r2), this.register(), this.createLayers();
}
register() {
this.own.getOptions().updateRealTime ? (this.T = this.own.getOptions().waitTime || 300, this.map.addEventListener("update", this.B = g(this.mapStatusChange.bind(this), this.T, { leading: true, trailing: false }))) : this.map.addEventListener("mapstatusidle_inner", this.B = this.mapStatusChange.bind(this)), this.map.addEventListener("destroy", (() => {
this.own.destroy();
})), this.own.on(i.DESTROY, (() => {
this.destroy();
}));
}
unregister() {
this.own.getOptions().updateRealTime ? this.map.removeEventListener("update", this.B) : this.map.removeEventListener("mapstatusidle_inner", this.B), this.B = () => {
};
}
mapStatusChange(t2) {
let e2 = this.map.getZoom(), s2 = this.map.getBounds(), r2 = s2.getSouthWest(), n2 = s2.getNorthEast();
this.showLog;
let h2 = this.engine.getClusters(e2, [r2.lng, r2.lat, n2.lng, n2.lat]);
this.own.fire(i.CHANGE, h2), this.own.isRender && this.update(h2);
}
update(t2) {
if (this.showLog, this.own.getOptions().isAnimation) {
if (!(this.multi_layer instanceof BMapGL.CustomHtmlLayer)) throw new Error("isAnimation is true, but renderClusterStyle is not dom type");
this.render([...t2[0], ...t2[1]], h.MULTI);
} else this.render(t2[0], h.SINGLE), this.render(t2[1], h.MULTI);
}
render(t2, i2) {
this.showLog, this.showLog;
let e2 = { type: "FeatureCollection", features: t2 }, s2 = i2 === h.MULTI ? this.multi_layer : this.single_layer;
s2 && (t2.length > 0 && (null == s2 || s2.setData(e2)), 0 === t2.length && (null == s2 || s2.clearData()));
}
createLayers() {
var t2, i2;
(null === (t2 = this.own.getOptions().renderSingleStyle) || void 0 === t2 ? void 0 : t2.type) === n.DOM ? this.single_layer = this.createLayer(h.SINGLE, n.DOM) : this.single_layer = this.createLayer(h.SINGLE, n.WEBGL), (null === (i2 = this.own.getOptions().renderClusterStyle) || void 0 === i2 ? void 0 : i2.type) === n.DOM ? this.multi_layer = this.createLayer(h.MULTI, n.DOM) : this.multi_layer = this.createLayer(h.MULTI, n.WEBGL);
}
createLayer(t2, e2) {
this.showLog;
let s2, r2 = this.own.getOptions(), o2 = t2 === h.MULTI ? r2.renderClusterStyle : r2.renderSingleStyle;
if (!o2) return;
if (e2 === n.DOM) {
let i2 = { sliceRepeat: true, minZoom: this.own.getOptions().minZoom, maxZoom: this.own.getOptions().maxZoom, zIndex: t2 === h.MULTI ? 10 : 9, nextTick: true, fixBottom: true, useTranslate: !!this.own.getOptions().isAnimation, anchors: [0.5, 0.5], displayType: "normal", enableDraggingMap: true };
this.own.getOptions().isAnimation && (i2.displayType = "cluster"), Object.assign(i2, o2.style);
const e3 = new BMapGL.CustomHtmlLayer(o2.inject, i2);
this.map.addCustomHtmlLayer(e3), s2 = e3;
} else {
let i2 = 1.2 * (r2.clusterRadius || 32), e3 = { iconObj: (t3, i3) => ({ canvas: (null == o2 ? void 0 : o2.inject)(i3), id: i3.clusterId }), sizes: [i2, i2 / 2], scale: 1, userSizes: false, anchors: [0, 0], width: i2, height: i2 / 2 };
Object.assign(e3, o2.style);
let n2 = { icon: "https://webmap0.bdimg.com/image/api/marker_red.png", sizes: [8, 8], anchors: [0, -1], userSizes: false, width: ["match", ["get", "type"], 0, 16, 8], height: ["match", ["get", "type"], 0, 16, 8] };
Object.assign(n2, o2.style);
const l3 = new BMapGL.PointIconLayer({ minZoom: this.own.getOptions().minZoom, maxZoom: this.own.getOptions().maxZoom, zIndex: t2 === h.MULTI ? 10 : 9, isTop: false, enablePicked: true, autoSelect: false, pickWidth: 30, pickHeight: 30, opacity: 1, isFlat: false, isFixed: true, style: t2 === h.MULTI ? e3 : n2 });
this.map.addNormalLayer(l3), s2 = l3;
}
s2.addEventListener("click", ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer && !t3.value.dataItem) return;
let e3 = this.getElementByEvent(t3);
e3.bbox && Array.isArray(e3.bbox) && e3.bbox[0] !== 1 / 0 && this.fitView(e3.bbox), this.own.fire(i.CLICK, e3);
}));
let l2 = e2 === n.DOM ? "mouseover" : "mousemove";
return s2.addEventListener(l2, ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer && !t3.value.dataItem) return void (this.P && (this.own.fire(i.MOUSE_OUT, this.P), this.P = null));
let e3 = this.getElementByEvent(t3);
if (t3.target instanceof BMapGL.PointIconLayer) return this.P && this.P.id === e3.id || this.own.fire(i.MOUSE_OVER, e3), void (this.P = e3);
this.own.fire(i.MOUSE_OVER, e3);
})), s2.addEventListener("mouseout", ((t3) => {
if (this.showLog, t3.target instanceof BMapGL.PointIconLayer) return;
let e3 = this.getElementByEvent(t3);
this.own.fire(i.MOUSE_OUT, e3);
})), s2;
}
getElementByEvent(t2) {
var i2, e2;
let s2, r2, n2 = [];
if (t2.target instanceof BMapGL.CustomOverlay) {
let e3 = t2.target.properties || {};
s2 = e3.clusterId, r2 = e3.clusterIndex, n2 = null !== (i2 = e3.listChildren) && void 0 !== i2 ? i2 : [];
} else {
let i3 = t2.value.dataItem.properties || {};
s2 = i3.clusterId, r2 = i3.clusterIndex, n2 = null !== (e2 = i3.listChildren) && void 0 !== e2 ? e2 : [];
}
let h2 = this.engine.getElementById(s2, r2, true);
return h2.listChildren = n2, h2.pixel = [t2.pixel.x, t2.pixel.y], h2.target = t2.target, h2;
}
clearRender() {
this.showLog, this.update([[], []]);
}
unrender() {
this.showLog, this.multi_layer instanceof BMapGL.PointIconLayer ? this.map.removeNormalLayer(this.multi_layer) : this.map.removeCustomHtmlLayer(this.multi_layer), this.single_layer instanceof BMapGL.PointIconLayer ? this.map.removeNormalLayer(this.single_layer) : this.map.removeCustomHtmlLayer(this.single_layer), this.multi_layer = void 0, this.single_layer = void 0;
}
fitView(t2) {
if (this.showLog, this.own.getOptions().fitViewOnClick) {
let i2 = this.map.getZoom(), e2 = [new BMapGL.Point(t2[0], t2[1]), new BMapGL.Point(t2[2], t2[3])], s2 = { margins: this.G, enableAnimation: true };
this.map.setViewport(e2, s2), setTimeout((() => {
i2 === this.map.getZoom() && this.map.setZoom(i2 + 1), this.mapStatusChange();
}), 300);
}
}
show() {
this.single_layer && (this.single_layer instanceof BMapGL.CustomHtmlLayer && this.single_layer.show(), this.single_layer instanceof BMapGL.PointIconLayer && this.single_layer.setVisible(true)), this.multi_layer && (this.multi_layer instanceof BMapGL.CustomHtmlLayer && this.multi_layer.show(), this.multi_layer instanceof BMapGL.PointIconLayer && this.multi_layer.setVisible(true));
}
hide() {
this.single_layer && (this.single_layer instanceof BMapGL.CustomHtmlLayer && this.single_layer.hide(), this.single_layer instanceof BMapGL.PointIconLayer && this.single_layer.setVisible(false)), this.multi_layer && (this.multi_layer instanceof BMapGL.CustomHtmlLayer && this.multi_layer.hide(), this.multi_layer instanceof BMapGL.PointIconLayer && this.multi_layer.setVisible(false));
}
getSingleLayer() {
return this.single_layer;
}
getClusterLayer() {
return this.multi_layer;
}
drawMarker(t2) {
this.map.addOverlay(new BMapGL.Marker(new BMapGL.Point(t2[0], t2[1])));
}
destroy() {
this.map && (this.unregister(), this.unrender());
}
}
return Object.freeze({ __proto__: null, get ClusterData() {
return h;
}, ClusterElement: T, get ClusterEvent() {
return i;
}, get ClusterRender() {
return n;
}, get ClusterType() {
return e;
}, get LocCountType() {
return r;
}, get PointWeightType() {
return s;
}, View: class extends t {
constructor(t2, i2) {
if (super(), this.Z = false, !t2) throw new Error("map is required");
i2 && this.verifyOptions(i2);
const e2 = { tileSize: 256, minZoom: 3, maxZoom: 21, clusterRadius: 30, clusterMinZoom: 3, clusterMaxZoom: 16, clusterMinPoints: 2, clusterListChildren: 0, clusterPointWeight: void 0, clusterPointWeightType: s.SUM, clusterPointLocationType: r.WEIGHT_AVERAGE, clusterPointType: void 0, clusterMap: (t3) => ({}), clusterReduce: void 0, clusterType: void 0, clusterDictionary: void 0, isRender: true, isAnimation: false, renderClusterStyle: { type: n.DOM, style: {}, inject: (t3) => {
var i3 = Math.pow(t3.pointCount / t3.allCount, 0.1), e3 = document.createElement("div"), s2 = 180 - 180 * i3, r2 = "hsla(" + s2 + ",100%,30%,0.7)", n2 = "hsla(" + s2 + ",100%,90%,1)", h2 = "hsla(" + s2 + ",100%,30%,1)", o2 = "hsla(" + s2 + ",100%,90%,1)";
e3.style.backgroundColor = r2;
var l2 = Math.round(25 + 30 * Math.pow(t3.pointCount / t3.allCount, 1 / 6));
return e3.style.width = e3.style.height = l2 + "px", e3.style.border = "solid 1px " + h2, e3.style.borderRadius = l2 / 2 + "px", e3.style.boxShadow = "0 0 5px " + o2, e3.innerHTML = t3.pointCount, e3.style.lineHeight = l2 + "px", e3.style.color = n2, e3.style.fontSize = "14px", e3.style.textAlign = "center", e3.style.cursor = "pointer", e3;
} }, renderSingleStyle: { type: n.WEBGL, style: {}, inject: (t3) => document.createElement("canvas") }, fitViewOnClick: true, fitViewMargin: void 0, updateRealTime: false, waitTime: 300 };
this.options = Object.assign(e2, i2), this.engine = new B(this, this.Z), this.render = new P(this, this.engine, t2, this.Z), this.isRender = this.options.isRender || false;
}
setData(t2) {
this.Z, this.engine.createClusters(t2), this.redraw();
}
getSingleLayer() {
return this.render.getSingleLayer();
}
getClusterLayer() {
return this.render.getClusterLayer();
}
getLeaves(t2, i2) {
return this.engine.getLeaves(t2, [], i2);
}
getSonNodes(t2) {
return this.engine.getChildNodes(t2);
}
redraw() {
this.render.mapStatusChange();
}
show() {
this.render.show();
}
hide() {
this.render.hide();
}
destroy() {
this.fire(i.DESTROY);
}
get isRender() {
return this.O;
}
set isRender(t2) {
this.O = t2, !t2 && this.render.clearRender();
}
getOptions() {
return this.options;
}
verifyOptions(t2) {
var i2, e2;
if (t2.minZoom && t2.minZoom < 3) throw new Error("minZoom must be greater than 3");
if (t2.maxZoom && t2.maxZoom > 23) throw new Error("maxZoom must be less than 23");
if (Math.max(null !== (i2 = t2.minZoom) && void 0 !== i2 ? i2 : 3, 3) > Math.min(null !== (e2 = t2.maxZoom) && void 0 !== e2 ? e2 : 23, 23)) throw new Error("minZoom must be less than maxZoom");
if (t2.clusterMinZoom && t2.clusterMinZoom < 3) throw new Error("clusterMinZoom must be greater than 3");
if (t2.clusterMaxZoom && t2.clusterMaxZoom > 23) throw new Error("clusterMaxZoom must be less than 23");
if (t2.clusterMinZoom && t2.clusterMaxZoom && t2.clusterMinZoom > t2.clusterMaxZoom) throw new Error("clusterMinZoom must be less than clusterMaxZoom");
if (t2.clusterType) {
if (!(t2.clusterType instanceof Array)) throw new Error("clusterType must be an array");
if (t2.clusterType.length < 1) throw new Error("clusterType must be greater than 0");
for (let i3 = 0; i3 < t2.clusterType.length; i3++) {
if (t2.clusterType[i3].length < 4) throw new Error("clusterType must be greater than 4");
if (!t2.clusterType[i3][0]) throw new Error("clusterType item startZoom must not be null");
if (t2.clusterType[i3][1] && t2.clusterType[i3][0] > t2.clusterType[i3][1]) throw new Error("clusterType item endZoom must be less than starZoom");
if (null === t2.clusterType[i3][1] && i3 < t2.clusterType.length - 1) throw new Error("clusterType item endZoom must not be null,excluding the last item endZoom");
if (i3 < t2.clusterType.length - 1 && null !== t2.clusterType[i3][1] && t2.clusterType[i3][1] > t2.clusterType[i3 + 1][0]) throw new Error("clusterType item endZoom must be less than the next startZoom");
}
}
}
}, pointTransformer: (t2, i2) => {
let e2 = [];
return t2.forEach(((t3, s2) => {
const { point: r2 = null, properties: n2 = {} } = i2(t3, s2);
r2 && e2.push({ type: "Feature", geometry: { type: "Point", coordinates: r2 }, properties: n2 });
})), e2;
} });
}));
}
});
export default require_cluster();
//# sourceMappingURL=@bmapgl-plugin_cluster.js.map
{
"version": 3,
"sources": ["../../@bmapgl-plugin/cluster/index.js"],
"sourcesContent": ["!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).Cluster=i()}(this,(function(){\"use strict\";class t{constructor(i){this.t=null!=i?i:t.guid()}getHandlers(t){let i=this.i||(this.i=new Map);return i.has(t)||i.set(t,new Map),i.get(t)}on(i,e){\"function\"==typeof e&&this.getHandlers(i).set(e,t.guid())}addEventListener(t,i){this.on(t,i)}off(t,i){var e;let s=this.getHandlers(t);i?s.has(i)&&s.delete(i):null===(e=this.i)||void 0===e||e.clear()}removeEventListener(t,i){this.off(t,i)}fire(t,i){let e=Array.from(this.getHandlers(t).entries());for(const[t]of e)t.call(this,i)}dispatchEvent(t,i){this.fire(t,i)}destroy(){var t;null===(t=this.i)||void 0===t||t.clear(),this.i=null}get hashCode(){return this.t}static guid(){return\"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g,(function(t){let i=16*Math.random()|0;return(\"x\"==t?i:3&i|8).toString(16)}))}}var i,e,s,r,n,h;!function(t){t.CLICK=\"click\",t.MOUSE_OVER=\"mouseover\",t.MOUSE_OUT=\"mouseout\",t.CHANGE=\"change\",t.DESTROY=\"destroy\"}(i||(i={})),function(t){t.DIS_PIXEL=\"dis-pixel\",t.ATTR_REF=\"attribute\",t.GEO_FENCE=\"geo-fence\"}(e||(e={})),function(t){t[t.SUM=1]=\"SUM\",t[t.AVERAGE=2]=\"AVERAGE\",t[t.MAX=4]=\"MAX\"}(s||(s={})),function(t){t[t.AVERAGE=1]=\"AVERAGE\",t[t.COUNT_AVERAGE=3]=\"COUNT_AVERAGE\",t[t.WEIGHT_AVERAGE=5]=\"WEIGHT_AVERAGE\",t[t.WEIGHT_MAX=4]=\"WEIGHT_MAX\"}(r||(r={})),function(t){t.DOM=\"dom\",t.WEBGL=\"webgl\"}(n||(n={})),function(t){t.MULTI=\"multi\",t.SINGLE=\"single\"}(h||(h={}));const o=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */class l{\n/**\n * Creates an index from raw `ArrayBuffer` data.\n * @param {ArrayBuffer} data\n */\nstatic from(t){if(!(t instanceof ArrayBuffer))throw new Error(\"Data must be an instance of ArrayBuffer.\");const[i,e]=new Uint8Array(t,0,2);if(219!==i)throw new Error(\"Data does not appear to be in a KDBush format.\");const s=e>>4;if(1!==s)throw new Error(`Got v${s} data when expected v1.`);const r=o[15&e];if(!r)throw new Error(\"Unrecognized array type.\");const[n]=new Uint16Array(t,2,1),[h]=new Uint32Array(t,4,1);return new l(h,n,r,t)}\n/**\n * Creates an index that will hold a given number of items.\n * @param {number} numItems\n * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n * @param {ArrayBuffer} [data] (For internal use only)\n */constructor(t,i=64,e=Float64Array,s){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+i,2),65535),this.ArrayType=e,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const r=o.indexOf(this.ArrayType),n=2*t*this.ArrayType.BYTES_PER_ELEMENT,h=t*this.IndexArrayType.BYTES_PER_ELEMENT,l=(8-h%8)%8;if(r<0)throw new Error(`Unexpected typed array class: ${e}.`);s&&s instanceof ArrayBuffer?(\n// reconstruct an index from a buffer\nthis.data=s,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+h+l,2*t),this.h=2*t,this.o=!0):(\n// initialize a new index\nthis.data=new ArrayBuffer(8+n+h+l),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+h+l,2*t),this.h=0,this.o=!1,\n// set header\nnew Uint8Array(this.data,0,2).set([219,16+r]),new Uint16Array(this.data,2,1)[0]=i,new Uint32Array(this.data,4,1)[0]=t)}\n/**\n * Add a point to the index.\n * @param {number} x\n * @param {number} y\n * @returns {number} An incremental index associated with the added item (starting from `0`).\n */add(t,i){const e=this.h>>1;return this.ids[e]=e,this.coords[this.h++]=t,this.coords[this.h++]=i,e}\n/**\n * Perform indexing of the added points.\n */finish(){const t=this.h>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);\n// kd-sort both arrays for efficient search\nreturn a(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this.o=!0,this}\n/**\n * Search the index for items within a given bounding box.\n * @param {number} minX\n * @param {number} minY\n * @param {number} maxX\n * @param {number} maxY\n * @returns {number[]} An array of indices correponding to the found items.\n */range(t,i,e,s){if(!this.o)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:r,coords:n,nodeSize:h}=this,o=[0,r.length-1,0],l=[];\n// recursively search for items in range in the kd-sorted arrays\nfor(;o.length;){const a=o.pop()||0,u=o.pop()||0,c=o.pop()||0;\n// if we reached \"tree node\", search linearly\nif(u-c<=h){for(let h=c;h<=u;h++){const o=n[2*h],a=n[2*h+1];o>=t&&o<=e&&a>=i&&a<=s&&l.push(r[h])}continue}\n// otherwise find the middle index\nconst f=c+u>>1,d=n[2*f],p=n[2*f+1];\n// include the middle item if it's in range\nd>=t&&d<=e&&p>=i&&p<=s&&l.push(r[f]),\n// queue search in halves that intersect the query\n(0===a?t<=d:i<=p)&&(o.push(c),o.push(f-1),o.push(1-a)),(0===a?e>=d:s>=p)&&(o.push(f+1),o.push(u),o.push(1-a))}return l}\n/**\n * Search the index for items within a given radius.\n * @param {number} qx\n * @param {number} qy\n * @param {number} r Query radius.\n * @returns {number[]} An array of indices correponding to the found items.\n */within(t,i,e){if(!this.o)throw new Error(\"Data not yet indexed - call index.finish().\");const{ids:s,coords:r,nodeSize:n}=this,h=[0,s.length-1,0],o=[],l=e*e;\n// recursively search for items within radius in the kd-sorted arrays\nfor(;h.length;){const a=h.pop()||0,u=h.pop()||0,c=h.pop()||0;\n// if we reached \"tree node\", search linearly\nif(u-c<=n){for(let e=c;e<=u;e++)d(r[2*e],r[2*e+1],t,i)<=l&&o.push(s[e]);continue}\n// otherwise find the middle index\nconst f=c+u>>1,p=r[2*f],y=r[2*f+1];\n// include the middle item if it's in range\nd(p,y,t,i)<=l&&o.push(s[f]),\n// queue search in halves that intersect the query\n(0===a?t-e<=p:i-e<=y)&&(h.push(c),h.push(f-1),h.push(1-a)),(0===a?t+e>=p:i+e>=y)&&(h.push(f+1),h.push(u),h.push(1-a))}return o}}\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */function a(t,i,e,s,r,n){if(r-s<=e)return;const h=s+r>>1;// middle index\n// sort ids and coords around the middle index so that the halves lie\n// either left/right or top/bottom correspondingly (taking turns)\nu(t,i,h,s,r,n),\n// recursively kd-sort first half and second half on the opposite axis\na(t,i,e,s,h-1,1-n),a(t,i,e,h+1,r,1-n)}\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */function u(t,i,e,s,r,n){for(;r>s;){if(r-s>600){const h=r-s+1,o=e-s+1,l=Math.log(h),a=.5*Math.exp(2*l/3),c=.5*Math.sqrt(l*a*(h-a)/h)*(o-h/2<0?-1:1);u(t,i,e,Math.max(s,Math.floor(e-o*a/h+c)),Math.min(r,Math.floor(e+(h-o)*a/h+c)),n)}const h=i[2*e+n];let o=s,l=r;for(c(t,i,s,e),i[2*r+n]>h&&c(t,i,s,r);o<l;){for(c(t,i,o,l),o++,l--;i[2*o+n]<h;)o++;for(;i[2*l+n]>h;)l--}i[2*s+n]===h?c(t,i,s,l):(l++,c(t,i,l,r)),l<=e&&(s=l+1),e<=l&&(r=l-1)}}\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */function c(t,i,e,s){f(t,e,s),f(i,2*e,2*s),f(i,2*e+1,2*s+1)}\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */function f(t,i,e){const s=t[i];t[i]=t[e],t[e]=s}\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */function d(t,i,e,s){const r=t-e,n=i-s;return r*r+n*n}\n/**\n * @module helpers\n */\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n *\n * @memberof helpers\n * @type {number}\n */\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction p(t){return!isNaN(t)&&null!==t&&!Array.isArray(t)}\n/**\n * Callback for coordEach\n *\n * @callback coordEachCallback\n * @param {Array<number>} currentCoord The current coordinate being processed.\n * @param {number} coordIndex The current index of the coordinate being processed.\n * @param {number} featureIndex The current index of the Feature being processed.\n * @param {number} multiFeatureIndex The current index of the Multi-Feature being processed.\n * @param {number} geometryIndex The current index of the Geometry being processed.\n */\n/**\n * Iterate over coordinates in any GeoJSON object, similar to Array.forEach()\n *\n * @name coordEach\n * @param {FeatureCollection|Feature|Geometry} geojson any GeoJSON object\n * @param {Function} callback a method that takes (currentCoord, coordIndex, featureIndex, multiFeatureIndex)\n * @param {boolean} [excludeWrapCoord=false] whether or not to include the final coordinate of LinearRings that wraps the ring in its iteration.\n * @returns {void}\n * @example\n * var features = turf.featureCollection([\n * turf.point([26, 37], {\"foo\": \"bar\"}),\n * turf.point([36, 53], {\"hello\": \"world\"})\n * ]);\n *\n * turf.coordEach(features, function (currentCoord, coordIndex, featureIndex, multiFeatureIndex, geometryIndex) {\n * //=currentCoord\n * //=coordIndex\n * //=featureIndex\n * //=multiFeatureIndex\n * //=geometryIndex\n * });\n */function y(t,i,e){\n// Handles null Geometry -- Skips this GeoJSON\nif(null!==t)\n// This logic may look a little weird. The reason why it is that way\n// is because it's trying to be fast. GeoJSON supports multiple kinds\n// of objects at its root: FeatureCollection, Features, Geometries.\n// This function has the responsibility of handling all of them, and that\n// means that some of the `for` loops you see below actually just don't apply\n// to certain inputs. For instance, if you give this just a\n// Point geometry, then both loops are short-circuited and all we do\n// is gradually rename the input until it's called 'geometry'.\n// This also aims to allocate as few resources as possible: just a\n// few numbers and booleans, rather than any temporary arrays as would\n// be required with the normalization approach.\nfor(var s,r,n,h,o,l,a,u,c=0,f=0,d=t.type,p=\"FeatureCollection\"===d,m=\"Feature\"===d,w=p?t.features.length:1,v=0;v<w;v++){o=(u=!!(a=p?t.features[v].geometry:m?t.geometry:t)&&\"GeometryCollection\"===a.type)?a.geometries.length:1;for(var g=0;g<o;g++){var M=0,b=0;\n// Handles null Geometry -- Skips this geometry\nif(null!==(h=u?a.geometries[g]:a)){l=h.coordinates;var x=h.type;switch(c=!e||\"Polygon\"!==x&&\"MultiPolygon\"!==x?0:1,x){case null:break;case\"Point\":if(!1===i(l,f,v,M,b))return!1;f++,M++;break;case\"LineString\":case\"MultiPoint\":for(s=0;s<l.length;s++){if(!1===i(l[s],f,v,M,b))return!1;f++,\"MultiPoint\"===x&&M++}\"LineString\"===x&&M++;break;case\"Polygon\":case\"MultiLineString\":for(s=0;s<l.length;s++){for(r=0;r<l[s].length-c;r++){if(!1===i(l[s][r],f,v,M,b))return!1;f++}\"MultiLineString\"===x&&M++,\"Polygon\"===x&&b++}\"Polygon\"===x&&M++;break;case\"MultiPolygon\":for(s=0;s<l.length;s++){for(b=0,r=0;r<l[s].length;r++){for(n=0;n<l[s][r].length-c;n++){if(!1===i(l[s][r][n],f,v,M,b))return!1;f++}b++}M++}break;case\"GeometryCollection\":for(s=0;s<h.geometries.length;s++)if(!1===y(h.geometries[s],i,e))return!1;break;default:throw new Error(\"Unknown Geometry Type\")}}}}}\n/**\n * Takes a set of features, calculates the bbox of all input features, and returns a bounding box.\n *\n * @name bbox\n * @param {GeoJSON} geojson any GeoJSON object\n * @returns {BBox} bbox extent in [minX, minY, maxX, maxY] order\n * @example\n * var line = turf.lineString([[-74, 40], [-78, 42], [-82, 35]]);\n * var bbox = turf.bbox(line);\n * var bboxPolygon = turf.bboxPolygon(bbox);\n *\n * //addToMap\n * var addToMap = [line, bboxPolygon]\n */function m(t){var i=[1/0,1/0,-1/0,-1/0];return y(t,(function(t){i[0]>t[0]&&(i[0]=t[0]),i[1]>t[1]&&(i[1]=t[1]),i[2]<t[0]&&(i[2]=t[0]),i[3]<t[1]&&(i[3]=t[1])})),i}\n// http://en.wikipedia.org/wiki/Even%E2%80%93odd_rule\n// modified from: https://github.com/substack/point-in-polygon/blob/master/index.js\n// which was modified from http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n/**\n * Takes a {@link Point} and a {@link Polygon} or {@link MultiPolygon} and determines if the point\n * resides inside the polygon. The polygon can be convex or concave. The function accounts for holes.\n *\n * @name booleanPointInPolygon\n * @param {Coord} point input point\n * @param {Feature<Polygon|MultiPolygon>} polygon input polygon or multipolygon\n * @param {Object} [options={}] Optional parameters\n * @param {boolean} [options.ignoreBoundary=false] True if polygon boundary should be ignored when determining if\n * the point is inside the polygon otherwise false.\n * @returns {boolean} `true` if the Point is inside the Polygon; `false` if the Point is not inside the Polygon\n * @example\n * var pt = turf.point([-77, 44]);\n * var poly = turf.polygon([[\n * [-81, 41],\n * [-81, 47],\n * [-72, 47],\n * [-72, 41],\n * [-81, 41]\n * ]]);\n *\n * turf.booleanPointInPolygon(pt, poly);\n * //= true\n */\nfunction w(t,i,e){\n// validation\nif(void 0===e&&(e={}),!t)throw new Error(\"point is required\");if(!i)throw new Error(\"polygon is required\");var s,r=\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array<number>|Geometry<Point>|Feature<Point>} coord GeoJSON Point or an Array of numbers\n * @returns {Array<number>} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction(t){if(!t)throw new Error(\"coord is required\");if(!Array.isArray(t)){if(\"Feature\"===t.type&&null!==t.geometry&&\"Point\"===t.geometry.type)return t.geometry.coordinates;if(\"Point\"===t.type)return t.coordinates}if(Array.isArray(t)&&t.length>=2&&!Array.isArray(t[0])&&!Array.isArray(t[1]))return t;throw new Error(\"coord must be GeoJSON Point or an Array of numbers\")}\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */(t),n=\"Feature\"===(s=i).type?s.geometry:s,h=n.type,o=i.bbox,l=n.coordinates;\n// Quick elimination if point is not inside bbox\nif(o&&!1===\n/**\n * inBBox\n *\n * @private\n * @param {Position} pt point [x,y]\n * @param {BBox} bbox BBox [west, south, east, north]\n * @returns {boolean} true/false if point is inside BBox\n */\nfunction(t,i){return i[0]<=t[0]&&i[1]<=t[1]&&i[2]>=t[0]&&i[3]>=t[1]}\n/**\n * Takes one or more features and calculates the centroid using the mean of all vertices.\n * This lessens the effect of small islands and artifacts when calculating the centroid of a set of polygons.\n *\n * @name centroid\n * @param {GeoJSON} geojson GeoJSON to be centered\n * @param {Object} [options={}] Optional Parameters\n * @param {Object} [options.properties={}] an Object that is used as the {@link Feature}'s properties\n * @returns {Feature<Point>} the centroid of the input features\n * @example\n * var polygon = turf.polygon([[[-81, 41], [-88, 36], [-84, 31], [-80, 33], [-77, 39], [-81, 41]]]);\n *\n * var centroid = turf.centroid(polygon);\n *\n * //addToMap\n * var addToMap = [polygon, centroid]\n */(r,o))return!1;\n// normalize to multipolygon\n\"Polygon\"===h&&(l=[l]);for(var a=!1,u=0;u<l.length&&!a;u++)\n// check if it is in the outer ring first\nif(v(r,l[u][0],e.ignoreBoundary)){\n// check for the point in any of the holes\nfor(var c=!1,f=1;f<l[u].length&&!c;)v(r,l[u][f],!e.ignoreBoundary)&&(c=!0),f++;c||(a=!0)}return a}\n/**\n * inRing\n *\n * @private\n * @param {Array<number>} pt [x,y]\n * @param {Array<Array<number>>} ring [[x,y], [x,y],..]\n * @param {boolean} ignoreBoundary ignoreBoundary\n * @returns {boolean} inRing\n */function v(t,i,e){var s=!1;i[0][0]===i[i.length-1][0]&&i[0][1]===i[i.length-1][1]&&(i=i.slice(0,i.length-1));for(var r=0,n=i.length-1;r<i.length;n=r++){var h=i[r][0],o=i[r][1],l=i[n][0],a=i[n][1];if(t[1]*(h-l)+o*(l-t[0])+a*(t[0]-h)==0&&(h-t[0])*(l-t[0])<=0&&(o-t[1])*(a-t[1])<=0)return!e;o>t[1]!=a>t[1]&&t[0]<(l-h)*(t[1]-o)/(a-o)+h&&(s=!s)}return s}m.default=m;const g=(t,i,e)=>{let s,r,n,h=null,o=0;e||(e={});let l=function(){o=!1===e.leading?0:Date.now(),h=null,n=t.apply(r,s),h||(r=s=null)};return function(){let a=Date.now();o||!1!==e.leading||(o=a);let u=i-(a-o);return r=this,s=arguments,u<=0||u>i?(h&&(clearTimeout(h),h=null),o=a,n=t.apply(r,s),h||(r=s=null)):h||!1===e.trailing||(h=setTimeout(l,u)),n}},M=Math.fround||(b=new Float32Array(1),t=>(b[0]=+t,b[0]));var b;const x=(t,i,e)=>t.reduce(((t,s,r)=>{let n=i(s);return n=null==n||\"\"===n?\"undefined\":n,t[n]||(t[n]=[]),e.type&&e.zoom&&(s[\"_inner_\"+e.type+\"_\"+e.zoom]=n),s.id=r,t[n].push(s),t}),{}),A=t=>({fence:!0,bbox:m(t),center:L(t)}),E=(t,i)=>m(i?{type:\"FeatureCollection\",features:[{type:\"Feature\",properties:{},geometry:{type:\"Polygon\",coordinates:[t]}}]}:{type:\"FeatureCollection\",features:t}),L=t=>function(t,i){void 0===i&&(i={});var e=0,s=0,r=0;return y(t,(function(t){e+=t[0],s+=t[1],r++}),!0),\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array<number>} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array<number>} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature<Point>} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction(t,i,e){if(void 0===e&&(e={}),!t)throw new Error(\"coordinates is required\");if(!Array.isArray(t))throw new Error(\"coordinates must be an Array\");if(t.length<2)throw new Error(\"coordinates must be at least 2 numbers long\");if(!p(t[0])||!p(t[1]))throw new Error(\"coordinates must contain numbers\");return function(t,i,e){void 0===e&&(e={});var s={type:\"Feature\"};return(0===e.id||e.id)&&(s.id=e.id),e.bbox&&(s.bbox=e.bbox),s.properties=i||{},s.geometry=t,s}({type:\"Point\",coordinates:t},i,e)}([e/r,s/r],i.properties)}(t).geometry.coordinates,C=t=>{if(!t||!Array.isArray(t)||t.length<2)return[];let i=[t[0],t[1]];for(let e=2;e<t.length-1;e+=2)t[e]!==i[e-2]&&t[e+1]!==i[e-1]&&i.push(t[e],t[e+1]);return i},k=t=>t/360+.5,_=t=>{const i=Math.sin(t*Math.PI/180),e=.5-.25*Math.log((1+i)/(1-i))/Math.PI;return e<0?0:e>1?1:e};class T{constructor(){}}var G;!function(t){t[t.NONE=0]=\"NONE\",t[t.INNER=1]=\"INNER\",t[t.OUT=2]=\"OUT\",t[t.ALL=3]=\"ALL\"}(G||(G={}));class B{constructor(t,e=!1){this.trees={},this.nodeSize=64,this.isSort=!0,this.splitChar=\"*.*\",this.OFFSET_ZOOM=2,this.OFFSET_ID=3,this.OFFSET_PARENT=4,this.OFFSET_NUM=5,this.OFFSET_PROP=6,this.ZOOM_BITS=5,this.mapping=new Map,this.geo_refs=new Map,this.key_refs=new Map,this.cluster_geo_refs=new Map,this.own=t,this.showLog=e,this.reduceType=this.isClusterReduce(),this.stride=this.reduceType!==G.NONE?7:6,this.reduceType&G.INNER&&(this.innerReduce=(t,i)=>{var e,s,r;this.weightKey&&(t.weight_list||(t.weight_list=[null!==(e=t.weight)&&void 0!==e?e:1]),t.weight_list.push(null!==(s=null==i?void 0:i.weight)&&void 0!==s?s:1)),this.typeKey&&(t.divide_type=null!==(r=null==i?void 0:i.divide_type)&&void 0!==r?r:\"unknown\")},this.innerMap=t=>{var i,e,s,r;let n={};return this.weightKey&&(\"function\"==typeof this.weightKey?n.weight=null!==(i=this.weightKey(t))&&void 0!==i?i:1:n.weight=t?null!==(e=t[this.weightKey])&&void 0!==e?e:1:null),this.typeKey&&(\"function\"==typeof this.typeKey?n.divide_type=null!==(s=this.typeKey(t))&&void 0!==s?s:\"unknown\":n.divide_type=t?null!==(r=t[this.typeKey])&&void 0!==r?r:\"unknown\":null),n}),this.createZoomMapping(),this.own.on(i.DESTROY,(()=>{this.reset(),this.mapping.clear()}))}isClusterReduce(){let t=this.own.getOptions().clusterPointWeight,i=this.own.getOptions().clusterPointType;return t||i?(t&&(this.weightKey=t),i&&(this.typeKey=i),this.own.getOptions().clusterReduce?G.ALL:G.INNER):this.own.getOptions().clusterReduce?G.OUT:G.NONE}createZoomMapping(){let t=this.own.getOptions().clusterType;t&&0!==t.length&&(t.forEach((t=>{let[i,s,r,n,h]=t;if(s=null!=s?s:this.own.getOptions().clusterMaxZoom,r===e.GEO_FENCE||r===e.ATTR_REF)this.mapping.set(i,[null!=h?h:s,r,n]);else if(h)this.mapping.set(i,[h,e.DIS_PIXEL,n]);else for(var o=i;o<=s;o++)this.mapping.set(o,[o,e.DIS_PIXEL,n])})),this.showLog)}getClusterType(t){let i,s=e.DIS_PIXEL;for(let[r,n]of[...this.mapping.entries()].reverse())if(r<=t){s=n[1],i=s===e.ATTR_REF&&n[2]instanceof Array?n[2][n[2].length-1]:n[2];break}return{type:s,name:i}}getClusterZoom(t){let i=this.l(t);for(let[e]of[...this.mapping.entries()].reverse())if(e<=t){i=e;break}return i}getClusterTree(t){let i=this.getClusterZoom(t);const{clusterMaxZoom:e=21}=this.own.getOptions();return i<t&&e+1===t&&(i=e+1),this.trees[i]}createClusters(t){this.reset(),this.points=t.filter((t=>{if(t.geometry){const[i,e]=t.geometry.coordinates;if(!isNaN(i)&&!isNaN(e)&&i>=-180&&i<=180&&e>=-90&&e<=90)return!0}return!1}));const{clusterMinZoom:i=3,clusterMaxZoom:s=21}=this.own.getOptions();t.length,this.showLog;const r=[];for(let t=0;t<this.points.length;t++){const i=this.points[t];if(!i.geometry)continue;const[e,s]=i.geometry.coordinates,n=M(e),h=M(s);r.push(n,h,1/0,t,-1,1),this.reduceType!==G.NONE&&r.push(-1)}let n=this.trees[s+1]=this.u(new Float32Array(r));for(let t=s;t>=i;t--){Date.now();const i=this.getClusterZoom(t);if(this.mapping.has(i)){if(this.trees[i])continue;let t,[s,r,h]=this.mapping.get(i);switch(r){case e.GEO_FENCE:t=this.p(s,h);break;case e.ATTR_REF:t=this.m(s,h);break;default:t=this.v(n,s,h)}n=this.trees[i]=this.u(t)}else n=this.trees[i]=this.u(this.v(n,i));this.showLog}this.showLog}u(t){const i=new l(t.length/this.stride|0,this.nodeSize,Float32Array);for(let e=0;e<t.length;e+=this.stride)i.add(k(t[e]),_(t[e+1]));return i.finish(),i.data=t,i}m(t,i){let s=x(this.points,(t=>{if(!t.properties)return null;let s=null;if(i instanceof Array?i.forEach((i=>{var e;(null===(e=t.properties)||void 0===e?void 0:e.hasOwnProperty(i))&&(null===s?s=t.properties[i]:s+=this.splitChar+t.properties[i])})):s=t.properties[i],this.own.getOptions().clusterDictionary&&s&&!this.geo_refs.has(s)){let t=this.own.getOptions().clusterDictionary(e.ATTR_REF,s);t&&t.point&&this.geo_refs.set(s,t)}return s}),{zoom:t,type:e.ATTR_REF});return this.showLog,this.M(e.ATTR_REF,s,t)}p(t,i){let s=new Map;if(this.own.getOptions().clusterDictionary){let t=i;t instanceof Array||(t=[t]),t.forEach((t=>{if(this.geo_refs.has(t))s.set(t,this.geo_refs.get(t));else{this.showLog;let i=this.own.getOptions().clusterDictionary(e.GEO_FENCE,t);i&&i.region&&(i.point||(i.point=L(i.region)),this.geo_refs.set(t,i),s.set(t,i))}}))}let r=x(this.points,(t=>((t,i,e)=>{let s=null;for(let[e,r]of t)if(w(i,{type:\"Feature\",geometry:{type:\"Polygon\",coordinates:[r.region]}})){s=e;break}return s})(s,t)),{zoom:t,type:e.GEO_FENCE});return this.showLog,this.M(e.GEO_FENCE,r,t)}M(t,i,s){let r=[];const{clusterMinPoints:n=3,clusterReduce:h}=this.own.getOptions();for(const o in i)if(i.hasOwnProperty(o)){let l=i[o];if(\"undefined\"===o||l.length<n)l.forEach((t=>{var i;const[e,s]=t.geometry.coordinates,n=e,h=s;r.push(n,h,1/0,+(null!==(i=t.id)&&void 0!==i?i:0),-1,1),this.reduceType!==G.NONE&&r.push(-1)}));else{let i,a=-1;l.forEach(((t,e)=>{if(this.reduceType!==G.NONE){let s={};if(this.reduceType&G.INNER&&(s=this.innerMap(t.properties)),h){let i=this.own.getOptions().clusterMap(t.properties);Object.assign(s,i)}i?(this.reduceType&G.INNER&&(this.innerReduce(i,Object.assign({},s)),e===l.length-1&&this.A(i)),h&&h(i,Object.assign({},s))):(i=Object.assign({},s),a=this.clusterProps.length,this.clusterProps.push(i))}}));let u=(l[0].id<<this.ZOOM_BITS)+(s+1)+this.points.length,c=o.split(this.splitChar);if(this.key_refs.set(u,c[c.length-1]),this.geo_refs.has(o)){let i=this.geo_refs.get(o),s=i.point;r.push(s[0],s[1],1/0,u,-1,l.length),t===e.GEO_FENCE?this.cluster_geo_refs.set(u,{bbox:E(i.region,!0)}):this.cluster_geo_refs.set(u,{bbox:E(l,!1)})}else{let{fence:t,bbox:i,center:e}=A({type:\"FeatureCollection\",features:l});C(i).length<=2||i[0]===1/0||!t?(n>1&&(u=l[0].id),r.push(e[0],e[1],1/0,u,-1,1)):r.push(e[0],e[1],1/0,u,-1,l.length),this.cluster_geo_refs.set(u,{bbox:i})}this.reduceType!==G.NONE&&r.push(a)}}return r}v(t,i,e){var s,r,n;const{clusterRadius:h=60,tileSize:o=256,clusterMinPoints:l=3,clusterReduce:a}=this.own.getOptions(),u=(void 0===e?h:e)/(o*Math.pow(2,i-1)),c=t.data,f=[],d=this.stride;for(let e=0;e<c.length;e+=d){if(c[e+this.OFFSET_ZOOM]<=i)continue;c[e+this.OFFSET_ZOOM]=i;const h=c[e],o=c[e+1];let p=t.within(k(c[e]),_(c[e+1]),u);if(this.showLog,this.typeKey){let t=null!==(r=null===(s=this.L(c,e))||void 0===s?void 0:s.divide_type)&&void 0!==r?r:\"unknown\";p=p.filter((i=>{var e,s;const r=i*d;let n=null!==(s=null===(e=this.L(c,r))||void 0===e?void 0:e.divide_type)&&void 0!==s?s:\"unknown\";return n!=t&&this.showLog,n===t}))}this.showLog;const y=c[e+this.OFFSET_NUM];let m=y;for(const t of p){const e=t*d;c[e+this.OFFSET_ZOOM]>i&&(m+=c[e+this.OFFSET_NUM])}if(m>y&&m>=l){let t,s=-1,r=[[h,o]],l=[y];this.reduceType!==G.NONE&&(t||(t=this.L(c,e,!0),s=this.clusterProps.length,this.clusterProps.push(t)));const u=(e/d<<this.ZOOM_BITS)+(i+1)+this.points.length;for(let e=0;e<p.length;++e){const s=p[e]*d;if(c[s+this.OFFSET_ZOOM]<=i)continue;let n;c[s+this.OFFSET_ZOOM]=i,this.reduceType!==G.NONE&&t&&(n=this.L(c,s),this.reduceType&G.INNER&&this.innerReduce(t,n),a&&a(t,n));let h=c[s+this.OFFSET_NUM];l.push(h),r.push([c[s],c[s+1]]),c[s+this.OFFSET_PARENT]=u}c[e+this.OFFSET_PARENT]=u,this.cluster_geo_refs.set(u,{bbox:E(r,!0)});let[w,v]=this.C(r,l,null!==(n=null==t?void 0:t.weight_list)&&void 0!==n?n:[]);f.push(w,v,1/0,u,-1,m),this.reduceType&G.INNER&&t&&this.weightKey&&this.A(t),this.reduceType!==G.NONE&&f.push(s)}else{for(let t=0;t<d;t++)f.push(c[e+t]);if(m>1)for(const t of p){const e=t*d;if(!(c[e+this.OFFSET_ZOOM]<=i)){c[e+this.OFFSET_ZOOM]=i;for(let t=0;t<d;t++)f.push(c[e+t])}}}}return f}C(t,i,e){let s=0,n=0,h=0,o=this.own.getOptions().clusterPointLocationType;if(0===e.length)o=r.COUNT_AVERAGE;else if(t.length!==e.length)throw new Error(\"weight_list length not equal clusterPoints length\");switch(o){case r.WEIGHT_MAX:let o=e.reduce(((t,i,s)=>i>e[t]?s:t),0);s=t[o][0],n=t[o][1];break;case r.WEIGHT_AVERAGE:h=0,e.forEach((t=>{h+=t}));for(let i=0;i<t.length;i++)s+=t[i][0]*e[i],n+=t[i][1]*e[i];s/=h,n/=h;break;case r.COUNT_AVERAGE:h=0,i.forEach((t=>{h+=t}));for(let e=0;e<t.length;e++)s+=t[e][0]*i[e],n+=t[e][1]*i[e];s/=h,n/=h;break;default:for(let i=0;i<t.length;i++)s+=t[i][0],n+=t[i][1];s/=t.length,n/=t.length}return[s,n]}A(t){let i=0;switch(this.own.getOptions().clusterPointWeightType){case s.AVERAGE:t.weight_list.forEach((t=>{i+=t})),i/=t.weight_list.length;break;case s.MAX:t.weight_list.forEach((t=>{i<t&&(i=t)}));break;case s.SUM:t.weight_list.forEach((t=>{i+=t}));break;default:i=1}delete t.weight_list,t.weight=i}k(t){return t-this.points.length>>this.ZOOM_BITS}_(t){return(t-this.points.length)%32}L(t,i,e){if(t[i+this.OFFSET_NUM]>1){const s=this.clusterProps[t[i+this.OFFSET_PROP]];return e?Object.assign({},s):s}const s=this.points[t[i+this.OFFSET_ID]].properties;let r={};if(this.reduceType&G.INNER&&(r=this.innerMap(s)),this.own.getOptions().clusterReduce){let t=this.own.getOptions().clusterMap(s);Object.assign(r,t)}return e&&r===s?Object.assign({},r):r}l(t){var i,e;let s=this.own.getOptions();return Math.max(null!==(i=s.clusterMinZoom)&&void 0!==i?i:3,Math.min(Math.floor(+t),(null!==(e=s.clusterMaxZoom)&&void 0!==e?e:21)+1))}getClusters(t,i){var s;if(this.isIllegal(t))return[[],[]];let r=((i[0]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,i[1]));let h=180===i[2]?180:((i[2]+180)%360+360)%360-180;const o=Math.max(-90,Math.min(90,i[3]));if(i[2]-i[0]>=360)r=-180,h=180;else if(r>h){const i=this.getClusters(t,[r,n,180,o]),e=this.getClusters(t,[-180,n,h,o]);return[[...i[0],...e[0]],[...i[1],...e[1]]]}let l=this.getClusterZoom(t);const a=this.getClusterTree(t);if(!a)return[[],[]];const{type:u,name:c}=this.getClusterType(t),f=a.range(k(r),_(o),k(h),_(n)),d=a.data,p=[],y=[];this.showLog;for(const t of f){const i=this.stride*t;if(this.showLog,d[i+this.OFFSET_NUM]>=this.own.getOptions().clusterMinPoints){let r=this.getClusterJSON(d,i,this.clusterProps);r.properties||(r.properties={}),r.properties.listChildren=this.getLeaves(d[i+this.OFFSET_ID],[],null!==(s=this.own.getOptions().clusterListChildren)&&void 0!==s?s:-1),r.properties.clusterIndex=(t<<this.ZOOM_BITS)+l,r.properties.allCount=this.points.length,r.properties.type=u,u!==e.GEO_FENCE&&u!==e.ATTR_REF||this.key_refs.has(d[i+this.OFFSET_ID])&&(r.properties.belongKey=c,r.properties.belongValue=this.key_refs.get(d[i+this.OFFSET_ID])),p.push(r)}else{let t=d[i+this.OFFSET_ID],e=this.points[t];e.id=t,e.properties?e.properties.listChildren=[]:e.properties={listChildren:[]},e.properties?e.properties.clusterId=t:e.properties={clusterId:t},e.properties?e.properties.allCount=this.points.length:e.properties={allCount:this.points.length},e.properties?e.properties.parentId=d[i+this.OFFSET_PARENT]:e.properties={parentId:d[i+this.OFFSET_PARENT]},y.push(e)}}return this.isSort&&p.sort(((t,i)=>{var e,s;return(null===(e=t.properties)||void 0===e?void 0:e.pointCount)-(null===(s=i.properties)||void 0===s?void 0:s.pointCount)})),[y,p]}getElementById(t,i,s){let r=s?i>>this.ZOOM_BITS:i,n=new T;n.id=t,n.index=r;let h=s?i&(1<<this.ZOOM_BITS)-1:this._(t)-1,{type:o,name:l}=this.getClusterType(h);if(n.type=o,t<=this.points.length)n.isCluster=!1,n.properties=this.points[t].properties,n.latLng=this.points[t].geometry.coordinates;else{n.isCluster=!0;let i=this.getClusterTree(h),s=i.data;if(i){let i=r*this.stride;this.showLog,n.latLng=[s[i],s[i+1]],n.pointCount=s[i+this.OFFSET_NUM],n.parentId=s[i+this.OFFSET_PARENT],o!==e.GEO_FENCE&&o!==e.ATTR_REF||this.key_refs.has(t)&&(n.belongKey=l,n.belongValue=this.key_refs.get(t)),this.reduceType!==G.NONE&&(n.reduces=this.clusterProps[s[i+this.OFFSET_PROP]]);const h=this.getLeaves(t,[],1/0);if(h&&h.length>0){const i=h.map((t=>t.latLng));i.length>0?(n.bbox=E(i,!0),this.showLog):this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox)}else this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox)}}return!n.bbox&&this.cluster_geo_refs.has(t)&&(n.bbox=this.cluster_geo_refs.get(t).bbox),this.showLog,n}getUnDistanceBrothers(t,i,e,s,r){let n=this.k(t),h=this.points[n],o=h?h[\"_inner_\"+i+\"_\"+s]:void 0,l=[];return o&&(l=this.points.filter((t=>!!t&&t[\"_inner_\"+i+\"_\"+s]===o))),l.slice(0,r).map((t=>{let e=new T;return e.id=t.id,e.index=t.id,e.type=i,e.isCluster=!1,e.properties=this.points[t.id].properties,e.latLng=this.points[t.id].geometry.coordinates,e}))}getLeaves(t,i=[],s){if(void 0===s&&(s=1/0),s<=0)return[];i||(i=[]);let r=this._(t)-1,{type:n,name:h}=this.getClusterType(r);if(n===e.GEO_FENCE||n===e.ATTR_REF)return this.getUnDistanceBrothers(t,n,h,r,s);if(t>this.points.length){let e=this.getClusterTree(r+1),n=e.data;if(e)for(let e=0;e<n.length/this.stride;e++){let r=e*this.stride+this.OFFSET_ID;if(n[e*this.stride+this.OFFSET_PARENT]===t)if(n[r]<=this.points.length){if(!(i.length<s))break;{let t=this.getElementById(n[r],e);i.push(t)}}else this.getLeaves(n[r],i,s)}}return i}getChildNodes(t){let i=[];if(t<=this.points.length)i=[];else{let e=this._(t)-1,s=this.getClusterTree(e+1),r=s.data;if(s)for(let e=0;e<r.length/this.stride;e++)if(r[e*this.stride+this.OFFSET_PARENT]===t){let s=this.getElementById(r[e*this.stride+this.OFFSET_ID],e);s.parentId=t,i.push(s)}}return i}getClusterJSON(t,i,e){return{type:\"Feature\",id:t[i+this.OFFSET_ID],properties:this.getClusterProperties(t,i,e),geometry:{type:\"Point\",coordinates:[t[i],t[i+1]]}}}getClusterProperties(t,i,e){const s=t[i+this.OFFSET_NUM],r=s>=1e4?`${Math.round(s/1e3)}k`:s>=1e3?Math.round(s/100)/10+\"k\":s;let n={};if(this.reduceType!==G.NONE){const s=t[i+this.OFFSET_PROP];n=-1===s?{}:Object.assign({},{reduces:e[s]})}return Object.assign(n,{isCluster:!0,clusterId:t[i+this.OFFSET_ID],parentId:t[i+this.OFFSET_PARENT],point:[t[i],t[i+1]],pointCount:s,pointCountAbbrev:r})}isIllegal(t){var i,e;let s=null!==(i=this.own.getOptions().minZoom)&&void 0!==i?i:3,r=null!==(e=this.own.getOptions().maxZoom)&&void 0!==e?e:23;return t<s||t>r}reset(){this.points=[],this.clusterProps=[],this.trees={},this.geo_refs.clear(),this.key_refs.clear(),this.cluster_geo_refs.clear()}}class P{constructor(t,i,e,s){this.T=600,this.G=[12,12,12,12],this.own=t,this.engine=i,this.map=e,this.showLog=s;let r=this.own.getOptions().fitViewMargin;r&&(this.G=r),this.register(),this.createLayers()}register(){this.own.getOptions().updateRealTime?(this.T=this.own.getOptions().waitTime||300,this.map.addEventListener(\"update\",this.B=g(this.mapStatusChange.bind(this),this.T,{leading:!0,trailing:!1}))):this.map.addEventListener(\"mapstatusidle_inner\",this.B=this.mapStatusChange.bind(this)),this.map.addEventListener(\"destroy\",(()=>{this.own.destroy()})),this.own.on(i.DESTROY,(()=>{this.destroy()}))}unregister(){this.own.getOptions().updateRealTime?this.map.removeEventListener(\"update\",this.B):this.map.removeEventListener(\"mapstatusidle_inner\",this.B),this.B=()=>{}}mapStatusChange(t){let e=this.map.getZoom(),s=this.map.getBounds(),r=s.getSouthWest(),n=s.getNorthEast();this.showLog;let h=this.engine.getClusters(e,[r.lng,r.lat,n.lng,n.lat]);this.own.fire(i.CHANGE,h),this.own.isRender&&this.update(h)}update(t){if(this.showLog,this.own.getOptions().isAnimation){if(!(this.multi_layer instanceof BMapGL.CustomHtmlLayer))throw new Error(\"isAnimation is true, but renderClusterStyle is not dom type\");this.render([...t[0],...t[1]],h.MULTI)}else this.render(t[0],h.SINGLE),this.render(t[1],h.MULTI)}render(t,i){this.showLog,this.showLog;let e={type:\"FeatureCollection\",features:t},s=i===h.MULTI?this.multi_layer:this.single_layer;s&&(t.length>0&&(null==s||s.setData(e)),0===t.length&&(null==s||s.clearData()))}createLayers(){var t,i;(null===(t=this.own.getOptions().renderSingleStyle)||void 0===t?void 0:t.type)===n.DOM?this.single_layer=this.createLayer(h.SINGLE,n.DOM):this.single_layer=this.createLayer(h.SINGLE,n.WEBGL),(null===(i=this.own.getOptions().renderClusterStyle)||void 0===i?void 0:i.type)===n.DOM?this.multi_layer=this.createLayer(h.MULTI,n.DOM):this.multi_layer=this.createLayer(h.MULTI,n.WEBGL)}createLayer(t,e){this.showLog;let s,r=this.own.getOptions(),o=t===h.MULTI?r.renderClusterStyle:r.renderSingleStyle;if(!o)return;if(e===n.DOM){let i={sliceRepeat:!0,minZoom:this.own.getOptions().minZoom,maxZoom:this.own.getOptions().maxZoom,zIndex:t===h.MULTI?10:9,nextTick:!0,fixBottom:!0,useTranslate:!!this.own.getOptions().isAnimation,anchors:[.5,.5],displayType:\"normal\",enableDraggingMap:!0};this.own.getOptions().isAnimation&&(i.displayType=\"cluster\"),Object.assign(i,o.style);const e=new BMapGL.CustomHtmlLayer(o.inject,i);this.map.addCustomHtmlLayer(e),s=e}else{let i=1.2*(r.clusterRadius||32),e={iconObj:(t,i)=>({canvas:(null==o?void 0:o.inject)(i),id:i.clusterId}),sizes:[i,i/2],scale:1,userSizes:!1,anchors:[0,0],width:i,height:i/2};Object.assign(e,o.style);let n={icon:\"https://webmap0.bdimg.com/image/api/marker_red.png\",sizes:[8,8],anchors:[0,-1],userSizes:!1,width:[\"match\",[\"get\",\"type\"],0,16,8],height:[\"match\",[\"get\",\"type\"],0,16,8]};Object.assign(n,o.style);const l=new BMapGL.PointIconLayer({minZoom:this.own.getOptions().minZoom,maxZoom:this.own.getOptions().maxZoom,zIndex:t===h.MULTI?10:9,isTop:!1,enablePicked:!0,autoSelect:!1,pickWidth:30,pickHeight:30,opacity:1,isFlat:!1,isFixed:!0,style:t===h.MULTI?e:n});this.map.addNormalLayer(l),s=l}s.addEventListener(\"click\",(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer&&!t.value.dataItem)return;let e=this.getElementByEvent(t);e.bbox&&Array.isArray(e.bbox)&&e.bbox[0]!==1/0&&this.fitView(e.bbox),this.own.fire(i.CLICK,e)}));let l=e===n.DOM?\"mouseover\":\"mousemove\";return s.addEventListener(l,(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer&&!t.value.dataItem)return void(this.P&&(this.own.fire(i.MOUSE_OUT,this.P),this.P=null));let e=this.getElementByEvent(t);if(t.target instanceof BMapGL.PointIconLayer)return this.P&&this.P.id===e.id||this.own.fire(i.MOUSE_OVER,e),void(this.P=e);this.own.fire(i.MOUSE_OVER,e)})),s.addEventListener(\"mouseout\",(t=>{if(this.showLog,t.target instanceof BMapGL.PointIconLayer)return;let e=this.getElementByEvent(t);this.own.fire(i.MOUSE_OUT,e)})),s}getElementByEvent(t){var i,e;let s,r,n=[];if(t.target instanceof BMapGL.CustomOverlay){let e=t.target.properties||{};s=e.clusterId,r=e.clusterIndex,n=null!==(i=e.listChildren)&&void 0!==i?i:[]}else{let i=t.value.dataItem.properties||{};s=i.clusterId,r=i.clusterIndex,n=null!==(e=i.listChildren)&&void 0!==e?e:[]}let h=this.engine.getElementById(s,r,!0);return h.listChildren=n,h.pixel=[t.pixel.x,t.pixel.y],h.target=t.target,h}clearRender(){this.showLog,this.update([[],[]])}unrender(){this.showLog,this.multi_layer instanceof BMapGL.PointIconLayer?this.map.removeNormalLayer(this.multi_layer):this.map.removeCustomHtmlLayer(this.multi_layer),this.single_layer instanceof BMapGL.PointIconLayer?this.map.removeNormalLayer(this.single_layer):this.map.removeCustomHtmlLayer(this.single_layer),this.multi_layer=void 0,this.single_layer=void 0}fitView(t){if(this.showLog,this.own.getOptions().fitViewOnClick){let i=this.map.getZoom(),e=[new BMapGL.Point(t[0],t[1]),new BMapGL.Point(t[2],t[3])],s={margins:this.G,enableAnimation:!0};this.map.setViewport(e,s),setTimeout((()=>{i===this.map.getZoom()&&this.map.setZoom(i+1),this.mapStatusChange()}),300)}}show(){this.single_layer&&(this.single_layer instanceof BMapGL.CustomHtmlLayer&&this.single_layer.show(),this.single_layer instanceof BMapGL.PointIconLayer&&this.single_layer.setVisible(!0)),this.multi_layer&&(this.multi_layer instanceof BMapGL.CustomHtmlLayer&&this.multi_layer.show(),this.multi_layer instanceof BMapGL.PointIconLayer&&this.multi_layer.setVisible(!0))}hide(){this.single_layer&&(this.single_layer instanceof BMapGL.CustomHtmlLayer&&this.single_layer.hide(),this.single_layer instanceof BMapGL.PointIconLayer&&this.single_layer.setVisible(!1)),this.multi_layer&&(this.multi_layer instanceof BMapGL.CustomHtmlLayer&&this.multi_layer.hide(),this.multi_layer instanceof BMapGL.PointIconLayer&&this.multi_layer.setVisible(!1))}getSingleLayer(){return this.single_layer}getClusterLayer(){return this.multi_layer}drawMarker(t){this.map.addOverlay(new BMapGL.Marker(new BMapGL.Point(t[0],t[1])))}destroy(){this.map&&(this.unregister(),this.unrender())}}\nreturn Object.freeze({__proto__:null,get ClusterData(){return h},ClusterElement:T,get ClusterEvent(){return i},get ClusterRender(){return n},get ClusterType(){return e},get LocCountType(){return r},get PointWeightType(){return s},View:class extends t{constructor(t,i){if(super(),this.Z=!1,!t)throw new Error(\"map is required\");i&&this.verifyOptions(i);const e={tileSize:256,minZoom:3,maxZoom:21,clusterRadius:30,clusterMinZoom:3,clusterMaxZoom:16,clusterMinPoints:2,clusterListChildren:0,clusterPointWeight:void 0,clusterPointWeightType:s.SUM,clusterPointLocationType:r.WEIGHT_AVERAGE,clusterPointType:void 0,clusterMap:t=>({}),clusterReduce:void 0,clusterType:void 0,clusterDictionary:void 0,isRender:!0,isAnimation:!1,renderClusterStyle:{type:n.DOM,style:{},inject:t=>{var i=Math.pow(t.pointCount/t.allCount,.1),e=document.createElement(\"div\"),s=180-180*i,r=\"hsla(\"+s+\",100%,30%,0.7)\",n=\"hsla(\"+s+\",100%,90%,1)\",h=\"hsla(\"+s+\",100%,30%,1)\",o=\"hsla(\"+s+\",100%,90%,1)\";e.style.backgroundColor=r;var l=Math.round(25+30*Math.pow(t.pointCount/t.allCount,1/6));return e.style.width=e.style.height=l+\"px\",e.style.border=\"solid 1px \"+h,e.style.borderRadius=l/2+\"px\",e.style.boxShadow=\"0 0 5px \"+o,e.innerHTML=t.pointCount,e.style.lineHeight=l+\"px\",e.style.color=n,e.style.fontSize=\"14px\",e.style.textAlign=\"center\",e.style.cursor=\"pointer\",e}},renderSingleStyle:{type:n.WEBGL,style:{},inject:t=>document.createElement(\"canvas\")},fitViewOnClick:!0,fitViewMargin:void 0,updateRealTime:!1,waitTime:300};this.options=Object.assign(e,i),this.engine=new B(this,this.Z),this.render=new P(this,this.engine,t,this.Z),this.isRender=this.options.isRender||!1}setData(t){this.Z,this.engine.createClusters(t),this.redraw()}getSingleLayer(){return this.render.getSingleLayer()}getClusterLayer(){return this.render.getClusterLayer()}getLeaves(t,i){return this.engine.getLeaves(t,[],i)}getSonNodes(t){return this.engine.getChildNodes(t)}redraw(){this.render.mapStatusChange()}show(){this.render.show()}hide(){this.render.hide()}destroy(){this.fire(i.DESTROY)}get isRender(){return this.O}set isRender(t){this.O=t,!t&&this.render.clearRender()}getOptions(){return this.options}verifyOptions(t){var i,e;if(t.minZoom&&t.minZoom<3)throw new Error(\"minZoom must be greater than 3\");if(t.maxZoom&&t.maxZoom>23)throw new Error(\"maxZoom must be less than 23\");if(Math.max(null!==(i=t.minZoom)&&void 0!==i?i:3,3)>Math.min(null!==(e=t.maxZoom)&&void 0!==e?e:23,23))throw new Error(\"minZoom must be less than maxZoom\");if(t.clusterMinZoom&&t.clusterMinZoom<3)throw new Error(\"clusterMinZoom must be greater than 3\");if(t.clusterMaxZoom&&t.clusterMaxZoom>23)throw new Error(\"clusterMaxZoom must be less than 23\");if(t.clusterMinZoom&&t.clusterMaxZoom&&t.clusterMinZoom>t.clusterMaxZoom)throw new Error(\"clusterMinZoom must be less than clusterMaxZoom\");if(t.clusterType){if(!(t.clusterType instanceof Array))throw new Error(\"clusterType must be an array\");if(t.clusterType.length<1)throw new Error(\"clusterType must be greater than 0\");for(let i=0;i<t.clusterType.length;i++){if(t.clusterType[i].length<4)throw new Error(\"clusterType must be greater than 4\");if(!t.clusterType[i][0])throw new Error(\"clusterType item startZoom must not be null\");if(t.clusterType[i][1]&&t.clusterType[i][0]>t.clusterType[i][1])throw new Error(\"clusterType item endZoom must be less than starZoom\");if(null===t.clusterType[i][1]&&i<t.clusterType.length-1)throw new Error(\"clusterType item endZoom must not be null,excluding the last item endZoom\");if(i<t.clusterType.length-1&&null!==t.clusterType[i][1]&&t.clusterType[i][1]>t.clusterType[i+1][0])throw new Error(\"clusterType item endZoom must be less than the next startZoom\")}}}},pointTransformer:(t,i)=>{let e=[];return t.forEach(((t,s)=>{const{point:r=null,properties:n={}}=i(t,s);r&&e.push({type:\"Feature\",geometry:{type:\"Point\",coordinates:r},properties:n})})),e}})}));\n"],
"mappings": "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",
"names": ["i", "t", "e", "s", "r", "n", "h", "l", "o", "a", "u", "c", "f", "d", "p", "y", "m", "w", "v", "g", "M", "b", "x"]
}
...@@ -292,8 +292,8 @@ import { ...@@ -292,8 +292,8 @@ import {
wind_power_default, wind_power_default,
zoom_in_default, zoom_in_default,
zoom_out_default zoom_out_default
} from "./chunk-S4WGN4LU.js"; } from "./chunk-5WDSIG6Y.js";
import "./chunk-JDSL2H4L.js"; import "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js"; import "./chunk-G3PMV62Z.js";
export { export {
add_location_default as AddLocation, add_location_default as AddLocation,
......
{ {
"hash": "3d95d7cd", "hash": "cafa6c33",
"configHash": "beb1c48d", "configHash": "ca4ef806",
"lockfileHash": "2e2ef206", "lockfileHash": "2e2ef206",
"browserHash": "80dbb247", "browserHash": "a1fff30e",
"optimized": { "optimized": {
"vue": { "vue": {
"src": "../../vue/dist/vue.runtime.esm-bundler.js", "src": "../../.pnpm/vue@3.5.21_typescript@5.8.3/node_modules/vue/dist/vue.runtime.esm-bundler.js",
"file": "vue.js", "file": "vue.js",
"fileHash": "27726b81", "fileHash": "5a715d56",
"needsInterop": false "needsInterop": false
}, },
"vue-router": { "vue-router": {
"src": "../../vue-router/dist/vue-router.mjs", "src": "../../.pnpm/vue-router@4.5.1_vue@3.5.21_typescript@5.8.3_/node_modules/vue-router/dist/vue-router.mjs",
"file": "vue-router.js", "file": "vue-router.js",
"fileHash": "0e4a94be", "fileHash": "e7e39dc0",
"needsInterop": false "needsInterop": false
}, },
"element-plus": { "element-plus": {
"src": "../../element-plus/es/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/index.mjs",
"file": "element-plus.js", "file": "element-plus.js",
"fileHash": "d9930fe7", "fileHash": "54370ffb",
"needsInterop": false "needsInterop": false
}, },
"@element-plus/icons-vue": { "@element-plus/icons-vue": {
"src": "../../@element-plus/icons-vue/dist/index.js", "src": "../../.pnpm/@element-plus+icons-vue@2.3.2_vue@3.5.21_typescript@5.8.3_/node_modules/@element-plus/icons-vue/dist/index.js",
"file": "@element-plus_icons-vue.js", "file": "@element-plus_icons-vue.js",
"fileHash": "2651facd", "fileHash": "2c4e3fd2",
"needsInterop": false "needsInterop": false
}, },
"nprogress": { "nprogress": {
"src": "../../nprogress/nprogress.js", "src": "../../.pnpm/nprogress@0.2.0/node_modules/nprogress/nprogress.js",
"file": "nprogress.js", "file": "nprogress.js",
"fileHash": "17e27234", "fileHash": "14c5d8dd",
"needsInterop": true "needsInterop": true
}, },
"pinia": { "pinia": {
"src": "../../pinia/dist/pinia.mjs", "src": "../../.pnpm/pinia@3.0.3_typescript@5.8.3_vue@3.5.21_typescript@5.8.3_/node_modules/pinia/dist/pinia.mjs",
"file": "pinia.js", "file": "pinia.js",
"fileHash": "25cdbaf2", "fileHash": "568b8013",
"needsInterop": false "needsInterop": false
}, },
"js-cookie": { "js-cookie": {
"src": "../../js-cookie/dist/js.cookie.mjs", "src": "../../.pnpm/js-cookie@3.0.5/node_modules/js-cookie/dist/js.cookie.mjs",
"file": "js-cookie.js", "file": "js-cookie.js",
"fileHash": "3e9ef2cb", "fileHash": "b983782f",
"needsInterop": false "needsInterop": false
}, },
"axios": { "axios": {
"src": "../../axios/index.js", "src": "../../.pnpm/axios@1.12.2/node_modules/axios/index.js",
"file": "axios.js", "file": "axios.js",
"fileHash": "4d97a917", "fileHash": "ff27b63b",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es": { "element-plus/es": {
"src": "../../element-plus/es/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/index.mjs",
"file": "element-plus_es.js", "file": "element-plus_es.js",
"fileHash": "eff4ad91", "fileHash": "080ac84c",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/base/style/index": { "element-plus/es/components/base/style/index": {
"src": "../../element-plus/es/components/base/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/base/style/index.mjs",
"file": "element-plus_es_components_base_style_index.js", "file": "element-plus_es_components_base_style_index.js",
"fileHash": "bb275ed1", "fileHash": "1492dfd8",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "a7c12d1a",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "f0a4374a",
"needsInterop": false
},
"element-plus/es/components/cascader/style/index": {
"src": "../../element-plus/es/components/cascader/style/index.mjs",
"file": "element-plus_es_components_cascader_style_index.js",
"fileHash": "f3c25105",
"needsInterop": false
},
"mitt": {
"src": "../../mitt/dist/mitt.mjs",
"file": "mitt.js",
"fileHash": "27983b13",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/dialog/style/index": { "element-plus/es/components/dialog/style/index": {
"src": "../../element-plus/es/components/dialog/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/dialog/style/index.mjs",
"file": "element-plus_es_components_dialog_style_index.js", "file": "element-plus_es_components_dialog_style_index.js",
"fileHash": "250cc421", "fileHash": "19eabf4a",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/icon/style/index": { "element-plus/es/components/icon/style/index": {
"src": "../../element-plus/es/components/icon/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/icon/style/index.mjs",
"file": "element-plus_es_components_icon_style_index.js", "file": "element-plus_es_components_icon_style_index.js",
"fileHash": "ffaccf8e", "fileHash": "694e7b5c",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/row/style/index": { "element-plus/es/components/row/style/index": {
"src": "../../element-plus/es/components/row/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/row/style/index.mjs",
"file": "element-plus_es_components_row_style_index.js", "file": "element-plus_es_components_row_style_index.js",
"fileHash": "8146d606", "fileHash": "3b6e8a98",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/col/style/index": { "element-plus/es/components/col/style/index": {
"src": "../../element-plus/es/components/col/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/col/style/index.mjs",
"file": "element-plus_es_components_col_style_index.js", "file": "element-plus_es_components_col_style_index.js",
"fileHash": "0537d086", "fileHash": "0123ae00",
"needsInterop": false "needsInterop": false
}, },
"@bmapgl-plugin/cluster": { "@amap/amap-jsapi-loader": {
"src": "../../@bmapgl-plugin/cluster/index.js", "src": "../../.pnpm/@amap+amap-jsapi-loader@1.0.1/node_modules/@amap/amap-jsapi-loader/dist/index.js",
"file": "@bmapgl-plugin_cluster.js", "file": "@amap_amap-jsapi-loader.js",
"fileHash": "76122e4a", "fileHash": "94957f44",
"needsInterop": true "needsInterop": true
}, },
"mitt": {
"src": "../../.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs",
"file": "mitt.js",
"fileHash": "e85c7fe4",
"needsInterop": false
},
"element-plus/es/components/select/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/select/style/index.mjs",
"file": "element-plus_es_components_select_style_index.js",
"fileHash": "b06aa374",
"needsInterop": false
},
"element-plus/es/components/option/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/option/style/index.mjs",
"file": "element-plus_es_components_option_style_index.js",
"fileHash": "3a29e5a8",
"needsInterop": false
},
"element-plus/es/components/cascader/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/cascader/style/index.mjs",
"file": "element-plus_es_components_cascader_style_index.js",
"fileHash": "bffd4874",
"needsInterop": false
},
"echarts": { "echarts": {
"src": "../../echarts/index.js", "src": "../../.pnpm/echarts@6.0.0/node_modules/echarts/index.js",
"file": "echarts.js", "file": "echarts.js",
"fileHash": "1c4eb8d2", "fileHash": "b7d5acf9",
"needsInterop": false "needsInterop": false
}, },
"lodash-es": { "lodash-es": {
"src": "../../lodash-es/lodash.js", "src": "../../lodash-es/lodash.js",
"file": "lodash-es.js", "file": "lodash-es.js",
"fileHash": "810dae55", "fileHash": "35e49d1c",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/form/style/index": { "element-plus/es/components/form/style/index": {
"src": "../../element-plus/es/components/form/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/form/style/index.mjs",
"file": "element-plus_es_components_form_style_index.js", "file": "element-plus_es_components_form_style_index.js",
"fileHash": "970d9f3d", "fileHash": "3d1ae4d8",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/button/style/index": { "element-plus/es/components/button/style/index": {
"src": "../../element-plus/es/components/button/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/button/style/index.mjs",
"file": "element-plus_es_components_button_style_index.js", "file": "element-plus_es_components_button_style_index.js",
"fileHash": "9f2dfef8", "fileHash": "cc030ebe",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/checkbox/style/index": { "element-plus/es/components/checkbox/style/index": {
"src": "../../element-plus/es/components/checkbox/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/checkbox/style/index.mjs",
"file": "element-plus_es_components_checkbox_style_index.js", "file": "element-plus_es_components_checkbox_style_index.js",
"fileHash": "9af6d3a5", "fileHash": "96a4f578",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/form-item/style/index": { "element-plus/es/components/form-item/style/index": {
"src": "../../element-plus/es/components/form-item/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/form-item/style/index.mjs",
"file": "element-plus_es_components_form-item_style_index.js", "file": "element-plus_es_components_form-item_style_index.js",
"fileHash": "796b51f1", "fileHash": "656b0133",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/input/style/index": { "element-plus/es/components/input/style/index": {
"src": "../../element-plus/es/components/input/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/input/style/index.mjs",
"file": "element-plus_es_components_input_style_index.js", "file": "element-plus_es_components_input_style_index.js",
"fileHash": "6810a81c", "fileHash": "7560e0d7",
"needsInterop": false "needsInterop": false
}, },
"jsencrypt": { "jsencrypt": {
"src": "../../jsencrypt/lib/index.js", "src": "../../.pnpm/jsencrypt@3.5.4/node_modules/jsencrypt/lib/index.js",
"file": "jsencrypt.js", "file": "jsencrypt.js",
"fileHash": "0700df96", "fileHash": "36170e3c",
"needsInterop": false
},
"element-plus/es/locales.mjs": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/locales.mjs",
"file": "element-plus_es_locales__mjs.js",
"fileHash": "9ee1fc4b",
"needsInterop": false "needsInterop": false
}, },
"gsap": { "gsap": {
"src": "../../gsap/index.js", "src": "../../.pnpm/gsap@3.13.0/node_modules/gsap/index.js",
"file": "gsap.js", "file": "gsap.js",
"fileHash": "93435ea0", "fileHash": "80c73c13",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/image/style/index": { "element-plus/es/components/image/style/index": {
"src": "../../element-plus/es/components/image/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/image/style/index.mjs",
"file": "element-plus_es_components_image_style_index.js", "file": "element-plus_es_components_image_style_index.js",
"fileHash": "ade67ad6", "fileHash": "65fdaaf7",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/radio-group/style/index": { "element-plus/es/components/radio-group/style/index": {
"src": "../../element-plus/es/components/radio-group/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/radio-group/style/index.mjs",
"file": "element-plus_es_components_radio-group_style_index.js", "file": "element-plus_es_components_radio-group_style_index.js",
"fileHash": "2230c661", "fileHash": "f6746f4f",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/radio-button/style/index": { "element-plus/es/components/radio-button/style/index": {
"src": "../../element-plus/es/components/radio-button/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/radio-button/style/index.mjs",
"file": "element-plus_es_components_radio-button_style_index.js", "file": "element-plus_es_components_radio-button_style_index.js",
"fileHash": "215535d2", "fileHash": "1a146c86",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/table/style/index": { "element-plus/es/components/table/style/index": {
"src": "../../element-plus/es/components/table/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/table/style/index.mjs",
"file": "element-plus_es_components_table_style_index.js", "file": "element-plus_es_components_table_style_index.js",
"fileHash": "8fc19294", "fileHash": "c67b6370",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/table-column/style/index": { "element-plus/es/components/table-column/style/index": {
"src": "../../element-plus/es/components/table-column/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/table-column/style/index.mjs",
"file": "element-plus_es_components_table-column_style_index.js", "file": "element-plus_es_components_table-column_style_index.js",
"fileHash": "0e0deee5", "fileHash": "3e51f843",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/components/empty/style/index": { "element-plus/es/components/empty/style/index": {
"src": "../../element-plus/es/components/empty/style/index.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/empty/style/index.mjs",
"file": "element-plus_es_components_empty_style_index.js", "file": "element-plus_es_components_empty_style_index.js",
"fileHash": "193464b9", "fileHash": "62165c23",
"needsInterop": false "needsInterop": false
}, },
"three": { "three": {
"src": "../../three/build/three.module.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/build/three.module.js",
"file": "three.js", "file": "three.js",
"fileHash": "a2a26ed0", "fileHash": "acd8be1d",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/controls/OrbitControls.js": { "three/examples/jsm/controls/OrbitControls.js": {
"src": "../../three/examples/jsm/controls/OrbitControls.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/controls/OrbitControls.js",
"file": "three_examples_jsm_controls_OrbitControls__js.js", "file": "three_examples_jsm_controls_OrbitControls__js.js",
"fileHash": "34cf4c25", "fileHash": "28b59dff",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/renderers/CSS2DRenderer.js": { "three/examples/jsm/renderers/CSS2DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS2DRenderer.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS2DRenderer.js",
"file": "three_examples_jsm_renderers_CSS2DRenderer__js.js", "file": "three_examples_jsm_renderers_CSS2DRenderer__js.js",
"fileHash": "7468204b", "fileHash": "0402defc",
"needsInterop": false "needsInterop": false
}, },
"three/addons/renderers/CSS3DRenderer.js": { "three/addons/renderers/CSS3DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS3DRenderer.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js",
"file": "three_addons_renderers_CSS3DRenderer__js.js", "file": "three_addons_renderers_CSS3DRenderer__js.js",
"fileHash": "7bef1bf6", "fileHash": "e187b6ec",
"needsInterop": false "needsInterop": false
}, },
"three/addons/postprocessing/EffectComposer.js": { "three/addons/postprocessing/EffectComposer.js": {
"src": "../../three/examples/jsm/postprocessing/EffectComposer.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/EffectComposer.js",
"file": "three_addons_postprocessing_EffectComposer__js.js", "file": "three_addons_postprocessing_EffectComposer__js.js",
"fileHash": "9ef4409f", "fileHash": "73b4ed17",
"needsInterop": false "needsInterop": false
}, },
"three/addons/postprocessing/RenderPass.js": { "three/addons/postprocessing/RenderPass.js": {
"src": "../../three/examples/jsm/postprocessing/RenderPass.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/RenderPass.js",
"file": "three_addons_postprocessing_RenderPass__js.js", "file": "three_addons_postprocessing_RenderPass__js.js",
"fileHash": "b83c3a33", "fileHash": "69f178bd",
"needsInterop": false "needsInterop": false
}, },
"three/addons/postprocessing/OutlinePass.js": { "three/addons/postprocessing/OutlinePass.js": {
"src": "../../three/examples/jsm/postprocessing/OutlinePass.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/postprocessing/OutlinePass.js",
"file": "three_addons_postprocessing_OutlinePass__js.js", "file": "three_addons_postprocessing_OutlinePass__js.js",
"fileHash": "6e02a652", "fileHash": "db4d4624",
"needsInterop": false "needsInterop": false
}, },
"d3": { "d3": {
"src": "../../d3/src/index.js", "src": "../../.pnpm/d3@7.9.0/node_modules/d3/src/index.js",
"file": "d3.js", "file": "d3.js",
"fileHash": "8a875b0d", "fileHash": "e03cf7b9",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/lines/Line2.js": { "three/examples/jsm/lines/Line2.js": {
"src": "../../three/examples/jsm/lines/Line2.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/Line2.js",
"file": "three_examples_jsm_lines_Line2__js.js", "file": "three_examples_jsm_lines_Line2__js.js",
"fileHash": "b09fa5aa", "fileHash": "1d1bf1ea",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/lines/LineGeometry.js": { "three/examples/jsm/lines/LineGeometry.js": {
"src": "../../three/examples/jsm/lines/LineGeometry.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/LineGeometry.js",
"file": "three_examples_jsm_lines_LineGeometry__js.js", "file": "three_examples_jsm_lines_LineGeometry__js.js",
"fileHash": "2853a7f4", "fileHash": "080284d4",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/lines/LineMaterial.js": { "three/examples/jsm/lines/LineMaterial.js": {
"src": "../../three/examples/jsm/lines/LineMaterial.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/lines/LineMaterial.js",
"file": "three_examples_jsm_lines_LineMaterial__js.js", "file": "three_examples_jsm_lines_LineMaterial__js.js",
"fileHash": "a4ea8742", "fileHash": "4349af95",
"needsInterop": false "needsInterop": false
}, },
"three/examples/jsm/renderers/CSS3DRenderer.js": { "three/examples/jsm/renderers/CSS3DRenderer.js": {
"src": "../../three/examples/jsm/renderers/CSS3DRenderer.js", "src": "../../.pnpm/three@0.181.2/node_modules/three/examples/jsm/renderers/CSS3DRenderer.js",
"file": "three_examples_jsm_renderers_CSS3DRenderer__js.js", "file": "three_examples_jsm_renderers_CSS3DRenderer__js.js",
"fileHash": "6deae146", "fileHash": "df4a41bc",
"needsInterop": false "needsInterop": false
}, },
"element-plus/es/locales.mjs": { "element-plus/es/components/card/style/index": {
"src": "../../element-plus/es/locales.mjs", "src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/card/style/index.mjs",
"file": "element-plus_es_locales__mjs.js", "file": "element-plus_es_components_card_style_index.js",
"fileHash": "61130207", "fileHash": "218ffed9",
"needsInterop": false
},
"element-plus/es/components/link/style/index": {
"src": "../../.pnpm/element-plus@2.11.2_vue@3.5.21_typescript@5.8.3_/node_modules/element-plus/es/components/link/style/index.mjs",
"file": "element-plus_es_components_link_style_index.js",
"fileHash": "0f278fe0",
"needsInterop": false "needsInterop": false
} }
}, },
"chunks": { "chunks": {
"chunk-IYMVL6BZ": { "chunk-CQSJN7WN": {
"file": "chunk-IYMVL6BZ.js" "file": "chunk-CQSJN7WN.js"
},
"chunk-NY4Z4LNU": {
"file": "chunk-NY4Z4LNU.js"
},
"chunk-FEBRQDH5": {
"file": "chunk-FEBRQDH5.js"
}, },
"chunk-ZYSY3OGM": { "chunk-PPLACW3U": {
"file": "chunk-ZYSY3OGM.js" "file": "chunk-PPLACW3U.js"
}, },
"chunk-MFBDIXYG": { "chunk-YP2RKF6U": {
"file": "chunk-MFBDIXYG.js" "file": "chunk-YP2RKF6U.js"
}, },
"chunk-ZS2WBNEI": { "chunk-ZYZE4ADI": {
"file": "chunk-ZS2WBNEI.js" "file": "chunk-ZYZE4ADI.js"
}, },
"chunk-4GXJ2MCF": { "chunk-IXSGC3JQ": {
"file": "chunk-4GXJ2MCF.js" "file": "chunk-IXSGC3JQ.js"
}, },
"chunk-HNP5HSLD": { "chunk-27VY4B4A": {
"file": "chunk-HNP5HSLD.js" "file": "chunk-27VY4B4A.js"
}, },
"chunk-RG7S6HTO": { "chunk-QMPMWDA4": {
"file": "chunk-RG7S6HTO.js" "file": "chunk-QMPMWDA4.js"
}, },
"chunk-TZOTQKIH": { "chunk-U7ZX2BS5": {
"file": "chunk-TZOTQKIH.js" "file": "chunk-U7ZX2BS5.js"
}, },
"chunk-372N3PK6": { "chunk-WGK4RKLA": {
"file": "chunk-372N3PK6.js" "file": "chunk-WGK4RKLA.js"
}, },
"chunk-PCQ6BLF2": { "chunk-KL6JP65J": {
"file": "chunk-PCQ6BLF2.js" "file": "chunk-KL6JP65J.js"
}, },
"chunk-IQCPA24U": { "chunk-XJ4FNH6G": {
"file": "chunk-IQCPA24U.js" "file": "chunk-XJ4FNH6G.js"
}, },
"chunk-TKM7ANES": { "chunk-ZFNCKSYC": {
"file": "chunk-TKM7ANES.js" "file": "chunk-ZFNCKSYC.js"
}, },
"chunk-S4WGN4LU": { "chunk-WYGDTZ7H": {
"file": "chunk-S4WGN4LU.js" "file": "chunk-WYGDTZ7H.js"
}, },
"chunk-3EK6V4TN": { "chunk-5WDSIG6Y": {
"file": "chunk-3EK6V4TN.js" "file": "chunk-5WDSIG6Y.js"
}, },
"chunk-5HXAQIWW": { "chunk-P6TLTLJ2": {
"file": "chunk-5HXAQIWW.js" "file": "chunk-P6TLTLJ2.js"
},
"chunk-JDSL2H4L": {
"file": "chunk-JDSL2H4L.js"
}, },
"chunk-G3PMV62Z": { "chunk-G3PMV62Z": {
"file": "chunk-G3PMV62Z.js" "file": "chunk-G3PMV62Z.js"
},
"chunk-HQ2UCEI6": {
"file": "chunk-HQ2UCEI6.js"
} }
} }
} }
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -311,7 +311,6 @@ import { ...@@ -311,7 +311,6 @@ import {
localeContextKey, localeContextKey,
makeInstaller, makeInstaller,
makeList, makeList,
mentionDefaultProps,
mentionEmits, mentionEmits,
mentionProps, mentionProps,
menuEmits, menuEmits,
...@@ -510,11 +509,10 @@ import { ...@@ -510,11 +509,10 @@ import {
virtualizedScrollbarProps, virtualizedScrollbarProps,
watermarkProps, watermarkProps,
zIndexContextKey zIndexContextKey
} from "./chunk-IQCPA24U.js"; } from "./chunk-ZFNCKSYC.js";
import "./chunk-TKM7ANES.js"; import "./chunk-WYGDTZ7H.js";
import "./chunk-S4WGN4LU.js"; import "./chunk-5WDSIG6Y.js";
import "./chunk-3EK6V4TN.js"; import "./chunk-P6TLTLJ2.js";
import "./chunk-JDSL2H4L.js";
import "./chunk-G3PMV62Z.js"; import "./chunk-G3PMV62Z.js";
var export_dayjs = import_dayjs.default; var export_dayjs = import_dayjs.default;
export { export {
...@@ -832,7 +830,6 @@ export { ...@@ -832,7 +830,6 @@ export {
localeContextKey, localeContextKey,
makeInstaller, makeInstaller,
makeList, makeList,
mentionDefaultProps,
mentionEmits, mentionEmits,
mentionProps, mentionProps,
menuEmits, menuEmits,
......
import "./chunk-G3PMV62Z.js"; import "./chunk-G3PMV62Z.js";
// node_modules/mitt/dist/mitt.mjs // node_modules/.pnpm/mitt@3.0.1/node_modules/mitt/dist/mitt.mjs
function mitt_default(n) { function mitt_default(n) {
return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) { return { all: n = n || /* @__PURE__ */ new Map(), on: function(t, e) {
var i = n.get(t); var i = n.get(t);
......
{ {
"version": 3, "version": 3,
"sources": ["../../mitt/src/index.ts"], "sources": ["../../.pnpm/mitt@3.0.1/node_modules/mitt/src/index.ts"],
"sourcesContent": ["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"], "sourcesContent": ["export type EventType = string | symbol;\n\n// An event handler can take an optional event argument\n// and should not return a value\nexport type Handler<T = unknown> = (event: T) => void;\nexport type WildcardHandler<T = Record<string, unknown>> = (\n\ttype: keyof T,\n\tevent: T[keyof T]\n) => void;\n\n// An array of all currently registered event handlers for a type\nexport type EventHandlerList<T = unknown> = Array<Handler<T>>;\nexport type WildCardEventHandlerList<T = Record<string, unknown>> = Array<\n\tWildcardHandler<T>\n>;\n\n// A map of event types and their corresponding event handlers.\nexport type EventHandlerMap<Events extends Record<EventType, unknown>> = Map<\n\tkeyof Events | '*',\n\tEventHandlerList<Events[keyof Events]> | WildCardEventHandlerList<Events>\n>;\n\nexport interface Emitter<Events extends Record<EventType, unknown>> {\n\tall: EventHandlerMap<Events>;\n\n\ton<Key extends keyof Events>(type: Key, handler: Handler<Events[Key]>): void;\n\ton(type: '*', handler: WildcardHandler<Events>): void;\n\n\toff<Key extends keyof Events>(\n\t\ttype: Key,\n\t\thandler?: Handler<Events[Key]>\n\t): void;\n\toff(type: '*', handler: WildcardHandler<Events>): void;\n\n\temit<Key extends keyof Events>(type: Key, event: Events[Key]): void;\n\temit<Key extends keyof Events>(\n\t\ttype: undefined extends Events[Key] ? Key : never\n\t): void;\n}\n\n/**\n * Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nexport default function mitt<Events extends Record<EventType, unknown>>(\n\tall?: EventHandlerMap<Events>\n): Emitter<Events> {\n\ttype GenericEventHandler =\n\t\t| Handler<Events[keyof Events]>\n\t\t| WildcardHandler<Events>;\n\tall = all || new Map();\n\n\treturn {\n\t\t/**\n\t\t * A Map of event names to registered handler functions.\n\t\t */\n\t\tall,\n\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t * @param {string|symbol} type Type of event to listen for, or `'*'` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler);\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as EventHandlerList<Events[keyof Events]>);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t * If `handler` is omitted, all handlers of the given type are removed.\n\t\t * @param {string|symbol} type Type of event to unregister `handler` from (`'*'` to remove a wildcard handler)\n\t\t * @param {Function} [handler] Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1);\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, []);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `'*'` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * Note: Manually firing '*' handlers is not supported.\n\t\t *\n\t\t * @param {string|symbol} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type);\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as EventHandlerList<Events[keyof Events]>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(evt!);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\thandlers = all!.get('*');\n\t\t\tif (handlers) {\n\t\t\t\t(handlers as WildCardEventHandlerList<Events>)\n\t\t\t\t\t.slice()\n\t\t\t\t\t.map((handler) => {\n\t\t\t\t\t\thandler(type, evt!);\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t};\n}\n"],
"mappings": ";;;sBA8CCA,GAAAA;AAOA,SAAO,EAINA,KANDA,IAAMA,KAAO,oBAAIC,OAchBC,IAAAA,SAA6BC,GAAWC,GAAAA;AACvC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,QACHA,EAASE,KAAKH,CAAAA,IAEdJ,EAAKQ,IAAIL,GAAM,CAACC,CAAAA,CAAAA;EAAAA,GAWlBK,KAAAA,SAA8BN,GAAWC,GAAAA;AACxC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,UACCD,IACHC,EAASK,OAAOL,EAASM,QAAQP,CAAAA,MAAa,GAAG,CAAA,IAEjDJ,EAAKQ,IAAIL,GAAM,CAAA,CAAA;EAAA,GAelBS,MAAAA,SAA+BT,GAAWU,GAAAA;AACzC,QAAIR,IAAWL,EAAKM,IAAIH,CAAAA;AACpBE,SACFA,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQS,CAAAA;IAAAA,CAAAA,IAIXR,IAAWL,EAAKM,IAAI,GAAA,MAElBD,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQD,GAAMU,CAAAA;IAAAA,CAAAA;EAAAA,EAAAA;AAAAA;", "mappings": ";;;sBA8CCA,GAAAA;AAOA,SAAO,EAINA,KANDA,IAAMA,KAAO,oBAAIC,OAchBC,IAAAA,SAA6BC,GAAWC,GAAAA;AACvC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,QACHA,EAASE,KAAKH,CAAAA,IAEdJ,EAAKQ,IAAIL,GAAM,CAACC,CAAAA,CAAAA;EAAAA,GAWlBK,KAAAA,SAA8BN,GAAWC,GAAAA;AACxC,QAAMC,IAAmDL,EAAKM,IAAIH,CAAAA;AAC9DE,UACCD,IACHC,EAASK,OAAOL,EAASM,QAAQP,CAAAA,MAAa,GAAG,CAAA,IAEjDJ,EAAKQ,IAAIL,GAAM,CAAA,CAAA;EAAA,GAelBS,MAAAA,SAA+BT,GAAWU,GAAAA;AACzC,QAAIR,IAAWL,EAAKM,IAAIH,CAAAA;AACpBE,SACFA,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQS,CAAAA;IAAAA,CAAAA,IAIXR,IAAWL,EAAKM,IAAI,GAAA,MAElBD,EACCS,MAAAA,EACAC,IAAI,SAACX,IAAAA;AACLA,MAAAA,GAAQD,GAAMU,CAAAA;IAAAA,CAAAA;EAAAA,EAAAA;AAAAA;",
"names": ["all", "Map", "on", "type", "handler", "handlers", "get", "push", "set", "off", "splice", "indexOf", "emit", "evt", "slice", "map"] "names": ["all", "Map", "on", "type", "handler", "handlers", "get", "push", "set", "off", "splice", "indexOf", "emit", "evt", "slice", "map"]
......
...@@ -16,10 +16,10 @@ import { ...@@ -16,10 +16,10 @@ import {
unref, unref,
watch, watch,
watchEffect watchEffect
} from "./chunk-JDSL2H4L.js"; } from "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js"; import "./chunk-G3PMV62Z.js";
// node_modules/@vue/devtools-api/lib/esm/env.js // node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/env.js
function getDevtoolsGlobalHook() { function getDevtoolsGlobalHook() {
return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__; return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
} }
...@@ -28,11 +28,11 @@ function getTarget() { ...@@ -28,11 +28,11 @@ function getTarget() {
} }
var isProxyAvailable = typeof Proxy === "function"; var isProxyAvailable = typeof Proxy === "function";
// node_modules/@vue/devtools-api/lib/esm/const.js // node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/const.js
var HOOK_SETUP = "devtools-plugin:setup"; var HOOK_SETUP = "devtools-plugin:setup";
var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set"; var HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
// node_modules/@vue/devtools-api/lib/esm/time.js // node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/time.js
var supported; var supported;
var perf; var perf;
function isPerformanceSupported() { function isPerformanceSupported() {
...@@ -55,7 +55,7 @@ function now() { ...@@ -55,7 +55,7 @@ function now() {
return isPerformanceSupported() ? perf.now() : Date.now(); return isPerformanceSupported() ? perf.now() : Date.now();
} }
// node_modules/@vue/devtools-api/lib/esm/proxy.js // node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/proxy.js
var ApiProxy = class { var ApiProxy = class {
constructor(plugin, hook) { constructor(plugin, hook) {
this.target = null; this.target = null;
...@@ -155,7 +155,7 @@ var ApiProxy = class { ...@@ -155,7 +155,7 @@ var ApiProxy = class {
} }
}; };
// node_modules/@vue/devtools-api/lib/esm/index.js // node_modules/.pnpm/@vue+devtools-api@6.6.4/node_modules/@vue/devtools-api/lib/esm/index.js
function setupDevtoolsPlugin(pluginDescriptor, setupFn) { function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
const descriptor = pluginDescriptor; const descriptor = pluginDescriptor;
const target = getTarget(); const target = getTarget();
...@@ -177,7 +177,7 @@ function setupDevtoolsPlugin(pluginDescriptor, setupFn) { ...@@ -177,7 +177,7 @@ function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
} }
} }
// node_modules/vue-router/dist/vue-router.mjs // node_modules/.pnpm/vue-router@4.5.1_vue@3.5.21_typescript@5.8.3_/node_modules/vue-router/dist/vue-router.mjs
var isBrowser = typeof document !== "undefined"; var isBrowser = typeof document !== "undefined";
function isRouteComponent(component) { function isRouteComponent(component) {
return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component; return typeof component === "object" || "displayName" in component || "props" in component || "__vccOpts" in component;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -168,7 +168,7 @@ import { ...@@ -168,7 +168,7 @@ import {
withMemo, withMemo,
withModifiers, withModifiers,
withScopeId withScopeId
} from "./chunk-JDSL2H4L.js"; } from "./chunk-P6TLTLJ2.js";
import "./chunk-G3PMV62Z.js"; import "./chunk-G3PMV62Z.js";
export { export {
BaseTransition, BaseTransition,
......
...@@ -47,9 +47,6 @@ importers: ...@@ -47,9 +47,6 @@ importers:
nprogress: nprogress:
specifier: ^0.2.0 specifier: ^0.2.0
version: 0.2.0 version: 0.2.0
particles.vue3:
specifier: ^2.12.0
version: 2.12.0(typescript@5.8.3)
pinia: pinia:
specifier: ^3.0.3 specifier: ^3.0.3
version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3)) version: 3.0.3(typescript@5.8.3)(vue@3.5.21(typescript@5.8.3))
...@@ -62,9 +59,6 @@ importers: ...@@ -62,9 +59,6 @@ importers:
three: three:
specifier: ^0.181.2 specifier: ^0.181.2
version: 0.181.2 version: 0.181.2
tsparticles:
specifier: ^3.9.1
version: 3.9.1
vue: vue:
specifier: ^3.5.18 specifier: ^3.5.18
version: 3.5.21(typescript@5.8.3) version: 3.5.21(typescript@5.8.3)
...@@ -631,147 +625,6 @@ packages: ...@@ -631,147 +625,6 @@ packages:
'@tailwindcss/postcss@4.1.13': '@tailwindcss/postcss@4.1.13':
resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==} resolution: {integrity: sha512-HLgx6YSFKJT7rJqh9oJs/TkBFhxuMOfUKSBEPYwV+t78POOBsdQ7crhZLzwcH3T0UyUuOzU/GK5pk5eKr3wCiQ==}
'@tsparticles/basic@3.9.1':
resolution: {integrity: sha512-ijr2dHMx0IQHqhKW3qA8tfwrR2XYbbWYdaJMQuBo2CkwBVIhZ76U+H20Y492j/NXpd1FUnt2aC0l4CEVGVGdeQ==}
'@tsparticles/engine@3.9.1':
resolution: {integrity: sha512-DpdgAhWMZ3Eh2gyxik8FXS6BKZ8vyea+Eu5BC4epsahqTGY9V3JGGJcXC6lRJx6cPMAx1A0FaQAojPF3v6rkmQ==}
'@tsparticles/interaction-external-attract@3.9.1':
resolution: {integrity: sha512-5AJGmhzM9o4AVFV24WH5vSqMBzOXEOzIdGLIr+QJf4fRh9ZK62snsusv/ozKgs2KteRYQx+L7c5V3TqcDy2upg==}
'@tsparticles/interaction-external-bounce@3.9.1':
resolution: {integrity: sha512-bv05+h70UIHOTWeTsTI1AeAmX6R3s8nnY74Ea6p6AbQjERzPYIa0XY19nq/hA7+Nrg+EissP5zgoYYeSphr85A==}
'@tsparticles/interaction-external-bubble@3.9.1':
resolution: {integrity: sha512-tbd8ox/1GPl+zr+KyHQVV1bW88GE7OM6i4zql801YIlCDrl9wgTDdDFGIy9X7/cwTvTrCePhrfvdkUamXIribQ==}
'@tsparticles/interaction-external-connect@3.9.1':
resolution: {integrity: sha512-sq8YfUNsIORjXHzzW7/AJQtfi/qDqLnYG2qOSE1WOsog39MD30RzmiOloejOkfNeUdcGUcfsDgpUuL3UhzFUOA==}
'@tsparticles/interaction-external-grab@3.9.1':
resolution: {integrity: sha512-QwXza+sMMWDaMiFxd8y2tJwUK6c+nNw554+/9+tEZeTTk2fCbB0IJ7p/TH6ZGWDL0vo2muK54Njv2fEey191ow==}
'@tsparticles/interaction-external-pause@3.9.1':
resolution: {integrity: sha512-Gzv4/FeNir0U/tVM9zQCqV1k+IAgaFjDU3T30M1AeAsNGh/rCITV2wnT7TOGFkbcla27m4Yxa+Fuab8+8pzm+g==}
'@tsparticles/interaction-external-push@3.9.1':
resolution: {integrity: sha512-GvnWF9Qy4YkZdx+WJL2iy9IcgLvzOIu3K7aLYJFsQPaxT8d9TF8WlpoMlWKnJID6H5q4JqQuMRKRyWH8aAKyQw==}
'@tsparticles/interaction-external-remove@3.9.1':
resolution: {integrity: sha512-yPThm4UDWejDOWW5Qc8KnnS2EfSo5VFcJUQDWc1+Wcj17xe7vdSoiwwOORM0PmNBzdDpSKQrte/gUnoqaUMwOA==}
'@tsparticles/interaction-external-repulse@3.9.1':
resolution: {integrity: sha512-/LBppXkrMdvLHlEKWC7IykFhzrz+9nebT2fwSSFXK4plEBxDlIwnkDxd3FbVOAbnBvx4+L8+fbrEx+RvC8diAw==}
'@tsparticles/interaction-external-slow@3.9.1':
resolution: {integrity: sha512-1ZYIR/udBwA9MdSCfgADsbDXKSFS0FMWuPWz7bm79g3sUxcYkihn+/hDhc6GXvNNR46V1ocJjrj0u6pAynS1KQ==}
'@tsparticles/interaction-external-trail@3.9.1':
resolution: {integrity: sha512-Au0v2oiqfKTemI/4bzjD4dUXzIngB5Q2T4nJcMCYpP24uZfwZh5xTjUMH7gyJyyaRTdMl9IJrp8ySjyYbLfeGg==}
'@tsparticles/interaction-particles-attract@3.9.1':
resolution: {integrity: sha512-CYYYowJuGwRLUixQcSU/48PTKM8fCUYThe0hXwQ+yRMLAn053VHzL7NNZzKqEIeEyt5oJoy9KcvubjKWbzMBLQ==}
'@tsparticles/interaction-particles-collisions@3.9.1':
resolution: {integrity: sha512-ggGyjW/3v1yxvYW1IF1EMT15M6w31y5zfNNUPkqd/IXRNPYvm0Z0ayhp+FKmz70M5p0UxxPIQHTvAv9Jqnuj8w==}
'@tsparticles/interaction-particles-links@3.9.1':
resolution: {integrity: sha512-MsLbMjy1vY5M5/hu/oa5OSRZAUz49H3+9EBMTIOThiX+a+vpl3sxc9AqNd9gMsPbM4WJlub8T6VBZdyvzez1Vg==}
'@tsparticles/move-base@3.9.1':
resolution: {integrity: sha512-X4huBS27d8srpxwOxliWPUt+NtCwY+8q/cx1DvQxyqmTA8VFCGpcHNwtqiN+9JicgzOvSuaORVqUgwlsc7h4pQ==}
'@tsparticles/move-parallax@3.9.1':
resolution: {integrity: sha512-whlOR0bVeyh6J/hvxf/QM3DqvNnITMiAQ0kro6saqSDItAVqg4pYxBfEsSOKq7EhjxNvfhhqR+pFMhp06zoCVA==}
'@tsparticles/plugin-absorbers@3.9.1':
resolution: {integrity: sha512-q9SQllpbPPgw1+euxHPYCFawOVUazQkkwnleiIgpYSiimlCyjIdwGnFPSNe1Sypzqmr2h6oOyX2vkK5ZVNEu8A==}
'@tsparticles/plugin-easing-quad@3.9.1':
resolution: {integrity: sha512-C2UJOca5MTDXKUTBXj30Kiqr5UyID+xrY/LxicVWWZPczQW2bBxbIbfq9ULvzGDwBTxE2rdvIB8YFKmDYO45qw==}
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
resolution: {integrity: sha512-z+9MsAPWr++sNz6N6303rRDjusW0BIPhHY51E5eXGDcRdOqrESDs6y99AJ/6Kdb/PpibCIYjFY9jVi2JJADPRA==}
'@tsparticles/plugin-emitters-shape-square@3.9.1':
resolution: {integrity: sha512-dhA1c7FKs19B8lgTf25OTA3JoptNA+rjorsqCFuY1BZDI8g9E8DNqikUge14/W7nZN96+98hY+ghxSl4K2YsgA==}
'@tsparticles/plugin-emitters@3.9.1':
resolution: {integrity: sha512-h7opR8SoFWBmVHceDLJUerLENaPfkJSh2zQYvzmLj2L+V3VLS1QDgty+4QZVeZfqNROmgQw2eLFA5El1E0sqqw==}
'@tsparticles/plugin-hex-color@3.9.1':
resolution: {integrity: sha512-vZgZ12AjUicJvk7AX4K2eAmKEQX/D1VEjEPFhyjbgI7A65eX72M465vVKIgNA6QArLZ1DLs7Z787LOE6GOBWsg==}
'@tsparticles/plugin-hsl-color@3.9.1':
resolution: {integrity: sha512-jJd1iGgRwX6eeNjc1zUXiJivaqC5UE+SC2A3/NtHwwoQrkfxGWmRHOsVyLnOBRcCPgBp/FpdDe6DIDjCMO715w==}
'@tsparticles/plugin-rgb-color@3.9.1':
resolution: {integrity: sha512-SBxk7f1KBfXeTnnklbE2Hx4jBgh6I6HOtxb+Os1gTp0oaghZOkWcCD2dP4QbUu7fVNCMOcApPoMNC8RTFcy9wQ==}
'@tsparticles/shape-circle@3.9.1':
resolution: {integrity: sha512-DqZFLjbuhVn99WJ+A9ajz9YON72RtCcvubzq6qfjFmtwAK7frvQeb6iDTp6Ze9FUipluxVZWVRG4vWTxi2B+/g==}
'@tsparticles/shape-emoji@3.9.1':
resolution: {integrity: sha512-ifvY63usuT+hipgVHb8gelBHSeF6ryPnMxAAEC1RGHhhXfpSRWMtE6ybr+pSsYU52M3G9+TF84v91pSwNrb9ZQ==}
'@tsparticles/shape-image@3.9.1':
resolution: {integrity: sha512-fCA5eme8VF3oX8yNVUA0l2SLDKuiZObkijb0z3Ky0qj1HUEVlAuEMhhNDNB9E2iELTrWEix9z7BFMePp2CC7AA==}
'@tsparticles/shape-line@3.9.1':
resolution: {integrity: sha512-wT8NSp0N9HURyV05f371cHKcNTNqr0/cwUu6WhBzbshkYGy1KZUP9CpRIh5FCrBpTev34mEQfOXDycgfG0KiLQ==}
'@tsparticles/shape-polygon@3.9.1':
resolution: {integrity: sha512-dA77PgZdoLwxnliH6XQM/zF0r4jhT01pw5y7XTeTqws++hg4rTLV9255k6R6eUqKq0FPSW1/WBsBIl7q/MmrqQ==}
'@tsparticles/shape-square@3.9.1':
resolution: {integrity: sha512-DKGkDnRyZrAm7T2ipqNezJahSWs6xd9O5LQLe5vjrYm1qGwrFxJiQaAdlb00UNrexz1/SA7bEoIg4XKaFa7qhQ==}
'@tsparticles/shape-star@3.9.1':
resolution: {integrity: sha512-kdMJpi8cdeb6vGrZVSxTG0JIjCwIenggqk0EYeKAwtOGZFBgL7eHhF2F6uu1oq8cJAbXPujEoabnLsz6mW8XaA==}
'@tsparticles/shape-text@3.9.1':
resolution: {integrity: sha512-oNsLHI0lGkIXoUw3W598iwd7dtoHCDrwpwJRGnQzgfk6T5a9dCpSD5vDeQN89lr3BUbVui4lhxq+/TyC64oAqA==}
'@tsparticles/slim@3.9.1':
resolution: {integrity: sha512-CL5cDmADU7sDjRli0So+hY61VMbdroqbArmR9Av+c1Fisa5ytr6QD7Jv62iwU2S6rvgicEe9OyRmSy5GIefwZw==}
'@tsparticles/updater-color@3.9.1':
resolution: {integrity: sha512-XGWdscrgEMA8L5E7exsE0f8/2zHKIqnTrZymcyuFBw2DCB6BIV+5z6qaNStpxrhq3DbIxxhqqcybqeOo7+Alpg==}
'@tsparticles/updater-destroy@3.9.1':
resolution: {integrity: sha512-MjMzEhZwCQIbxO6ZRM0eXsHVwmlXuUqwC43WCPZCpjhK3AJrMu3KR4xsJieFTWIbVNguAvbgoTB10FfJOUU5VA==}
'@tsparticles/updater-life@3.9.1':
resolution: {integrity: sha512-Oi8aF2RIwMMsjssUkCB6t3PRpENHjdZf6cX92WNfAuqXtQphr3OMAkYFJFWkvyPFK22AVy3p/cFt6KE5zXxwAA==}
'@tsparticles/updater-opacity@3.9.1':
resolution: {integrity: sha512-w778LQuRZJ+IoWzeRdrGykPYSSaTeWfBvLZ2XwYEkh/Ss961InOxZKIpcS6i5Kp/Zfw0fS1ZAuqeHwuj///Osw==}
'@tsparticles/updater-out-modes@3.9.1':
resolution: {integrity: sha512-cKQEkAwbru+hhKF+GTsfbOvuBbx2DSB25CxOdhtW2wRvDBoCnngNdLw91rs+0Cex4tgEeibkebrIKFDDE6kELg==}
'@tsparticles/updater-roll@3.9.1':
resolution: {integrity: sha512-zl4JeM3gUBJ0uttmIsond3lrZ3f3AkItFeS0Lhj/7jiCKfUoRyyOMrcBk8R1AhW7lI+7ko1iBs3jhO0jnxz9vg==}
'@tsparticles/updater-rotate@3.9.1':
resolution: {integrity: sha512-9BfKaGfp28JN82MF2qs6Ae/lJr9EColMfMTHqSKljblwbpVDHte4umuwKl3VjbRt87WD9MGtla66NTUYl+WxuQ==}
'@tsparticles/updater-size@3.9.1':
resolution: {integrity: sha512-3NSVs0O2ApNKZXfd+y/zNhTXSFeG1Pw4peI8e6z/q5+XLbmue9oiEwoPy/tQLaark3oNj3JU7Q903ZijPyXSzw==}
'@tsparticles/updater-stroke-color@3.9.1':
resolution: {integrity: sha512-3x14+C2is9pZYTg9T2TiA/aM1YMq4wLdYaZDcHm3qO30DZu5oeQq0rm/6w+QOGKYY1Z3Htg9rlSUZkhTHn7eDA==}
'@tsparticles/updater-tilt@3.9.1':
resolution: {integrity: sha512-PB2yaoyXRmSk4iIVgjtRrzOxXMK9mjeAQHIJGtT4faq46Z8cbIIEFgjTwqrUV8qOrNg/h4sm5NE/s0qsTYjp1Q==}
'@tsparticles/updater-twinkle@3.9.1':
resolution: {integrity: sha512-xgTcYr6LmP44IPIBeQmEExN2Y5Nfl3ikmC08eOh5nZy/ta6ORP+JTsprrnfuv/O2DwTyoqFLkZ16hZfkdc1yOQ==}
'@tsparticles/updater-wobble@3.9.1':
resolution: {integrity: sha512-c99Ogy9q4QWO+zsDXol0UnpUwZiY2UucFb8ltuDv9AlbGUeprygoub8jhgT5pEDv+GdzWOJGSgq7rfgv9cHBrg==}
'@types/estree@1.0.8': '@types/estree@1.0.8':
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
...@@ -1435,10 +1288,6 @@ packages: ...@@ -1435,10 +1288,6 @@ packages:
nprogress@0.2.0: nprogress@0.2.0:
resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==} resolution: {integrity: sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==}
particles.vue3@2.12.0:
resolution: {integrity: sha512-t1AFUSuL+zzXO5fvBq6y76DAyy6sXtBOVY3UirNzaRQ0JCqSV3wCQwQ2N51tJRG6V952ARi87NMcQP5VwfTkqA==}
deprecated: '@tsparticles/vue3 is the new package for v3, please use that'
path-browserify@1.0.1: path-browserify@1.0.1:
resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
...@@ -1557,13 +1406,6 @@ packages: ...@@ -1557,13 +1406,6 @@ packages:
tslib@2.3.0: tslib@2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
tsparticles-engine@2.12.0:
resolution: {integrity: sha512-ZjDIYex6jBJ4iMc9+z0uPe7SgBnmb6l+EJm83MPIsOny9lPpetMsnw/8YJ3xdxn8hV+S3myTpTN1CkOVmFv0QQ==}
deprecated: starting from tsparticles v3 the packages are now moved to @tsparticles/package-name instead of tsparticles-package-name
tsparticles@3.9.1:
resolution: {integrity: sha512-Y780IGSL4qjkZj7+fI92PV/cziHqLR/s6nnYri4K6vH3NQRmDK5D6pfskDO8T4Y96ChCWHY3uxPtOb/hKQ83Qg==}
typescript@5.8.3: typescript@5.8.3:
resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==}
engines: {node: '>=14.17'} engines: {node: '>=14.17'}
...@@ -2038,228 +1880,6 @@ snapshots: ...@@ -2038,228 +1880,6 @@ snapshots:
postcss: 8.5.6 postcss: 8.5.6
tailwindcss: 4.1.13 tailwindcss: 4.1.13
'@tsparticles/basic@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base': 3.9.1
'@tsparticles/plugin-hex-color': 3.9.1
'@tsparticles/plugin-hsl-color': 3.9.1
'@tsparticles/plugin-rgb-color': 3.9.1
'@tsparticles/shape-circle': 3.9.1
'@tsparticles/updater-color': 3.9.1
'@tsparticles/updater-opacity': 3.9.1
'@tsparticles/updater-out-modes': 3.9.1
'@tsparticles/updater-size': 3.9.1
'@tsparticles/engine@3.9.1': {}
'@tsparticles/interaction-external-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bounce@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-bubble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-connect@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-grab@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-pause@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-push@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-remove@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-repulse@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-slow@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-attract@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-collisions@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-particles-links@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-base@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/move-parallax@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-absorbers@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-easing-quad@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters-shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hex-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-hsl-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/plugin-rgb-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-circle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-emoji@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-image@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-line@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-polygon@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-square@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-star@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/shape-text@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/slim@3.9.1':
dependencies:
'@tsparticles/basic': 3.9.1
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-attract': 3.9.1
'@tsparticles/interaction-external-bounce': 3.9.1
'@tsparticles/interaction-external-bubble': 3.9.1
'@tsparticles/interaction-external-connect': 3.9.1
'@tsparticles/interaction-external-grab': 3.9.1
'@tsparticles/interaction-external-pause': 3.9.1
'@tsparticles/interaction-external-push': 3.9.1
'@tsparticles/interaction-external-remove': 3.9.1
'@tsparticles/interaction-external-repulse': 3.9.1
'@tsparticles/interaction-external-slow': 3.9.1
'@tsparticles/interaction-particles-attract': 3.9.1
'@tsparticles/interaction-particles-collisions': 3.9.1
'@tsparticles/interaction-particles-links': 3.9.1
'@tsparticles/move-parallax': 3.9.1
'@tsparticles/plugin-easing-quad': 3.9.1
'@tsparticles/shape-emoji': 3.9.1
'@tsparticles/shape-image': 3.9.1
'@tsparticles/shape-line': 3.9.1
'@tsparticles/shape-polygon': 3.9.1
'@tsparticles/shape-square': 3.9.1
'@tsparticles/shape-star': 3.9.1
'@tsparticles/updater-life': 3.9.1
'@tsparticles/updater-rotate': 3.9.1
'@tsparticles/updater-stroke-color': 3.9.1
'@tsparticles/updater-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-destroy@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-life@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-opacity@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-out-modes@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-roll@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-rotate@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-size@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-stroke-color@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-tilt@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-twinkle@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/updater-wobble@3.9.1':
dependencies:
'@tsparticles/engine': 3.9.1
'@types/estree@1.0.8': {} '@types/estree@1.0.8': {}
'@types/js-cookie@3.0.6': {} '@types/js-cookie@3.0.6': {}
...@@ -2954,13 +2574,6 @@ snapshots: ...@@ -2954,13 +2574,6 @@ snapshots:
nprogress@0.2.0: {} nprogress@0.2.0: {}
particles.vue3@2.12.0(typescript@5.8.3):
dependencies:
tsparticles-engine: 2.12.0
vue: 3.5.21(typescript@5.8.3)
transitivePeerDependencies:
- typescript
path-browserify@1.0.1: {} path-browserify@1.0.1: {}
pathe@2.0.3: {} pathe@2.0.3: {}
...@@ -3091,24 +2704,6 @@ snapshots: ...@@ -3091,24 +2704,6 @@ snapshots:
tslib@2.3.0: {} tslib@2.3.0: {}
tsparticles-engine@2.12.0: {}
tsparticles@3.9.1:
dependencies:
'@tsparticles/engine': 3.9.1
'@tsparticles/interaction-external-trail': 3.9.1
'@tsparticles/plugin-absorbers': 3.9.1
'@tsparticles/plugin-emitters': 3.9.1
'@tsparticles/plugin-emitters-shape-circle': 3.9.1
'@tsparticles/plugin-emitters-shape-square': 3.9.1
'@tsparticles/shape-text': 3.9.1
'@tsparticles/slim': 3.9.1
'@tsparticles/updater-destroy': 3.9.1
'@tsparticles/updater-roll': 3.9.1
'@tsparticles/updater-tilt': 3.9.1
'@tsparticles/updater-twinkle': 3.9.1
'@tsparticles/updater-wobble': 3.9.1
typescript@5.8.3: {} typescript@5.8.3: {}
ufo@1.6.1: {} ufo@1.6.1: {}
......
...@@ -60,3 +60,12 @@ export function countBySysType(deptId: number) { ...@@ -60,3 +60,12 @@ export function countBySysType(deptId: number) {
method: "get", method: "get",
}); });
} }
// 地图 获取设备
export function deviceList(deptId: number) {
return request({
url: "/iot-device/baseDevice/list?pageNum=1&pageSize=10000000000000",
method: "get",
});
// pageNum=1&pageSize=10
}
...@@ -129,7 +129,7 @@ import SysClassification from "./components/SysClassification.vue"; ...@@ -129,7 +129,7 @@ import SysClassification from "./components/SysClassification.vue";
import DeviceClassification from "./components/DeviceClassification.vue"; import DeviceClassification from "./components/DeviceClassification.vue";
import EquipmentAlarm from "./components/EquipmentAlarm.vue"; import EquipmentAlarm from "./components/EquipmentAlarm.vue";
import Alert7Days from "./components/Alert7Days.vue"; import Alert7Days from "./components/Alert7Days.vue";
import MapEcharts from "./components/MapEcharts.vue"; import MapEcharts from "./components/MapEcharts1.vue";
import DeployProject from "./components/DeployProject.vue"; import DeployProject from "./components/DeployProject.vue";
import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue"; import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue";
// import Map from "./components/Map.vue"; // import Map from "./components/Map.vue";
......
...@@ -121,18 +121,16 @@ ...@@ -121,18 +121,16 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref, onMounted, onUnmounted } from "vue";
import DeviceNumber from "./components/DeviceNumber.vue"; import DeviceNumber from "./components/DeviceNumber.vue";
import SysClassification from "./components/SysClassification.vue"; import SysClassification from "./components/SysClassification.vue";
import DeviceClassification from "./components/DeviceClassification.vue"; import DeviceClassification from "./components/DeviceClassification.vue";
import EquipmentAlarm from "./components/EquipmentAlarm.vue"; import EquipmentAlarm from "./components/EquipmentAlarm.vue";
import Alert7Days from "./components/Alert7Days.vue"; import Alert7Days from "./components/Alert7Days.vue";
import MapEcharts from "./components/Map1.vue"; import MapEcharts from "./components/Map.vue";
import DeployProject from "./components/DeployProject.vue"; import DeployProject from "./components/DeployProject.vue";
import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue"; import SubsidiaryCompanyEquipment from "./components/SubsidiaryCompanyEquipment.vue";
import ContainerWrap from "@/components/ContainerWrap/index.vue"; import ContainerWrap from "@/components/ContainerWrap/index.vue";
// import Map from "./components/Map.vue";
import { ref, onMounted, onUnmounted } from "vue";
import { eventBus } from "@/eventBus"; import { eventBus } from "@/eventBus";
import { nowTime } from "@/api/iot/home"; import { nowTime } from "@/api/iot/home";
const nowTimes = ref(""); const nowTimes = ref("");
......
...@@ -7,12 +7,12 @@ ...@@ -7,12 +7,12 @@
import { ref, onMounted, onBeforeUnmount } from "vue"; import { ref, onMounted, onBeforeUnmount } from "vue";
import * as echarts from "echarts"; import * as echarts from "echarts";
import { countByDay } from "@/api/iot/home"; import { countByDay } from "@/api/iot/home";
import { de } from "element-plus/es/locales.mjs";
const chartRef = ref<HTMLDivElement>(); const chartRef = ref<HTMLDivElement>();
const chartContainer = ref<HTMLDivElement>(); const chartContainer = ref<HTMLDivElement>();
const chartInstance = ref<echarts.ECharts | null>(null); const chartInstance = ref<echarts.ECharts | null>(null);
let resizeObserver: ResizeObserver | null = null; let resizeObserver: ResizeObserver | null = null;
const isNull = ref(true);
const xData = ref<any[]>([ const xData = ref<any[]>([
{ {
...@@ -73,6 +73,17 @@ const initChart = () => { ...@@ -73,6 +73,17 @@ const initChart = () => {
chartInstance.value = echarts.init(chartRef.value); chartInstance.value = echarts.init(chartRef.value);
const option = { const option = {
title: {
show: !isNull.value,
text: "暂无数据",
x: "center",
y: "center",
textStyle: {
fontSize: 16,
color: "#66FFFF",
fontFamily: "PangMen",
},
},
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
axisPointer: { axisPointer: {
...@@ -269,10 +280,14 @@ onMounted(() => { ...@@ -269,10 +280,14 @@ onMounted(() => {
endTime: new Date().toISOString().substring(0, 10) + " 23:59:59", endTime: new Date().toISOString().substring(0, 10) + " 23:59:59",
}; };
// 获取近7天告警统计 // 获取近7天告警统计
countByDay(data).then((res) => { countByDay(data).then((res: any) => {
if (res.code === 200) {
const haveHandle = res.data.haveHandle; //已处理 const haveHandle = res.data.haveHandle; //已处理
const notHandle = res.data.notHandle; //未处理 const notHandle = res.data.notHandle; //未处理
const haveIgnore = res.data.haveIgnore; //已忽略 const haveIgnore = res.data.haveIgnore; //已忽略
if (!haveHandle && !notHandle && !haveIgnore) {
isNull.value = false; //暂无数据
}
// 将近7天的日期添加到xData.time中,格式为yyyy-MM-dd 00:00:00 // 将近7天的日期添加到xData.time中,格式为yyyy-MM-dd 00:00:00
xData.value.forEach((item, index) => { xData.value.forEach((item, index) => {
item.time = `${new Date( item.time = `${new Date(
...@@ -285,7 +300,6 @@ onMounted(() => { ...@@ -285,7 +300,6 @@ onMounted(() => {
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000 new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getDate()} 00:00:00`; ).getDate()} 00:00:00`;
}); });
// 将近7天的时间戳添加到xData.timestamp中 // 将近7天的时间戳添加到xData.timestamp中
xData.value.forEach((item, index) => { xData.value.forEach((item, index) => {
item.timestamp = new Date(item.time).getTime(); item.timestamp = new Date(item.time).getTime();
...@@ -322,6 +336,27 @@ onMounted(() => { ...@@ -322,6 +336,27 @@ onMounted(() => {
} }
} }
initChart(); initChart();
} else {
// 将近7天的日期添加到xData.time中,格式为yyyy-MM-dd 00:00:00
xData.value.forEach((item, index) => {
item.time = `${new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getFullYear()}-${
new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getMonth() + 1
}-${new Date(
new Date().getTime() - (6 - index) * 24 * 60 * 60 * 1000
).getDate()} 00:00:00`;
});
xData.value.forEach((item) => {
item.haveHandle = 0;
item.notHandle = 0;
item.haveIgnore = 0;
});
isNull.value = false; //暂无数据
initChart();
}
}); });
// 使用 ResizeObserver 监听容器尺寸变化 // 使用 ResizeObserver 监听容器尺寸变化
......
...@@ -192,6 +192,8 @@ const handleResize = () => { ...@@ -192,6 +192,8 @@ const handleResize = () => {
onMounted(() => { onMounted(() => {
deviceCountByType(props.deptId, "1").then((res: any) => { deviceCountByType(props.deptId, "1").then((res: any) => {
if (res.code === 200) { if (res.code === 200) {
const dcbt = res.dcbt || [];
if (dcbt.length > 0) {
//将res.dcbt中的数据赋值给datas.value //将res.dcbt中的数据赋值给datas.value
datas.value = res.dcbt.map((item: any) => ({ datas.value = res.dcbt.map((item: any) => ({
value: item.count, value: item.count,
...@@ -202,6 +204,22 @@ onMounted(() => { ...@@ -202,6 +204,22 @@ onMounted(() => {
(acc: number, item: any) => acc + item.count, (acc: number, item: any) => acc + item.count,
0 0
); );
} else {
datas.value = [
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
];
totalCount.value = 0;
}
initChart();
} else {
datas.value = [
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
{ value: 0, name: "未知设备" },
];
totalCount.value = 0;
initChart(); initChart();
} }
}); });
......
...@@ -70,7 +70,7 @@ const props = defineProps({ ...@@ -70,7 +70,7 @@ const props = defineProps({
}, },
}); });
// 设备接入数量(在线、离线) // 设备接入数量(在线、离线)
var sumCount = ref([]); var sumCount = ref("0".padStart(9, "0").split(""));
//在线数量 //在线数量
var onLineCount = ref(0); var onLineCount = ref(0);
//离线数量 //离线数量
......
...@@ -45,7 +45,7 @@ ...@@ -45,7 +45,7 @@
<div <div
class="font-medium text-[28px] text-[#66FFFF] font-[YouSheBiaoTiHei]" class="font-medium text-[28px] text-[#66FFFF] font-[YouSheBiaoTiHei]"
> >
{{ processedCount }} {{ ignoredCount }}
</div> </div>
<img <img
src="@/assets/imgs/equ-right-icon.png" src="@/assets/imgs/equ-right-icon.png"
......
<template> <template>
<div ref="mapContainer" class="map-container"></div> <!-- map-container上面加一个下拉框 -->
<div class="map-container w-full h-full relative" id="container">
<div class="absolute top-2 left-2 z-10">
<el-select
style="width: 130px"
v-model="selectedScene"
placeholder="设备筛选"
@change="handleSceneChange"
>
<el-option
v-for="item in deviceData"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div>
</div>
</template> </template>
<script setup lang="ts">
import { ref, onMounted } from 'vue'
import * as echarts from 'echarts'
import sd1Img from '/src/assets/imgs/sd-1.png'
import sd2Img from '/src/assets/imgs/sd-2.png'
import sd3Img from '/src/assets/imgs/sd-3.png'
import tooltipbox from '/src/assets/imgs/tooltipbox1.png'
const mapContainer = ref<HTMLDivElement>()
onMounted(() => {
const myChart = echarts.init(mapContainer.value)
var jsonData = {
"dataPoint": [{
"name": "xxx隧道1",
"value": [112.466466, 37.954529, 300],
"tunnelLength": "5.2公里",
"tunnelType": "双向四车道",
"progress": "75%",
"constructionUnit": "山西路桥建设集团",
"builder": "中铁十二局",
"constructionDays": "450天",
"isCompleted": "否"
}, {
"name": "xxx隧道2",
"value": [112.867566, 36.564529, 300],
"tunnelLength": "3.8公里",
"tunnelType": "双向两车道",
"progress": "92%",
"constructionUnit": "山西交通建设集团",
"builder": "中铁十八局",
"constructionDays": "380天",
"isCompleted": "否"
}]
}
myChart.showLoading();
var colorList = ["#d1d756", "#e8a74f", "#d64560"];
var dataTemp: any[] = jsonData.dataPoint;
var realData = []
echarts.util.each(dataTemp, (item, index) => {
if (index == undefined) return;
realData.push({
name: dataTemp[index].name,
value: dataTemp[index].value,
tunnelLength: dataTemp[index].tunnelLength,
tunnelType: dataTemp[index].tunnelType,
progress: dataTemp[index].progress,
constructionUnit: dataTemp[index].constructionUnit,
builder: dataTemp[index].builder,
constructionDays: dataTemp[index].constructionDays,
isCompleted: dataTemp[index].isCompleted,
itemStyle: {
normal: {
color: colorList[index]
}
}
});
})
const loadJson = async () => { <script setup>
const response = await fetch('/shanxi.json') import { onMounted, onUnmounted, nextTick } from "vue";
const data = await response.json() import AMapLoader from "@amap/amap-jsapi-loader";
return data import mapBg from "/src/assets/imgs/map-bg.png";
} import closeIcon from "/src/assets/imgs/close-icon.png";
import { deviceList } from "@/api/iot/home";
loadJson().then(data => { let map = null;
echarts.registerMap('shanxi', data); let showInfoWindow = false;
myChart.hideLoading(); let infoWindow = null;
var points = ref([]);
const option = {
// 标题 const props = defineProps({
title: { deptId: {
show: false, type: Number,
default: 0,
}, },
});
tooltip: { const deviceData = [
trigger: 'item',
},
// 地理坐标系组件
geo: {
map: 'shanxi',
zoom: 1,
label: {
show: true, // 将这里从false改为true
fontSize: 12, // 可以根据需要调整字体大小
color: '#044B4D', // 标签颜色
},
itemStyle: {
areaColor: 'rgba(4, 31, 83, 0.8)',
// 设置外层边框
borderWidth: 1,
shadowColor: 'rgba(0, 133, 255, 0.4)',
shadowOffsetY: 7,
shadowOffsetX: 7,
},
},
series: [
{ {
// 图表的类型为散点图(地图上的黄色旗子) value: 1,
type: 'scatter', label: "设备1",
name: 'hasProperty',
// 采用的坐标系为地理坐标系
coordinateSystem: 'geo',
// 散点图上点的大小
symbolSize: 26,
// 标记的图形
symbol: function (value, params) {
const imageIndex = params.dataIndex % 3;
if (imageIndex === 0) {
return `image://${sd1Img}`;
} else if (imageIndex === 1) {
return `image://${sd2Img}`;
} else {
return `image://${sd3Img}`;
}
},
// 区名称的样式
label: {
show: true,
formatter: '{b}',
position: 'bottom',
color: '#fff',
fontSize: 14,
},
itemStyle: {
color: '#ddb926',
opacity: 1,
},
// 添加选中模式
selectedMode: 'single', // 可以是'single'或'multiple'
// 添加选中状态的样式
select: {
itemStyle: {
borderColor: '#ff6b6b',
borderWidth: 3,
shadowBlur: 10,
shadowColor: 'rgba(255, 107, 107, 0.5)'
},
symbolSize: 30 // 选中时放大
},
// 添加高亮状态的样式
emphasis: {
itemStyle: {
borderColor: '#2CC5D4',
borderWidth: 2
},
symbolSize: 28 // 悬停时放大
},
// 提示框
tooltip: {
backgroundColor: 'rgba(0, 0, 0, 0.4)',
textStyle: {
color: '#fff',
fontSize: 14,
},
borderWidth: 0,
padding: 0,
alwaysShowContent: true,
className: 'w-full h-full',
formatter: function (params) {
// 检查是否存在隧道详情数据
if (!params.data) {
return params.name + '<br>' + '暂无详细信息';
}
// 使用HTML创建美观的tooltip内容
return `
<div style="background: url(${tooltipbox}) no-repeat; background-size: 100% 100%; width: 280px; height: 210px; padding: 10px;">
<div style="font-size: 18px; font-weight: bold; margin-bottom: 8px; color: #4CAF50;">${params.data.name}</div>
<table style="width: 100%;">
<tr>
<td style="text-align: left; color: #ddd;">隧道总长:</td>
<td style="text-align: right; ">${params.data.tunnelLength}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">隧道类型:</td>
<td style="text-align: right; ">${params.data.tunnelType}</td>
</tr>
<tr>
<td style="text-align: left;color: #ddd;">施工进度:</td>
<td style="text-align: right;">
<span style="display: inline-block; padding: 2px 8px; background-color: ${params.data.progress === '100%' ? '#4CAF50' : '#2196F3'}; border-radius: 4px;">
${params.data.progress}
</span>
</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">建设单位:</td>
<td style="text-align: right;">${params.data.constructionUnit}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">施工单位:</td>
<td style="text-align: right; ">${params.data.builder}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">施工天数:</td>
<td style="text-align: right; ">${params.data.constructionDays}</td>
</tr>
<tr>
<td style="text-align: left; color: #ddd;">是否完工:</td>
<td style="text-align: right; ">
<span style="display: inline-block; padding: 2px 8px; background-color: ${params.data.isCompleted === '是' ? '#4CAF50' : '#FF9800'}; border-radius: 4px;">
${params.data.isCompleted}
</span>
</td>
</tr>
</table>
</div>
`;
},
},
data: realData,
}, },
{ {
"type": "map", value: 2,
"map": "shanxi", label: "设备2",
// 标签的样式
label: {
// 标签在默认状态下的样式
normal: {
show: true,
fontSize: 12, // 可以根据需要调整字体大小
color: '#42d8df', // 标签颜色
},
// 标签在高亮状态下的样式
emphasis: {
show: false,
},
},
// 选中状态下的样式
select: {
// 标签在选中状态下的样式
label: {
show: false,
}, },
];
// 选中状态下地图上区域块的样式 onMounted(() => {
itemStyle: { window._AMapSecurityConfig = {
areaColor: '#2b8bf3', securityJsCode: "40f496011ee130bf5a5713bc90291655",
},
},
// 地图上区域块的样式
itemStyle: {
// 默认状态下地图的颜色
areaColor: 'rgba(4, 31, 83, 0.8)',
borderColor: 'rgba(0, 209, 255, 1)', // #00d2ff
color: '#fff',
// 选中状态下地图的颜色
emphasis: {
areaColor: '#2b8bf3',
},
},
data: [],
},
],
}; };
});
myChart.setOption(option);
function initMap() {
AMapLoader.load({
// 添加点击事件处理 key: "fee919a8e608c39d1d528ec662a2ca17", // 申请好的Web端开发者Key,首次调用 load 时必填
myChart.on('click', function(params) { version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
// 检查点击的是否是散点图元素 plugins: [
if (params.seriesType === 'scatter') { "AMap.Scale",
console.log('点击了散点图:', params); "AMap.DistrictSearch",
"AMap.MarkerCluster",
// 可以在这里处理点击事件,比如显示详情弹窗、跳转到详情页面等 "AMap.IndexCluster",
// 示例:显示点击的隧道信息 "AMap.ToolBar",
if (params.data) { "AMap.MapType",
console.log('隧道名称:', params.data.name); "AMap.Geolocation",
console.log('隧道长度:', params.data.tunnelLength); "AMap.AutoComplete",
console.log('施工进度:', params.data.progress); "AMap.PlaceSearch",
// 这里可以根据需要添加业务逻辑,比如打开详情模态框等 "AMap.HawkEye",
"AMap.InfoWindow",
], //需要使用的的插件列表,如比例尺'AMap.Scale',支持添加多个如:['...','...']
})
.then((AMap) => {
// 绘制省份边界
const district = new AMap.DistrictSearch({
subdistrict: 0,
extensions: "all",
level: "province",
});
district.search("山西", function (status, result) {
// 查询成功时,result即为对应的行政区信息
const bounds = result.districtList[0].boundaries;
const mask = [];
for (let i = 0; i < bounds.length; i++) {
mask.push([bounds[i]]);
}
const map = new AMap.Map("container", {
pitch: 40, // 倾斜角度
zoom: 6.3, // 设置当前显示级别
expandZoomRange: true, // 开启显示范围设置
animateEnable: true,
zooms: [3, 20], //最小显示级别为7,最大显示级别为20
center: [112.55, 37.87], // 设置地图中心点位置
viewMode: "3D", // 特别注意,设置为3D则其他地区不显示
zoomEnable: true, // 是否可以缩放地图
resizeEnable: true, // 是否开启地图自动调整大小
mapStyle: "amap://styles/darkblue", // 地图样式,默认值为amap://styles/normal
// mapStyle: "amap://styles/whitesmoke", //设置地图的显示样式
});
// 添加描边
for (let i = 0; i < bounds.length; i++) {
const polyline = new AMap.Polyline({
path: bounds[i], // polyline 路径,支持 lineString 和 MultiLineString
strokeColor: "blue", // 线条颜色,使用16进制颜色代码赋值。默认值为#00D3FC
strokeWeight: 5, // 轮廓线宽度,默认为:2
// map:map // 这种方式相当于: polyline.setMap(map);
});
polyline.setMap(map);
} }
//添加图层MarkerClusterer
const cluster = new AMap.MarkerClusterer(
map, // 地图实例
points.value, // 海量点数据,数据中需包含经纬度信息字段 lnglat
{
gridSize: 20, // 聚合网格的像素大小,默认值为60
//聚合点样式
// renderClusterMarker: _renderClusterMarker,
//非聚合点样式
renderMarker: (context) => {
const item = context.data[0];
context.marker.setOffset(new AMap.Pixel(-12, -24));
context.marker.setContent(
`<img src="${item.remark}" alt="" style="width: 25px;height: 25px;">`
);
// context.marker.setContent(
// `<div style="width: 10px;height: 10px;">${item.img}</div>`
// );
let isMouseInTooltip = false;
// 自定义点击事件
context.marker.on("click", function (e) {
var info = [];
info.push(
`<div style="background:url(${mapBg}) no-repeat; background-size: 100% 100%;width: 260px;height: 130px;">`
);
info.push(
"<div style='display: flex; align-items: center; justify-content: space-between;'>"
);
info.push(
"<div style='margin-left: 20px;margin-top: 5px; font-size: 16px;font-family: YouSheBiaoTiHei;'>设备信息</div>"
);
info.push(
`<div style="margin-right: 10px;background:url(${closeIcon}) no-repeat; background-size: 100% 100%;height: 20px;width: 20px;" class="close-info-window"></div></div>`
);
// 在创建 InfoWindow 后,通过事件委托绑定点击事件
// document.body.addEventListener("click", function (e) {
// if (e.target.classList.contains("close-info-window")) {
// infoWindow.close(map, e.target.getPosition());
// }
// });
info.push("<div style='display: flex;'>");
info.push(
"<div style='font-size: 11px;color:#357abd;height: 150px'>"
);
info.push(
"<div class='form_info_font'> 设备名称 </div> <div class='form_info_font'> 设备类型 </div> <div class='form_info_font'> 所属单位 </div> <div class='form_info_font'>是否在线</div></div>"
);
info.push(
"<div style='font-size: 11px;color:#000;'> <div class='form_info_font1'> " +
item.name +
"</div> <div class='form_info_font1'>" +
item.sysType +
" </div> <div class='form_info_font1'>" +
item.sysDept.deptName +
"</div> <div class='form_info_font1'> " +
item.state +
"</div></div>"
);
infoWindow = new AMap.InfoWindow({
isCustom: true, // 是否自定义窗体
autoMove: true, // 是否自动调整窗体到视野内
offset: new AMap.Pixel(0, -30),
content: info.join(""), //使用默认信息窗体框样式,显示信息内容
});
infoWindow.open(map, context.marker.getPosition());
var closeBtn = document.querySelector(".close-info-window");
if (closeBtn) {
closeBtn.addEventListener("click", function () {
infoWindow.close(map, e.target.getPosition());
});
}
});
context.marker.on("mouseout", function (e) {
infoWindow.close(map, e.target.getPosition());
});
},
} }
);
}); });
}) })
}) .catch((e) => {
console.log(e);
});
}
//关闭信息窗体
var closeInfoWindow = function () {
infoWindow.close();
};
//聚合点样式
var _renderClusterMarker = function (context) {
// debugger;
// let clusterCount = context.count; //聚合点内点数量
// let clusterData = context.clusterData; //聚合点数组
// let mainKey = context.index.mainKey; //聚合点对应索引
// let constData = clusterData[0][mainKey]; //当前层级(市/区)展示名
// 构建聚合点的显示内容
let content;
content = `
<div style="display: flex; align-items: center; justify-content: center; text-align: center;">
<img style="width:60px; height: 60px;" src="http://webapi.amap.com/theme/v1.3/m1.png"/>
<div style="font-size: 12px; text-align: center;">${111}</div>
</div>`;
context.marker.setContent(content);
// 自定义点击事件
context.marker.on("click", function (e) {
// touchend 移动端点击事件;mouseup pc点击
// let clickType = e.originEvent.type;
//创建窗体实例
// let infoWindow = new AMap.InfoWindow({
// content: "test", //窗体内容,支持插入dom.innerHTML
// anchor: "top-right", //锚点,窗体相对鼠标点击位置
// });
// //显示窗体
// //map:地图实例,[lng,lat]:窗体在地图中位置
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// let infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// 移动端
// if (clusterData.length != 0 && mainKey == "building") {
// setTimeout(() => {
// emits("pointsClick", clusterData); //向父组件传递点位信息
// }, 100);
// }
});
};
//非聚合点样式
var _renderMarker = function (context) {
//context 为回调参数,
//包含如下属性 marker:当前非聚合点
context.marker.setContent('<div style="background-color:#ff0000">1</div>');
// 自定义点击事件
context.marker.on("click", function (e) {
// touchend 移动端点击事件;mouseup pc点击
// let clickType = e.originEvent.type;
// let infoWindow = new AMap.InfoWindow({ offset: new AMap.Pixel(0, -30) });
// infoWindow.open(map, [e.lnglat.lng, e.lnglat.lat]);
// alert(e.lnglat.lng, e.lnglat.lat);
});
};
onUnmounted(() => {
map?.destroy();
});
function getDeviceList() {
deviceList(props.deptId).then((res) => {
points.value = res.rows;
// lnglat: ["113.12", "36.2"],
points.value.forEach((item) => {
item.lnglat = [item.longitude, item.latitude];
item.weight = 1;
});
initMap(); //
});
}
getDeviceList();
</script> </script>
<style scoped lang="scss">
.map-container { <style>
width: 100%; .form_info_font {
height: 100%; font-size: 12px;
color: #fff;
margin-left: 25px;
margin-top: 3px;
/* font-family: "YouSheBiaoTiHei"; */
}
.form_info_font1 {
font-size: 12px;
color: #fff;
margin-left: 10px;
margin-top: 3px;
font-family: "YouSheBiaoTiHei";
} }
</style> </style>
<template>
<div id="map-container" ref="mapContainer" class="w-full h-full"></div>
</template>
<script>
import { ref, onMounted, onBeforeUnmount } from "vue";
onMounted(() => {
initMap();
});
function initMap() {
//创建地图对象
this.map = new AMap.Map("map", {
center: [113.280637, 23.125178],
resizeEnable: true,
zoom: 7,
});
//获取边界坐标点
AMap.plugin("AMap.DistrictSearch", () => {
var districtSearch = new AMap.DistrictSearch({
// 关键字对应的行政区级别,共有5种级别
level: "province",
// 是否显示下级行政区级数,1表示返回下一级行政区
subdistrict: 0,
// 返回行政区边界坐标点
extensions: "all",
});
// 搜索所有省/直辖市信息
districtSearch.search("广东", (status, result) => {
// 查询成功时,result即为对应的行政区信息
this.handlePolygon(result);
});
});
}
// function handlePolygon(result) {
// let bounds = result.districtList[0].boundaries
// if (bounds) {
// for (let i = 0, l = bounds.length; i < l; i++) {
// //生成行政区划polygon
// let polygon = new AMap.Polygon({
// map: this.map, // 指定地图对象
// strokeWeight: 1, // 轮廓线宽度
// path: bounds[i], //轮廓线的节点坐标数组
// fillOpacity: 0.15, //透明度
// fillColor: '#256edc', //填充颜色
// strokeColor: '#256edc', //线条颜色
// })
// polygon.on('click', (e) => {
// // 点击绘制的区域时执行其他交互
// // ......
// })
// }
// // 地图自适应
// this.map.setFitView()
// }
</script>
<style scoped></style>
<template>
<div style="width: 99.5%; height: 100%; display: relative">
<div style="width: 100%; height: 99.5%" id="map-container"></div>
</div>
</template>
<script>
// 引入你的JSON文件
import mapConfig from "@/assets/map_config.json";
import Cluster from "@bmapgl-plugin/cluster";
export default {
props: {
lngLat: {
type: Object,
default: () => {},
},
},
data() {
return {
province: "山西", //镂空面覆盖物绘制地点
provincePoint: {
// 省份中心经纬度
lng: 112.569376,
lat: 37.879831,
},
icons: {
景点: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
美食: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
娱乐: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
其他: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
},
testData: [
{
name: "如家酒店(大同西环路古城云冈店)",
location: {
lat: 40.08472,
lng: 113.274893,
},
address: "大同市平城区西环路1012号",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "如家酒店·neo(大同火车站古城墙店)",
location: {
lat: 40.112869,
lng: 113.305864,
},
address: "大同市平城区山西省大同市平城区操场城街舒心园西南侧",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "47732a158db9f03fa80dd8d8",
telephone: "(010)61943083",
detail: 1,
uid: "47732a158db9f03fa80dd8d8",
},
{
name: "如家酒店(大同云冈同煤大厦店)",
location: {
lat: 40.04529,
lng: 113.18582,
},
address: "大同市云冈区大同市同泉路2609号",
province: "大同市",
city: "大同市",
area: "云冈区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "山西路桥科技中心",
location: {
lat: 37.779196,
lng: 112.594208,
},
address:
"太原市小店区山西省太原市小店区龙城大街中国知网大厦西侧约140米",
province: "太原市",
city: "太原市",
area: "小店区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原清徐路桥有限公司",
location: {
lat: 37.6086,
lng: 112.376871,
},
address: "太原市清徐县山西省太原市清徐县晋夏公路北段128号",
province: "太原市",
city: "太原市",
area: "清徐县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原市升东晟路桥有限公司",
location: {
lat: 37.86051,
lng: 112.618145,
},
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "金泽华府",
location: {
lat: 37.86051,
lng: 112.482037,
},
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "薛公岭隧道",
location: {
lat: 37.357485,
lng: 111.529365,
},
address: "山西省吕梁市",
province: "山西省",
city: "吕梁市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "窑头隧道",
location: {
lat: 36.26254,
lng: 110.805996,
},
address: "山西省临汾市吉县",
province: "山西省",
city: "临汾市",
area: "吉县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "半沟隧道",
location: {
lat: 36.081288,
lng: 111.129536,
},
address: "山西省临汾市乡宁县",
province: "山西省",
city: "临汾市",
area: "乡宁县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "六郎山隧道",
location: {
lat: 39.435607,
lng: 112.29432,
},
address: "山西省朔州市",
province: "山西省",
city: "朔州市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 36.489879,
lng: 113.303412,
},
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 35.919902,
lng: 113.530767,
},
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
],
typeNames: {
camera: "摄像头",
locator: "定位设备",
electricity: "电表",
water: "水表",
},
// POIS2: [
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.40117598725185, 39.917496499307106],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.40609801022335, 39.91781683086878],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.4033665713415, 39.92449656182445],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.40790853727025, 39.91147861064821],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.41044853871885, 39.91612647923265],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.39618975366365, 39.910958630526714],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.40026933598598, 39.90835546566821],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 3 },
// geometry: {
// coordinates: [116.40564023406542, 39.90620748623179],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 1 },
// geometry: {
// coordinates: [116.41125037081005, 39.90843843492922],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "D区", type: 2 },
// geometry: {
// coordinates: [116.41082630756705, 39.92688284638931],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.38301668817219, 39.90858933995743],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38198411670496, 39.90131297510226],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.3892838714981, 39.90018227749477],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 2 },
// geometry: {
// coordinates: [116.39360121462066, 39.89651211104164],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.39820809946946, 39.89163819422168],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.4001758068418, 39.892338593804745],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38194537734067, 39.88686980582857],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38200770208384, 39.88247083918294],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.40640125219007, 39.88955122723463],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.40548744206848, 39.88286572025555],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 2 },
// geometry: {
// coordinates: [116.40916404764522, 39.88432891360925],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.41070696491894, 39.88510584402358],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.40234473483078, 39.88017171403035],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 1 },
// geometry: {
// coordinates: [116.3987213749928, 39.883787242021064],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.41434185411153, 39.888814006865424],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 2 },
// geometry: {
// coordinates: [116.41982806435747, 39.88311565864899],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.4190210738216, 39.89011608374457],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 3 },
// geometry: {
// coordinates: [116.41300051330123, 39.89694073472795],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "A区", type: 1 },
// geometry: {
// coordinates: [116.4138192887874, 39.89468403535929],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37604796635118, 39.90727878462027],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.37383890099464, 39.90825999828604],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 1 },
// geometry: {
// coordinates: [116.37586567530394, 39.91056975145827],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37382829825515, 39.91362965653005],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 3 },
// geometry: {
// coordinates: [116.37760398160935, 39.913881842269426],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 1 },
// geometry: {
// coordinates: [116.37420079620057, 39.918855235149216],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.37837899710793, 39.91789403333389],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.3814336389292, 39.91736851661584],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "C区", type: 2 },
// geometry: {
// coordinates: [116.40386566807278, 39.91452186113865],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 3 },
// geometry: {
// coordinates: [116.38180254030767, 39.899426890521994],
// type: "Point",
// },
// },
// {
// type: "Feature",
// properties: { region: "B区", type: 2 },
// geometry: {
// coordinates: [116.38854832965072, 39.88047000472972],
// type: "Point",
// },
// },
// ],
// DISTRICT: {
// 北京: { center: [116.41166495284781, 39.91132325515489] },
// 亦庄开发区: { center: [116.51304200676753, 39.80159986499759] },
// 密云区: { center: [116.84989592098923, 40.38324333304818] },
// 怀柔区: { center: [116.64350659050258, 40.330619395409954] },
// 门头沟区: { center: [116.11197849644687, 39.94284236690663] },
// 顺义区: { center: [116.65994391271919, 40.13520537588947] },
// 朝阳区: { center: [116.49291431416613, 39.92741782883638] },
// 通州区: { center: [116.66503327354069, 39.908681829896985] },
// 大兴区: { center: [116.344660065905, 39.734563741672254] },
// 昌平区: { center: [116.24250251375423, 40.22385570403618] },
// 西城区: { center: [116.37330041522624, 39.921246010697004] },
// 东城区: { center: [116.42517546956796, 39.923732774405735] },
// 房山区: { center: [116.14561576009883, 39.74170042926774] },
// 石景山区: { center: [116.20196558557446, 39.920498461554565] },
// 海淀区: { center: [116.31681412228001, 39.96206690060246] },
// 丰台区: { center: [116.29337416063721, 39.869974028133] },
// },
// REGION2: {
// A区: [116.4129334479332, 39.89114408478398],
// B区: [116.39381608532736, 39.88834674887524],
// C区: [116.37927800871893, 39.91116256112852],
// D区: [116.40260640778828, 39.916132914732614],
// },
};
},
async mounted() {
setTimeout(() => {
this.initMap();
}, 300);
},
created() {},
methods: {
initMap() {
var map = new BMapGL.Map("map-container", {
enableDblclickZoom: false,
displayOptions: {
building: false,
},
});
// 初始化地图,设置中心点坐标和地图级别
map.centerAndZoom(
new BMapGL.Point(this.provincePoint.lng, this.provincePoint.lat),
7
);
// 开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 本地个性化地图,通过JSON文件的方式获取
map.setMapStyleV2({ styleJson: mapConfig });
// 绘制省份镂空面
var bd = new BMapGL.Boundary();
bd.get(this.province, function (rs) {
var hole = new BMapGL.Polygon(rs.boundaries, {
fillColor: "blue", // 填充颜色
fillOpacity: 0.3, // 填充透明度
strokeWeight: 5, //设置多边形边线线粗
strokeColor: "blue", // 边线颜色
strokeOpacity: 0.5,
});
map.addOverlay(hole);
});
// 添加聚合数据
this.addCluster(map);
},
// 添加聚合数据
// addCluster(map) {
// const cluster = new Cluster.View(map, {
// clusterMinPoints: 2,
// clusterMaxZoom: 18,
// updateRealTime: true,
// fitViewOnClick: true,
// clusterType: [
// [3, 14, Cluster.ClusterType.ATTR_REF, "region"],
// [15, null, Cluster.ClusterType.DIS_PIXEL, 64],
// ],
// clusterDictionary: (type, key) => {
// var center = this.REGION2[key];
// if (center) {
// return {
// point: center,
// };
// }
// return null;
// },
// clusterMap: (props) => {
// var data = {
// 景点: 0,
// 美食: 0,
// 娱乐: 0,
// 其他: 0,
// };
// data[["景点", "美食", "娱乐", "其他"][props.type - 1]] += 1;
// return data;
// },
// clusterReduce: (accumulated, props) => {
// for (var key in props) {
// accumulated[key] += props[key];
// }
// },
// renderClusterStyle: {
// type: Cluster.ClusterRender.DOM,
// inject: (props) => {
// var reduces = props.reduces;
// var size = Math.round(
// 25 + Math.pow(props.pointCount / props.allCount, 1 / 8) * 80
// );
// var reduce_text = "";
// if (reduces) {
// for (var key in reduces) {
// reduce_text +=
// "<img" +
// " src=" +
// this.icons[key] +
// " class=" +
// (key === "其他" ? "icon2" : "icon") +
// " />" +
// reduces[key];
// }
// if (reduce_text.length > 0) {
// size = 12 * Math.max(reduce_text.length, 2) + 20;
// }
// }
// var content =
// '<span class="clusterCount">' + reduce_text + "</span>";
// var text = props.belongValue
// ? '<span class="clusterTitle">' + props.belongValue + "</span>"
// : "";
// text += content;
// var div = document.createElement("div");
// div.className = "cluster-item";
// div.innerHTML = text;
// div.style.color = "#ffffff";
// div.style.textAlign = "center";
// div.style.border = "solid 1px rgba(8,60,156,1)";
// div.style.borderRadius = size + "px";
// div.style.backgroundColor = "rgba(8,60,156,.8)";
// div.style.boxShadow = "0px 0px 5px rgba(0,0,0,0.8)";
// div.style.cursor = "pointer";
// return div;
// },
// },
// renderSingleStyle: {
// type: Cluster.ClusterRender.WEBGL,
// style: {
// width: 16,
// height: 16,
// icon: [
// "match",
// ["get", "type"],
// 1,
// this.icons["景点"],
// 2,
// this.icons["美食"],
// 3,
// this.icons["娱乐"],
// this.icons["其他"],
// ],
// },
// },
// });
// cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
// console.log("ClusterEvent.CLICK", e);
// });
// cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
// console.log("ClusterEvent.MOUSEOVER", e);
// });
// cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
// console.log("ClusterEvent.MOUSEOUT", e);
// });
// cluster.setData(this.POIS2);
// },
// 添加聚合数据
addCluster(map) {
const cluster = new Cluster.View(map);
cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
console.log("ClusterEvent.CLICK", e);
});
cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
// console.log("ClusterEvent.MOUSEOVER", e);
});
cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
// console.log("ClusterEvent.MOUSEOUT", e);
});
var points = Cluster.pointTransformer(this.testData, function (data) {
return {
point: [data.location.lng, data.location.lat],
properties: {
name: data.name,
address: data.address,
province: data.province,
city: data.city,
area: data.area,
},
};
});
cluster.setData(points);
},
},
};
</script>
<style lang="scss" scoped></style>
<style type="text/css">
.anchorBL {
display: none;
}
</style>
<template>
<div ref="mapContainer" class="map-container w-full h-full"></div>
</template>
<script>
import { ref, onMounted, onBeforeUnmount, nextTick } from "vue";
import mapConfig from "@/assets/map_config.json";
import Cluster from "@bmapgl-plugin/cluster";
import { testData } from "@/views/components/mapData";
import { iconsData } from "@/views/components/mapData";
export default {
props: {
lngLat: {
type: Object,
default: () => ({}),
},
},
setup(props) {
const mapContainer = ref(null);
const mapInstance = ref(null);
const resizeObserver = ref(null);
const province = "山西";
const provincePoint = {
lng: 112.569376,
lat: 37.879831,
};
const initMap = () => {
if (!mapContainer.value) return;
// 确保地图容器有明确尺寸
mapContainer.value.style.width = "100%";
mapContainer.value.style.height = "100%";
// 创建地图实例
const map = new BMapGL.Map(mapContainer.value, {
enableDblclickZoom: false,
displayOptions: {
building: false,
},
});
mapInstance.value = map;
// 初始化地图视图
map.centerAndZoom(
new BMapGL.Point(provincePoint.lng, provincePoint.lat),
7
);
// 开启鼠标滚轮缩放
map.enableScrollWheelZoom(true);
// 设置地图样式
map.setMapStyleV2({ styleJson: mapConfig });
// 绘制省份镂空面
var bd = new BMapGL.Boundary();
bd.get(province, function (rs) {
var hole = new BMapGL.Polygon(rs.boundaries, {
fillColor: "blue",
fillOpacity: 0.2,
strokeWeight: 5,
strokeColor: "blue",
strokeOpacity: 0.5,
});
map.addOverlay(hole);
});
// 添加聚合数据
addCluster(map);
};
const addCluster = (map) => {
const cluster = new Cluster.View(map, {
renderSingleStyle: {
type: Cluster.ClusterRender.WEBGL,
style: {
width: 13,
height: 13,
icon: [
"match",
["get", "type"],
1,
iconsData[0],
2,
iconsData[1],
3,
iconsData[2],
iconsData[3],
],
},
},
});
cluster.on(Cluster.ClusterEvent.CLICK, (e) => {
// 点击聚合事件
});
cluster.on(Cluster.ClusterEvent.MOUSE_OVER, (e) => {
if (!e.isCluster) {
let sContent = `
<div>
<p style="font-size:14px;">设备名称:${
e.properties.typeNames
}</p>
<p style="font-size:14px;">在线状态:<span style="color:${
e.properties.online ? "green" : "red"
};">${e.properties.online ? "在线" : "不在线"}</span></p>
<p style="font-size:14px;">设备地址:${e.properties.address}</p>
<p style="font-size:14px;">城市:${e.properties.city} ${
e.properties.area
}</p>
</div>
`;
let opts = {
offset: new BMapGL.Size(10, -20),
};
let infoWindow = new BMapGL.InfoWindow(sContent, opts);
let point = new BMapGL.Point(e.latLng[0], e.latLng[1]);
map.openInfoWindow(infoWindow, point);
}
});
cluster.on(Cluster.ClusterEvent.MOUSE_OUT, (e) => {
if (!e.isCluster) {
map.closeInfoWindow();
}
});
var points = Cluster.pointTransformer(testData, function (data) {
return {
point: [data.location.lng, data.location.lat],
properties: {
name: data.name,
address: data.address,
province: data.province,
city: data.city,
area: data.area,
type: data.properties.type,
typeNames: data.typeNames,
online: data.online,
},
};
});
cluster.setData(points);
};
// 监听容器大小变化
const setupResizeObserver = () => {
if (typeof ResizeObserver !== "undefined" && mapContainer.value) {
resizeObserver.value = new ResizeObserver(() => {
if (mapInstance.value) {
mapInstance.value.centerAndZoom(
new BMapGL.Point(provincePoint.lng, provincePoint.lat),
mapInstance.value.getZoom()
);
}
});
resizeObserver.value.observe(mapContainer.value);
}
};
onMounted(() => {
nextTick(() => {
// 确保DOM完全渲染
setTimeout(() => {
initMap();
setupResizeObserver();
}, 300);
});
});
onBeforeUnmount(() => {
if (resizeObserver.value) {
resizeObserver.value.disconnect();
}
if (mapInstance.value) {
mapInstance.value.destroy();
}
});
return {
mapContainer,
};
},
};
</script>
<style lang="scss" scoped>
.map-container {
:deep(.BMap_bubble_content) {
color: #fff !important;
top: -15px !important;
}
:deep(.BMap_bubble_pop) {
background-color: #121b4d !important;
border: 1px solid #408bde !important;
}
}
// 隐藏百度地图logo
:global(.anchorBL) {
display: none;
}
</style>
...@@ -8,7 +8,6 @@ import { ref, onMounted, onBeforeUnmount } from "vue"; ...@@ -8,7 +8,6 @@ import { ref, onMounted, onBeforeUnmount } from "vue";
import * as echarts from "echarts"; import * as echarts from "echarts";
import { debounce } from "lodash-es"; // 或使用自定义防抖函数 import { debounce } from "lodash-es"; // 或使用自定义防抖函数
import { deviceCountByChild } from "@/api/iot/home"; import { deviceCountByChild } from "@/api/iot/home";
import { de } from "element-plus/es/locales.mjs";
const chartRef = ref<HTMLDivElement>(); const chartRef = ref<HTMLDivElement>();
const chart = ref<echarts.ECharts | null>(null); const chart = ref<echarts.ECharts | null>(null);
...@@ -34,6 +33,18 @@ const initChart = () => { ...@@ -34,6 +33,18 @@ const initChart = () => {
chart.value?.dispose(); chart.value?.dispose();
chart.value = echarts.init(chartRef.value); chart.value = echarts.init(chartRef.value);
const option = { const option = {
title: {
show: xData.value[0] === "",
text: "暂无数据",
x: "center",
y: "center",
textStyle: {
fontSize: 16,
color: "#66FFFF",
fontFamily: "PangMen",
},
},
tooltip: { tooltip: {
trigger: "axis", trigger: "axis",
axisPointer: { axisPointer: {
...@@ -43,6 +54,7 @@ const initChart = () => { ...@@ -43,6 +54,7 @@ const initChart = () => {
legend: { legend: {
show: false, show: false,
}, },
xAxis: { xAxis: {
data: xData.value, data: xData.value,
axisLabel: { axisLabel: {
...@@ -104,18 +116,28 @@ onMounted(() => { ...@@ -104,18 +116,28 @@ onMounted(() => {
deviceCountByChild(props.deptId).then((res: any) => { deviceCountByChild(props.deptId).then((res: any) => {
if (res.code === 200) { if (res.code === 200) {
const childDeptList = res.result?.childDeptList || []; const childDeptList = res.result?.childDeptList || [];
const numMap = res.result?.numMap || []; const numMap = res.result?.numMap || {};
if (numMap && Object.keys(numMap).length > 0) {
//numMap中的 key 和childDeptList.deptId 进行匹配 //numMap中的 key 和childDeptList.deptId 进行匹配
Object.entries(numMap).forEach(([key, value]) => { Object.entries(numMap).forEach(([key, value]) => {
console.log(`Key: ${key}, Value: ${value}`);
yData.value.push(value); yData.value.push(value);
// 匹配到后,将对应的部门名称添加到 xData // 匹配到后,将对应的部门名称添加到xData
for (let i = 0; i < childDeptList.length; i++) { for (let i = 0; i < childDeptList.length; i++) {
if (childDeptList[i].deptId === Number(key)) { if (childDeptList[i].deptId === Number(key)) {
xData.value.push(childDeptList[i].deptName); xData.value.push(childDeptList[i].deptName);
} }
} }
}); });
} else {
// 没有匹配到的部门,添加默认值
xData.value.push("");
yData.value.push(0);
}
initChart();
} else {
// 没有子部门,添加默认值
xData.value.push("");
yData.value.push(0);
initChart(); initChart();
} }
}); });
......
...@@ -41,47 +41,53 @@ ...@@ -41,47 +41,53 @@
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { sw } from "element-plus/es/locales.mjs";
import { ref } from "vue"; import { ref } from "vue";
import { useRouter } from "vue-router"; import { useRouter } from "vue-router";
import { countBySysType } from "@/api/iot/home";
const router = useRouter(); const router = useRouter();
const props = defineProps({
deptId: {
type: Number,
default: 0,
},
});
const sysClassificationList = ref([ const sysClassificationList = ref([
{ {
name: "智慧隧道", name: "智慧隧道",
number: 100, number: 0,
online: 150, online: 0,
offline: 10, offline: 0,
}, },
{ {
name: "幸福小镇", name: "幸福小镇",
number: 110, number: 0,
online: 100, online: 0,
offline: 20, offline: 0,
}, },
{ {
name: "智慧园区", name: "智慧园区",
number: 234, number: 0,
online: 50, online: 0,
offline: 30, offline: 0,
}, },
{ {
name: "拌合站", name: "拌合站",
number: 455, number: 0,
online: 200, online: 0,
offline: 50, offline: 0,
}, },
{ {
name: "视频监控", name: "视频监控",
number: 231, number: 0,
online: 100, online: 0,
offline: 0, offline: 0,
}, },
{ {
name: "钢筋场", name: "钢筋场",
number: 432, number: 0,
online: 30, online: 0,
offline: 11, offline: 0,
}, },
]); ]);
...@@ -113,6 +119,22 @@ const handleClick = (item: any, index: number) => { ...@@ -113,6 +119,22 @@ const handleClick = (item: any, index: number) => {
break; break;
} }
}; };
function getCountBySysType() {
countBySysType(props.deptId).then((res: any) => {
if (res.code === 200) {
res.data.map((item: any) => {
// 如果 item.type==1 则赋值给 sysClassificationList[0]
if (item.type === 1) {
sysClassificationList.value[0].number = item.count || 0; // 智慧隧道 总数
sysClassificationList.value[0].online = item.count || 0; // 在线
// sysClassificationList.value[0].offline = item.offline || 0;
}
});
}
});
}
getCountBySysType();
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
......
export const iconsData = {
0: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
1: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
2: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
3: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
};
export const testData = [
{
name: "如家酒店(大同西环路古城云冈店)",
location: {
lat: 40.08472,
lng: 113.274893,
},
type: "1",
properties: { region: "C区", type: 2 },
online: true,
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市平城区西环路1012号",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "如家酒店·neo(大同火车站古城墙店)",
location: {
lat: 40.112869,
lng: 113.305864,
},
properties: { region: "C区", type: 1 },
type: "1",
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市平城区山西省大同市平城区操场城街舒心园西南侧",
province: "大同市",
city: "大同市",
area: "平城区",
street_id: "47732a158db9f03fa80dd8d8",
telephone: "(010)61943083",
detail: 1,
uid: "47732a158db9f03fa80dd8d8",
},
{
name: "如家酒店(大同云冈同煤大厦店)",
location: {
lat: 40.04529,
lng: 113.18582,
},
type: "1",
properties: { region: "C区", type: 1 },
online: true,
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
address: "大同市云冈区大同市同泉路2609号",
province: "大同市",
city: "大同市",
area: "云冈区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "山西路桥科技中心",
location: {
lat: 37.779196,
lng: 112.594208,
},
type: "2",
online: true,
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市小店区山西省太原市小店区龙城大街中国知网大厦西侧约140米",
province: "太原市",
city: "太原市",
area: "小店区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原清徐路桥有限公司",
location: {
lat: 37.6086,
lng: 112.376871,
},
type: "2",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市清徐县山西省太原市清徐县晋夏公路北段128号",
province: "太原市",
city: "太原市",
area: "清徐县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "太原市升东晟路桥有限公司",
location: {
lat: 37.86051,
lng: 112.618145,
},
type: "2",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "金泽华府",
location: {
lat: 37.86051,
lng: 112.482037,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "太原市迎泽区山西省太原市迎泽区朝阳街96号",
province: "太原市",
city: "太原市",
area: "迎泽区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "薛公岭隧道",
location: {
lat: 37.357485,
lng: 111.529365,
},
type: "3",
properties: { region: "C区", type: 2 },
typeNames: "定位设备",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省吕梁市",
province: "山西省",
city: "吕梁市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "窑头隧道",
location: {
lat: 36.26254,
lng: 110.805996,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省临汾市吉县",
province: "山西省",
city: "临汾市",
area: "吉县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "半沟隧道",
location: {
lat: 36.081288,
lng: 111.129536,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: false,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省临汾市乡宁县",
province: "山西省",
city: "临汾市",
area: "乡宁县",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "六郎山隧道",
location: {
lat: 39.435607,
lng: 112.29432,
},
type: "3",
properties: { region: "C区", type: 3 },
typeNames: "电表",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省朔州市",
province: "山西省",
city: "朔州市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 36.489879,
lng: 113.303412,
},
type: "3",
properties: { region: "C区", type: 3 },
typeNames: "电表",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
{
name: "风洞山隧道",
location: {
lat: 35.919902,
lng: 113.530767,
},
type: "3",
properties: { region: "C区", type: 1 },
typeNames: "摄像头",
online: true,
icon: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
address: "山西省长治市",
province: "山西省",
city: "长治市",
area: "xx区",
street_id: "",
telephone: "(010)62242828",
detail: 1,
uid: "6445b9b2a9f16497a80dd84f",
},
];
// 测试数据
export const POIS2 = [
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.40117598725185, 39.917496499307106],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.40609801022335, 39.91781683086878],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.4033665713415, 39.92449656182445],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.40790853727025, 39.91147861064821],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.41044853871885, 39.91612647923265],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.39618975366365, 39.910958630526714],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.40026933598598, 39.90835546566821],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 3 },
geometry: {
coordinates: [116.40564023406542, 39.90620748623179],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 1 },
geometry: {
coordinates: [116.41125037081005, 39.90843843492922],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "D区", type: 2 },
geometry: {
coordinates: [116.41082630756705, 39.92688284638931],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.38301668817219, 39.90858933995743],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38198411670496, 39.90131297510226],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.3892838714981, 39.90018227749477],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 2 },
geometry: {
coordinates: [116.39360121462066, 39.89651211104164],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.39820809946946, 39.89163819422168],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.4001758068418, 39.892338593804745],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38194537734067, 39.88686980582857],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38200770208384, 39.88247083918294],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.40640125219007, 39.88955122723463],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.40548744206848, 39.88286572025555],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 2 },
geometry: {
coordinates: [116.40916404764522, 39.88432891360925],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.41070696491894, 39.88510584402358],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.40234473483078, 39.88017171403035],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 1 },
geometry: {
coordinates: [116.3987213749928, 39.883787242021064],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.41434185411153, 39.888814006865424],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 2 },
geometry: {
coordinates: [116.41982806435747, 39.88311565864899],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.4190210738216, 39.89011608374457],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 3 },
geometry: {
coordinates: [116.41300051330123, 39.89694073472795],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "A区", type: 1 },
geometry: {
coordinates: [116.4138192887874, 39.89468403535929],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37604796635118, 39.90727878462027],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.37383890099464, 39.90825999828604],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 1 },
geometry: {
coordinates: [116.37586567530394, 39.91056975145827],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37382829825515, 39.91362965653005],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 3 },
geometry: {
coordinates: [116.37760398160935, 39.913881842269426],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 1 },
geometry: {
coordinates: [116.37420079620057, 39.918855235149216],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.37837899710793, 39.91789403333389],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.3814336389292, 39.91736851661584],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "C区", type: 2 },
geometry: {
coordinates: [116.40386566807278, 39.91452186113865],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 3 },
geometry: {
coordinates: [116.38180254030767, 39.899426890521994],
type: "Point",
},
},
{
type: "Feature",
properties: { region: "B区", type: 2 },
geometry: {
coordinates: [116.38854832965072, 39.88047000472972],
type: "Point",
},
},
];
export const icons = {
景点: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/place.png",
美食: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/food.png",
娱乐: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/play.png",
其他: "https://mapopen-pub-jsapi.cdn.bcebos.com/static/img/other.png",
};
export const DISTRICT = {
北京: { center: [116.41166495284781, 39.91132325515489] },
亦庄开发区: { center: [116.51304200676753, 39.80159986499759] },
密云区: { center: [116.84989592098923, 40.38324333304818] },
怀柔区: { center: [116.64350659050258, 40.330619395409954] },
门头沟区: { center: [116.11197849644687, 39.94284236690663] },
顺义区: { center: [116.65994391271919, 40.13520537588947] },
朝阳区: { center: [116.49291431416613, 39.92741782883638] },
通州区: { center: [116.66503327354069, 39.908681829896985] },
大兴区: { center: [116.344660065905, 39.734563741672254] },
昌平区: { center: [116.24250251375423, 40.22385570403618] },
西城区: { center: [116.37330041522624, 39.921246010697004] },
东城区: { center: [116.42517546956796, 39.923732774405735] },
房山区: { center: [116.14561576009883, 39.74170042926774] },
石景山区: { center: [116.20196558557446, 39.920498461554565] },
海淀区: { center: [116.31681412228001, 39.96206690060246] },
丰台区: { center: [116.29337416063721, 39.869974028133] },
};
export const REGION2 = {
A: [116.4129334479332, 39.89114408478398],
B: [116.39381608532736, 39.88834674887524],
C: [116.37927800871893, 39.91116256112852],
D: [116.40260640778828, 39.916132914732614],
};
...@@ -54,6 +54,7 @@ export default defineConfig({ ...@@ -54,6 +54,7 @@ export default defineConfig({
proxy: { proxy: {
"/dev-api": { "/dev-api": {
target: "http://192.168.19.84:8081", target: "http://192.168.19.84:8081",
// target: "http://192.168.19.9:8081",
changeOrigin: true, changeOrigin: true,
rewrite: (path) => path.replace(/^\/dev-api/, ""), rewrite: (path) => path.replace(/^\/dev-api/, ""),
}, },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment