Fix initial zoom
Deploy Livetrail / deploy (push) Successful in 29s

This commit is contained in:
franzz committed 2026-10-05 15:01:47 +02:00
1 parent 6df463391e
commit 07b6b7b243
5 files changed
+180 -166

No files matched your search

+120 -137
View File
@@ -14,7 +14,7 @@
"@uppy/core": "^6.0.0", "@uppy/core": "^6.0.0",
"@uppy/xhr-upload": "^6.0.0", "@uppy/xhr-upload": "^6.0.0",
"autosize": "^6.0.1", "autosize": "^6.0.1",
"maplibre-gl": "^6.0.0", "maplibre-gl": "^6.12.0",
"sass": "^1.97.2", "sass": "^1.97.2",
"simplebar-vue": "^2.3.3", "simplebar-vue": "^2.3.3",
"vue": "^3.5.40" "vue": "^3.5.40"
@@ -404,9 +404,9 @@
} }
}, },
"node_modules/@maplibre/geojson-vt": { "node_modules/@maplibre/geojson-vt": {
"version": "6.1.1", "version": "6.1.2",
"resolved": "https://registry.npmjs.org/@maplibre/geojson-vt/-/geojson-vt-6.1.1.tgz", "resolved": "https://registry.npmjs.org/@maplibre/geojson-vt/-/geojson-vt-6.1.2.tgz",
"integrity": "sha512-FVMOcmSP/yqol45t7StApEyTL5/vmqBCuFhH9n+fFuINenhaX+YgHHIt1yJ86S8kln3uJLcMvmEU2cfn6E2eCQ==", "integrity": "sha512-2ZYhobdAY+y4/P/z1xe0698165LywD0yDdWugdu3NRUrajgVWut+tLkcz7i/RJguMTURwK7gxwmwYMFJbgbQFw==",
"license": "ISC", "license": "ISC",
"dependencies": { "dependencies": {
"kdbush": "^4.1.0" "kdbush": "^4.1.0"
@@ -452,9 +452,9 @@
} }
}, },
"node_modules/@oxc-project/types": { "node_modules/@oxc-project/types": {
"version": "0.151.0", "version": "0.152.0",
"resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.151.0.tgz", "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.152.0.tgz",
"integrity": "sha512-J1yXrIlNDZVzE3ada310xeAw7nH8yCAyLPuUIsjKatFPmfn5bS1oW+cM+QsGOtVWd5nhSpbwZWx/rue+r5Z+PA==", "integrity": "sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"funding": { "funding": {
@@ -755,9 +755,9 @@
} }
}, },
"node_modules/@rolldown/binding-android-arm-eabi": { "node_modules/@rolldown/binding-android-arm-eabi": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm-eabi/-/binding-android-arm-eabi-1.2.12.tgz",
"integrity": "sha512-bp9svZb+QurZeh+8H4BhrZkifEB0YBNvTVzNSJnJQkj4NrRwmQoDUCGP0vSN7PbvLeM7l1tK6GXL8mrTiH2myg==", "integrity": "sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -772,9 +772,9 @@
} }
}, },
"node_modules/@rolldown/binding-android-arm64": { "node_modules/@rolldown/binding-android-arm64": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.12.tgz",
"integrity": "sha512-wm6Dld3RXUAZ/gRWKyUy+4W1B5CB5UeFaOzsSWJWEdxZXHH8rCYiZ5dGe6oJmhsunAPWzL7FZV+VtvmN5Ye2eA==", "integrity": "sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -789,9 +789,9 @@
} }
}, },
"node_modules/@rolldown/binding-darwin-arm64": { "node_modules/@rolldown/binding-darwin-arm64": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.12.tgz",
"integrity": "sha512-UbEfXq/AqGNgRTV3ik+X/iR6mUxu2QdYAadwRxJWquUGnW6gDqdP1FtLtFXRow7RJx0ssRwi80XAPr4r+4DtsA==", "integrity": "sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -806,9 +806,9 @@
} }
}, },
"node_modules/@rolldown/binding-darwin-x64": { "node_modules/@rolldown/binding-darwin-x64": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.12.tgz",
"integrity": "sha512-7f5h17q5KZVx/ji1vb8OTq31ch1O2I7K8NPIr44GkyWTApXMIsmhWqZfgpOH10xeauqghDAvGlZktasCkcF6Eg==", "integrity": "sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -823,9 +823,9 @@
} }
}, },
"node_modules/@rolldown/binding-freebsd-x64": { "node_modules/@rolldown/binding-freebsd-x64": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.12.tgz",
"integrity": "sha512-ynOk/eEYhC6ZB2xCGvKrEOwE58oBy9LnrAqtkrDF9Fz1VTaNdGZTsV0VarJdhPwb+sOJTGjCLwcuyRJZ1dnMcQ==", "integrity": "sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -840,9 +840,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-arm-gnueabihf": { "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.12.tgz",
"integrity": "sha512-ERrAs185meZZhGan7a4l3RiiJK1ArSDlHdST++uvSxe+FDbR4TwUPahT/cbZJvaG6fIpDpF78surN+tX708Y4Q==", "integrity": "sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==",
"cpu": [ "cpu": [
"arm" "arm"
], ],
@@ -857,9 +857,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-arm64-gnu": { "node_modules/@rolldown/binding-linux-arm64-gnu": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.12.tgz",
"integrity": "sha512-KN7OHKD0J3jy1UzBwZWPxpwhODf9IARUIJcrH+yLYKOcmegZ8luEUM38lDP1bDVj40yP6PsSzCqOJF76vljFnQ==", "integrity": "sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -877,9 +877,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-arm64-musl": { "node_modules/@rolldown/binding-linux-arm64-musl": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.12.tgz",
"integrity": "sha512-8l9wP8O+wa8zD6iw6egSfzVtu7oZVfH3hlUsMM4MwbLMhxleqeoXbZzjddyK3YyNlwLhqznq3tF7PkNJ8T/V2w==", "integrity": "sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -897,9 +897,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-ppc64-gnu": { "node_modules/@rolldown/binding-linux-ppc64-gnu": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.12.tgz",
"integrity": "sha512-SeXNKeQzA5kLhz/J0CH6ZP0/HJ3v1xm/0YbiYpE0kK7emfRC2OIGGIaE14xzkISEGv2aYuUSpiLiU5Gbq+OI0A==", "integrity": "sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==",
"cpu": [ "cpu": [
"ppc64" "ppc64"
], ],
@@ -917,9 +917,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-s390x-gnu": { "node_modules/@rolldown/binding-linux-s390x-gnu": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.12.tgz",
"integrity": "sha512-mtht0nR+y8/hart4175Ll15w7lY8dg7CtQ+j2FDNTsDRspOWTK/2V3l0aj9sIj7XmvqxT8Yli/wq22e7feTTWg==", "integrity": "sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==",
"cpu": [ "cpu": [
"s390x" "s390x"
], ],
@@ -937,9 +937,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-x64-gnu": { "node_modules/@rolldown/binding-linux-x64-gnu": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.12.tgz",
"integrity": "sha512-FSM94nGd55NYo48usCyM/nHfUKRnqc9+b0vJNuKV0oCCpIp/OGims7rO1Nv/DkFkt0S/s2rxsJ2kkS8J3HcpeA==", "integrity": "sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -957,9 +957,9 @@
} }
}, },
"node_modules/@rolldown/binding-linux-x64-musl": { "node_modules/@rolldown/binding-linux-x64-musl": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.12.tgz",
"integrity": "sha512-C3YxNB16myRLs7o+B+6PnQ6jBsdIS4+AE4Ah8glVGhDpEv9AOvxhZ/1duAb4B0UGczEK/lBbccksd8VI+p6zfw==", "integrity": "sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -977,9 +977,9 @@
} }
}, },
"node_modules/@rolldown/binding-openharmony-arm64": { "node_modules/@rolldown/binding-openharmony-arm64": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.12.tgz",
"integrity": "sha512-571TlE/F1eeTjjdjYAMMMPs1Mfv3MtX6s3+ZKVU6HiUjZ5Njc6c/qzNy/8K3zALTZnaw3JQVYrHxvNfjm43KAg==", "integrity": "sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -994,9 +994,9 @@
} }
}, },
"node_modules/@rolldown/binding-win32-arm64-msvc": { "node_modules/@rolldown/binding-win32-arm64-msvc": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.12.tgz",
"integrity": "sha512-QXW+ZWaiqs2c7Fi++D/SsW07LTPcUrncxcskJGfGNBoaLik1IU6fJymz4HsqwEO0u5Iq11yTO0B/mc4cPk7jrQ==", "integrity": "sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==",
"cpu": [ "cpu": [
"arm64" "arm64"
], ],
@@ -1011,9 +1011,9 @@
} }
}, },
"node_modules/@rolldown/binding-win32-x64-msvc": { "node_modules/@rolldown/binding-win32-x64-msvc": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.10.tgz", "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.12.tgz",
"integrity": "sha512-5FQFGgah17YeMtG1Yd5a+rMxQpTksyNXxRtKz06FVTaQw3RKYUJQbUoKk0/5jrXBpDo+7makNP7UHA2LQyH64A==", "integrity": "sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==",
"cpu": [ "cpu": [
"x64" "x64"
], ],
@@ -1070,16 +1070,10 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/retry": {
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
"integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==",
"license": "MIT"
},
"node_modules/@uppy/core": { "node_modules/@uppy/core": {
"version": "6.0.1", "version": "6.2.0",
"resolved": "https://registry.npmjs.org/@uppy/core/-/core-6.0.1.tgz", "resolved": "https://registry.npmjs.org/@uppy/core/-/core-6.2.0.tgz",
"integrity": "sha512-H+v4tOBPYY8Cf0JWoGa3+JPTl9Of8SBaVUH5TNwGgynncTWrQtuyGK91hv9wOjm0SFds3X5psPx1ArhngdSrBg==", "integrity": "sha512-GujQtHazyHM2jjoNZyZlB+R3mUf1bynx0D+sPRt4IfLEfV09LbqA1kzwabL+WEKFdfqls15T+a/4u3XGV4n/oQ==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@transloadit/prettier-bytes": "^2.0.0", "@transloadit/prettier-bytes": "^2.0.0",
@@ -1087,19 +1081,19 @@
"lodash": "^4.18.1", "lodash": "^4.18.1",
"mime-match": "^1.0.2", "mime-match": "^1.0.2",
"namespace-emitter": "^2.0.1", "namespace-emitter": "^2.0.1",
"nanoid": "^5.1.11", "nanoid": "^6.0.1",
"p-queue": "^9.3.3", "p-queue": "^9.3.3",
"p-retry": "^6.1.0", "p-retry": "^8.0.0",
"preact": "^10.29.2" "preact": "^10.29.2"
} }
}, },
"node_modules/@uppy/xhr-upload": { "node_modules/@uppy/xhr-upload": {
"version": "6.0.0", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-6.0.0.tgz", "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-6.0.1.tgz",
"integrity": "sha512-r1EV5LUoMCQjeQVkc+qupCXA5wn8vRV7m3iB5K7z/4nkSj7lEt4Hk0fkudeQ/h4sF9wi3SqAM1x2Syhbt6Ar8A==", "integrity": "sha512-4G5COa9yu6LZkYBupbDm02Rn8WloHw8wor+RiPNpQ1+Vdgk4MD5iFurRE4cHRzXjzDibFKeJH1B4qK5hKqaQnw==",
"license": "MIT", "license": "MIT",
"peerDependencies": { "peerDependencies": {
"@uppy/core": "^6.0.0" "@uppy/core": "^6.2.0"
} }
}, },
"node_modules/@vitejs/plugin-vue": { "node_modules/@vitejs/plugin-vue": {
@@ -1407,9 +1401,9 @@
} }
}, },
"node_modules/earcut": { "node_modules/earcut": {
"version": "3.2.3", "version": "3.2.4",
"resolved": "https://registry.npmjs.org/earcut/-/earcut-3.2.3.tgz", "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.2.4.tgz",
"integrity": "sha512-vnS4AVwp1KHAF13i1vp1/2D5evWy3k5u/iW/B81QVsUZtV8cv2tU0b2VNFlqvh4kYwrFMDdjPCfAmfyJW9y14Q==", "integrity": "sha512-FHc6yNpnTORB0tM5kmZ03iD2mDuNakDE2lvf4Hw1XkfxtEHIGVi01B/GqUSwx+NcC1WGjidAfpTXzeALtPtfpg==",
"license": "ISC" "license": "ISC"
}, },
"node_modules/entities": { "node_modules/entities": {
@@ -1438,9 +1432,9 @@
} }
}, },
"node_modules/eslint": { "node_modules/eslint": {
"version": "10.11.0", "version": "10.12.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-10.11.0.tgz", "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.12.0.tgz",
"integrity": "sha512-P7a6UEEqb9G95MYAtqkmsTbVXIYyzIfl6NGOIJk162PaahFxFyeGcrlXYFSiagECg4sEm8IseJdZBKR3rx6MsQ==", "integrity": "sha512-npHjrHb2o4ehH3mE+YuxABR+0gyb0aVWCIolgJDArwCiHEIsonBm3ZKjel5b0U5+a+MbEvIyRCGCzD3eKKK2NA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"workspaces": [ "workspaces": [
@@ -1756,9 +1750,9 @@
} }
}, },
"node_modules/globals": { "node_modules/globals": {
"version": "17.12.0", "version": "17.13.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", "resolved": "https://registry.npmjs.org/globals/-/globals-17.13.0.tgz",
"integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", "integrity": "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"engines": { "engines": {
@@ -2217,9 +2211,9 @@
} }
}, },
"node_modules/maplibre-gl": { "node_modules/maplibre-gl": {
"version": "6.11.2", "version": "6.12.0",
"resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.11.2.tgz", "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.12.0.tgz",
"integrity": "sha512-Xh06pxoipjX/Ad1sUPGhiNh9go9naCNGZZ1IJm3sIeqK1kYGuMaMDSTIGDQ2igOLfVyukJU7kvEOA089VO7Z7g==", "integrity": "sha512-DwgganVi2BhNxOpD7ob3lJC0dQQz4HfJfuQQV3XxCY3XdOzFrMqp9ylMXhRzryRsOnIezdZcklWXIIs/Q8JPjA==",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"dependencies": { "dependencies": {
"@mapbox/point-geometry": "^1.1.0", "@mapbox/point-geometry": "^1.1.0",
@@ -2232,7 +2226,7 @@
"@maplibre/vt-pbf": "^4.3.2", "@maplibre/vt-pbf": "^4.3.2",
"@types/geojson": "^7946.0.16", "@types/geojson": "^7946.0.16",
"bidi-js": "^1.1.0", "bidi-js": "^1.1.0",
"earcut": "^3.2.3", "earcut": "^3.2.4",
"gl-matrix": "^3.4.4", "gl-matrix": "^3.4.4",
"kdbush": "^4.1.0", "kdbush": "^4.1.0",
"murmurhash-js": "^1.0.0", "murmurhash-js": "^1.0.0",
@@ -2303,9 +2297,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
"version": "5.1.16", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.16.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-6.0.1.tgz",
"integrity": "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==", "integrity": "sha512-3wVS3i51pE2pi1k5FFL/95BGfVS0kSsvDVuGXHOtxox/TywUmtgq+3qiTOTbs9J7KfHaXPiN171k/A6dBnaXFw==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@@ -2317,7 +2311,7 @@
"nanoid": "bin/nanoid.js" "nanoid": "bin/nanoid.js"
}, },
"engines": { "engines": {
"node": "^18 || >=20" "node": "^22 || ^24 || >=26"
} }
}, },
"node_modules/natural-compare": { "node_modules/natural-compare": {
@@ -2414,17 +2408,15 @@
} }
}, },
"node_modules/p-retry": { "node_modules/p-retry": {
"version": "6.2.1", "version": "8.0.1",
"resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.1.tgz",
"integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", "integrity": "sha512-NAigyu8hfvJe7MsS18mnc4is0MZtau3QMdBklaJKK23oBQb6occO3UPM3vHmTckW8KhfyjMZaUOqdTFEYliHgg==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@types/retry": "0.12.2", "is-network-error": "^1.3.0"
"is-network-error": "^1.0.0",
"retry": "^0.13.1"
}, },
"engines": { "engines": {
"node": ">=16.17" "node": ">=22"
}, },
"funding": { "funding": {
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
@@ -2494,9 +2486,9 @@
} }
}, },
"node_modules/postcss": { "node_modules/postcss": {
"version": "8.5.28", "version": "8.5.29",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.28.tgz", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.29.tgz",
"integrity": "sha512-RRuzqDtt5Y9h3quz5hWhK+TPnsmVs6WwSU6LkJMeY4HstUEDuYTG8UJSdawMRzmzAtV+KEoG8N3Qg2qLy5vM/A==", "integrity": "sha512-49cGhUbXj8Qenv0iTMxA1cFBzxXoctpC9Ujd77t1WcbJIr6nF/eI7g/8MgxrYldFRuAXvja7xQRwavoW7kgrxQ==",
"funding": [ "funding": [
{ {
"type": "opencollective", "type": "opencollective",
@@ -2513,9 +2505,9 @@
], ],
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"nanoid": "^3.3.18", "nanoid": "^3.3.19",
"picocolors": "^1.1.1", "picocolors": "^1.1.1",
"source-map-js": "^1.2.1" "source-map-js": "^1.2.2"
}, },
"engines": { "engines": {
"node": "^10 || ^12 || >=14" "node": "^10 || ^12 || >=14"
@@ -2536,9 +2528,9 @@
} }
}, },
"node_modules/postcss/node_modules/nanoid": { "node_modules/postcss/node_modules/nanoid": {
"version": "3.3.19", "version": "3.3.20",
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.19.tgz", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.20.tgz",
"integrity": "sha512-Y2tUNy4ouw6tq5oDSKeQYGOyhkUBhNOcGV/02KC+6kd9eDGqdZd++mjMiIDilrBYvjEnCYvVtsuHCuP+okSfug==", "integrity": "sha512-uKdg2G3GNCKQn9byYOpxbGqrT2fGO5KRt5J/8b3pok8rT6qxGWF6hxMyJiEYtAf+FVyYuD9hRaDqX5uPFYJ4ZQ==",
"funding": [ "funding": [
{ {
"type": "github", "type": "github",
@@ -2660,23 +2652,14 @@
"protocol-buffers-schema": "^3.3.1" "protocol-buffers-schema": "^3.3.1"
} }
}, },
"node_modules/retry": {
"version": "0.13.1",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
"integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
"license": "MIT",
"engines": {
"node": ">= 4"
}
},
"node_modules/rolldown": { "node_modules/rolldown": {
"version": "1.2.10", "version": "1.2.12",
"resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.10.tgz", "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.12.tgz",
"integrity": "sha512-OxkA08pSryMK7B3XiFA09B4OJ1xJMPgIYCBMY2xchzpqgBGsV1o0DetPAE+Sl3N3L4oCPiEzmHVSOj7iR04Zog==", "integrity": "sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@oxc-project/types": "=0.151.0", "@oxc-project/types": "=0.152.0",
"@rolldown/pluginutils": "^1.0.0" "@rolldown/pluginutils": "^1.0.0"
}, },
"bin": { "bin": {
@@ -2686,27 +2669,27 @@
"node": "^20.19.0 || >=22.12.0" "node": "^20.19.0 || >=22.12.0"
}, },
"optionalDependencies": { "optionalDependencies": {
"@rolldown/binding-android-arm-eabi": "1.2.10", "@rolldown/binding-android-arm-eabi": "1.2.12",
"@rolldown/binding-android-arm64": "1.2.10", "@rolldown/binding-android-arm64": "1.2.12",
"@rolldown/binding-darwin-arm64": "1.2.10", "@rolldown/binding-darwin-arm64": "1.2.12",
"@rolldown/binding-darwin-x64": "1.2.10", "@rolldown/binding-darwin-x64": "1.2.12",
"@rolldown/binding-freebsd-x64": "1.2.10", "@rolldown/binding-freebsd-x64": "1.2.12",
"@rolldown/binding-linux-arm-gnueabihf": "1.2.10", "@rolldown/binding-linux-arm-gnueabihf": "1.2.12",
"@rolldown/binding-linux-arm64-gnu": "1.2.10", "@rolldown/binding-linux-arm64-gnu": "1.2.12",
"@rolldown/binding-linux-arm64-musl": "1.2.10", "@rolldown/binding-linux-arm64-musl": "1.2.12",
"@rolldown/binding-linux-ppc64-gnu": "1.2.10", "@rolldown/binding-linux-ppc64-gnu": "1.2.12",
"@rolldown/binding-linux-s390x-gnu": "1.2.10", "@rolldown/binding-linux-s390x-gnu": "1.2.12",
"@rolldown/binding-linux-x64-gnu": "1.2.10", "@rolldown/binding-linux-x64-gnu": "1.2.12",
"@rolldown/binding-linux-x64-musl": "1.2.10", "@rolldown/binding-linux-x64-musl": "1.2.12",
"@rolldown/binding-openharmony-arm64": "1.2.10", "@rolldown/binding-openharmony-arm64": "1.2.12",
"@rolldown/binding-win32-arm64-msvc": "1.2.10", "@rolldown/binding-win32-arm64-msvc": "1.2.12",
"@rolldown/binding-win32-x64-msvc": "1.2.10" "@rolldown/binding-win32-x64-msvc": "1.2.12"
} }
}, },
"node_modules/sass": { "node_modules/sass": {
"version": "1.105.0", "version": "1.105.1",
"resolved": "https://registry.npmjs.org/sass/-/sass-1.105.0.tgz", "resolved": "https://registry.npmjs.org/sass/-/sass-1.105.1.tgz",
"integrity": "sha512-4EjSuRTyG8M4yRXXY1PT9OUV5zz23xBxJkbIAprohKHqf6HOU4MCpE3U3vAC+iO1gxobBjESNbcj8rYAQZWnyA==", "integrity": "sha512-1CnAWPyrrnVQzXGB/DUep1vYCKCm1CIBr+YxjjiW6wk9qtzemnGP4qicH56T2F9S4Hjtv/Ne3jDz8JqfdDU4oA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"chokidar": "^5.0.0", "chokidar": "^5.0.0",
@@ -2809,9 +2792,9 @@
} }
}, },
"node_modules/source-map-js": { "node_modules/source-map-js": {
"version": "1.2.1", "version": "1.2.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==",
"license": "BSD-3-Clause", "license": "BSD-3-Clause",
"engines": { "engines": {
"node": ">=0.10.0" "node": ">=0.10.0"
@@ -2871,16 +2854,16 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/vite": { "node_modules/vite": {
"version": "8.3.1", "version": "8.3.2",
"resolved": "https://registry.npmjs.org/vite/-/vite-8.3.1.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-8.3.2.tgz",
"integrity": "sha512-/bvH9E9tmCXRGp2uXY3WbOldqpTwFkbha/8ANaEQ6VkxhH60KyqLwgZq6lG2y+4uT55x9+9eUHMpQ7uGnOCKjA==", "integrity": "sha512-SQr1x6W5vVSbROg7vsyXIaxK9b0G7zsT68acdWWRmnBUsgDieLCRG+Rep9WdZgcposvv/GSnr4GUUBqB3vXq6w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"lightningcss": "^1.33.0", "lightningcss": "^1.33.0",
"picomatch": "^4.0.7", "picomatch": "^4.0.7",
"postcss": "^8.5.28", "postcss": "^8.5.28",
"rolldown": "~1.2.9", "rolldown": "~1.2.11",
"tinyglobby": "^0.2.17" "tinyglobby": "^0.2.17"
}, },
"bin": { "bin": {
+1 -1
View File
@@ -26,7 +26,7 @@
"@uppy/core": "^6.0.0", "@uppy/core": "^6.0.0",
"@uppy/xhr-upload": "^6.0.0", "@uppy/xhr-upload": "^6.0.0",
"autosize": "^6.0.1", "autosize": "^6.0.1",
"maplibre-gl": "^6.0.0", "maplibre-gl": "^6.12.0",
"sass": "^1.97.2", "sass": "^1.97.2",
"simplebar-vue": "^2.3.3", "simplebar-vue": "^2.3.3",
"vue": "^3.5.40" "vue": "^3.5.40"
+55 -19
View File
@@ -1,5 +1,5 @@
<script> <script>
import { Map, Marker, LngLatBounds, LngLat, Popup, ScaleControl, NavigationControl, setWorkerUrl } from 'maplibre-gl'; import { Map, Marker, LngLatBounds, LngLat, MercatorCoordinate, Popup, ScaleControl, NavigationControl, setWorkerUrl } from 'maplibre-gl';
import maplibreWorkerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url'; import maplibreWorkerUrl from 'maplibre-gl/dist/maplibre-gl-worker.mjs?worker&url';
import 'maplibre-gl/dist/maplibre-gl.css'; import 'maplibre-gl/dist/maplibre-gl.css';
@@ -450,19 +450,69 @@ export default {
} }
this.map.fitBounds(oBounds, { this.map.fitBounds(oBounds, {
padding: BASE_MAP_PADDING, padding: this.map.getPadding(),
absolutePadding: true,
animate: false, animate: false,
maxZoom: this.maxZoom, maxZoom: this.maxZoom,
pitch: this.initialPitch, pitch: this.initialPitch,
bearing: 0 bearing: 0
}); });
this.fixPitchedCameraCenter(aoTrackCoordinates); this.fixPitchedCamera(aoTrackCoordinates);
} }
}, },
fixPitchedCameraCenter(aoTrackCoordinates) { fixPitchedCamera(aoTrackCoordinates) {
//fitBounds ignores pitch (still the case in maplibre 6.12): re-center and re-zoom on the projected track.
//Perspective keeps convex shapes convex, so the track screen bounds are always reached on its convex hull
const aoHull = this.getConvexHull(aoTrackCoordinates);
//Re-centering changes perspective distortion: a couple of passes on the hull converge
for(let iPass = 0; iPass < 3; iPass++) {
const oScreenBounds = this.getScreenBounds(aoHull);
const oPadding = this.map.getPadding();
const oContainer = this.map.getContainer();
//Zooming scales the screen around the map center, located at the center of the padded area
const fScale = Math.min(
(oContainer.clientWidth - oPadding.left - oPadding.right) / (oScreenBounds.maxX - oScreenBounds.minX),
(oContainer.clientHeight - oPadding.top - oPadding.bottom) / (oScreenBounds.maxY - oScreenBounds.minY)
);
this.map.jumpTo({
center: this.map.unproject([
(oScreenBounds.minX + oScreenBounds.maxX) / 2,
(oScreenBounds.minY + oScreenBounds.maxY) / 2
]),
zoom: (isFinite(fScale) && fScale > 0)?Math.min(this.map.getZoom() + Math.log2(fScale), this.maxZoom):this.map.getZoom()
});
//Close enough
if(Math.abs(fScale - 1) < 0.01) break;
}
},
getConvexHull(aoCoordinates) {
//Andrew's monotone chain, on mercator coordinates (projected plane)
const aoPoints = aoCoordinates
.map(coord => ({coord, merc: MercatorCoordinate.fromLngLat(coord)}))
.sort((a, b) => (a.merc.x - b.merc.x) || (a.merc.y - b.merc.y));
if(aoPoints.length < 3) return aoCoordinates;
const cross = (o, a, b) => (a.merc.x - o.merc.x) * (b.merc.y - o.merc.y) - (a.merc.y - o.merc.y) * (b.merc.x - o.merc.x);
const buildChain = (aoSortedPoints) => {
const aoChain = [];
for(const oPoint of aoSortedPoints) {
while(aoChain.length >= 2 && cross(aoChain[aoChain.length - 2], aoChain[aoChain.length - 1], oPoint) <= 0) aoChain.pop();
aoChain.push(oPoint);
}
aoChain.pop();
return aoChain;
};
return [...buildChain(aoPoints), ...buildChain([...aoPoints].reverse())].map(oPoint => oPoint.coord);
},
getScreenBounds(aoCoordinates) {
//Project min/max coords (lat, lng) onto map rectangle corner points (x, y) //Project min/max coords (lat, lng) onto map rectangle corner points (x, y)
const oScreenBounds = aoTrackCoordinates.reduce((oBounds, coord) => { return aoCoordinates.reduce((oBounds, coord) => {
const oPoint = this.map.project(coord); const oPoint = this.map.project(coord);
return { return {
minX: Math.min(oBounds.minX, oPoint.x), minX: Math.min(oBounds.minX, oPoint.x),
@@ -476,20 +526,6 @@ export default {
maxX: -Infinity, maxX: -Infinity,
maxY: -Infinity maxY: -Infinity
}); });
//Current Rectangle center
const oTrackCenter = {
x: (oScreenBounds.minX + oScreenBounds.maxX) / 2,
y: (oScreenBounds.minY + oScreenBounds.maxY) / 2
};
//Convert back center point (x, y) to coords and Move map to the track center
this.map.jumpTo({
center: this.map.unproject([
oTrackCenter.x,
oTrackCenter.y
])
});
}, },
panTo(oLngLat, iZoom, padding, iAnimDuration=500) { panTo(oLngLat, iZoom, padding, iAnimDuration=500) {
return new Promise((resolve) => { return new Promise((resolve) => {
+4 -4
View File
@@ -66,15 +66,15 @@ export default {
</div> </div>
<div v-if="options.type=='track'"> <div v-if="options.type=='track'">
<div v-if="options.leg" class="section destination"> <div v-if="options.leg" class="section destination">
<appIcon :title="lang.get('stats.from')" icon="start" width="fixed" size="lg" :text="options.leg.from" /> <appIcon :title="lang.get('stats.from')" icon="distance" transform="rotate-315" width="fixed" size="lg" :text="options.leg.from" />
<appIcon :title="lang.get('stats.to')" icon="start" transform="rotate-180" width="fixed" size="lg" :text="options.leg.to" /> <appIcon :title="lang.get('stats.to')" icon="distance" transform="rotate-45" width="fixed" size="lg" :text="options.leg.to" />
</div> </div>
<div v-if="options.leg" class="separator"></div> <div v-if="options.leg" class="separator"></div>
<div v-if="options.subtype!='hitchhiking'" class="section track-stats"> <div v-if="options.subtype!='hitchhiking'" class="section track-stats">
<appIcon :title="lang.get('stats.distance')" icon="distance" width="fixed" size="lg" :text="options.distance+'km'" /> <appIcon :title="lang.get('stats.distance')" icon="distance" width="fixed" size="lg" :text="options.distance+'km'" />
<appIcon :title="lang.get('stats.duration')" icon="time" width="fixed" size="lg" :text="options.duration" /> <appIcon :title="lang.get('stats.duration')" icon="time" width="fixed" size="lg" :text="options.duration" />
<appIcon :title="lang.get('stats.elevation_gain')" icon="elev-gain" width="fixed" size="lg" :text="options.elev_gain+'m'" /> <appIcon :title="lang.get('stats.elevation_gain')" icon="distance" transform="rotate-270" width="fixed" size="lg" :text="options.elev_gain+'m'" />
<appIcon :title="lang.get('stats.elevation_loss')" icon="elev-drop" width="fixed" size="lg" :text="options.elev_drop+'m'" /> <appIcon :title="lang.get('stats.elevation_loss')" icon="distance" transform="rotate-90" width="fixed" size="lg" :text="options.elev_drop+'m'" />
</div> </div>
</div> </div>
<div v-else-if="options.type=='project'" class="section year">{{ activeTimeInterval }}</div> <div v-else-if="options.type=='project'" class="section year">{{ activeTimeInterval }}</div>
-5
View File
@@ -8,11 +8,9 @@ import {
faChevronLeft, faChevronLeft,
faChevronRight, faChevronRight,
faCircleCheck, faCircleCheck,
faCircleDown,
faCircleExclamation, faCircleExclamation,
faCirclePlay, faCirclePlay,
faCircleRight, faCircleRight,
faCircleUp,
faCircleXmark, faCircleXmark,
faClock, faClock,
faCloudArrowUp, faCloudArrowUp,
@@ -100,10 +98,7 @@ const ICONS = {
'hitchhiking': faCarSide, 'hitchhiking': faCarSide,
layers: faLayerGroup, layers: faLayerGroup,
distance: faCircleRight, distance: faCircleRight,
'elev-drop': faCircleDown,
'elev-gain': faCircleUp,
download: faFileArrowDown, download: faFileArrowDown,
start: faCirclePlay,
/* Settings */ /* Settings */
account: faUser, account: faUser,