From e9cb72b25019dcc8b332ec484695e3857d10b278 Mon Sep 17 00:00:00 2001
From: Christian Beutel <>
Date: Wed, 14 Feb 2024 17:48:37 +0100
Subject: [PATCH] adds 3d model
---
web/package-lock.json | 160 ++++-
web/package.json | 4 +
web/src/lib/components/base/search.svelte | 8 +-
web/src/lib/components/earth.svelte | 675 ++++++++++++++++++++++
web/src/lib/components/scene.svelte | 21 +
web/src/routes/+page.svelte | 48 +-
web/static/models/earth.glb | Bin 0 -> 132020 bytes
web/vite.config.ts | 3 +
8 files changed, 870 insertions(+), 49 deletions(-)
create mode 100644 web/src/lib/components/earth.svelte
create mode 100644 web/src/lib/components/scene.svelte
create mode 100644 web/static/models/earth.glb
diff --git a/web/package-lock.json b/web/package-lock.json
index 5bcdbfc3..4487a15b 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -9,7 +9,10 @@
"version": "0.0.1",
"dependencies": {
"@fortawesome/fontawesome-free": "^6.5.1",
+ "@threlte/core": "^7.1.0",
+ "@threlte/extras": "^8.7.5",
"@types/leaflet.awesome-markers": "^2.0.28",
+ "@types/three": "^0.161.2",
"crypto-random-string": "^5.0.0",
"date-fns": "^3.3.1",
"leaflet": "^1.9.4",
@@ -19,6 +22,7 @@
"nouislider": "^15.7.1",
"photoswipe": "^5.4.3",
"pocketbase": "^0.21.0",
+ "three": "^0.161.0",
"yup": "^1.3.3"
},
"devDependencies": {
@@ -55,7 +59,6 @@
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
"integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
- "dev": true,
"dependencies": {
"@jridgewell/gen-mapping": "^0.3.0",
"@jridgewell/trace-mapping": "^0.3.9"
@@ -474,7 +477,6 @@
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
"integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==",
- "dev": true,
"dependencies": {
"@jridgewell/set-array": "^1.0.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
@@ -488,7 +490,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
"integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -497,7 +498,6 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz",
"integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==",
- "dev": true,
"engines": {
"node": ">=6.0.0"
}
@@ -505,14 +505,12 @@
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.4.15",
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
+ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg=="
},
"node_modules/@jridgewell/trace-mapping": {
"version": "0.3.22",
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz",
"integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==",
- "dev": true,
"dependencies": {
"@jridgewell/resolve-uri": "^3.1.0",
"@jridgewell/sourcemap-codec": "^1.4.14"
@@ -842,6 +840,36 @@
"vite": "^5.0.0"
}
},
+ "node_modules/@threlte/core": {
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@threlte/core/-/core-7.1.0.tgz",
+ "integrity": "sha512-Qshrrt1Bqu8B0rWuNtFqGJpbmxrFUBNYTHOJZ29Tiqy2kpmwYZfzVSPRoGUfJTqUtpfxGCrDU3S2etWnB0KsUA==",
+ "dependencies": {
+ "mitt": "^3.0.1"
+ },
+ "peerDependencies": {
+ "svelte": ">=4",
+ "three": ">=0.133"
+ }
+ },
+ "node_modules/@threlte/extras": {
+ "version": "8.7.5",
+ "resolved": "https://registry.npmjs.org/@threlte/extras/-/extras-8.7.5.tgz",
+ "integrity": "sha512-dhdkN9z7Yt/pd8tyaWEV49kIMnYDfH+WEX8ZRmYv0BKtIu3y+KJwOOSQXLo1VkzkT4q5El1bW4Bt/ZvDljKRMA==",
+ "dependencies": {
+ "three-mesh-bvh": "^0.7.1",
+ "troika-three-text": "^0.49.0"
+ },
+ "peerDependencies": {
+ "svelte": ">=4",
+ "three": ">=0.133"
+ },
+ "peerDependenciesMeta": {
+ "three-mesh-bvh": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@types/cookie": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz",
@@ -851,8 +879,7 @@
"node_modules/@types/estree": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dev": true
+ "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw=="
},
"node_modules/@types/geojson": {
"version": "7946.0.13",
@@ -890,6 +917,27 @@
"integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
"dev": true
},
+ "node_modules/@types/stats.js": {
+ "version": "0.17.3",
+ "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.3.tgz",
+ "integrity": "sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ=="
+ },
+ "node_modules/@types/three": {
+ "version": "0.161.2",
+ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.161.2.tgz",
+ "integrity": "sha512-DazpZ+cIfBzbW/p0zm6G8CS03HBMd748A3R1ZOXHpqaXZLv2I5zNgQUrRG//UfJ6zYFp2cUoCQaOLaz8ubH07w==",
+ "dependencies": {
+ "@types/stats.js": "*",
+ "@types/webxr": "*",
+ "fflate": "~0.6.10",
+ "meshoptimizer": "~0.18.1"
+ }
+ },
+ "node_modules/@types/webxr": {
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.14.tgz",
+ "integrity": "sha512-UEMMm/Xn3DtEa+gpzUrOcDj+SJS1tk5YodjwOxcqStNhCfPcwgyC5Srg2ToVKyg2Fhq16Ffpb0UWUQHqoT9AMA=="
+ },
"node_modules/@vitest/expect": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.1.tgz",
@@ -963,7 +1011,6 @@
"version": "8.11.3",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz",
"integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==",
- "dev": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -1033,7 +1080,6 @@
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz",
"integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==",
- "dev": true,
"dependencies": {
"dequal": "^2.0.3"
}
@@ -1088,7 +1134,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz",
"integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==",
- "dev": true,
"dependencies": {
"dequal": "^2.0.3"
}
@@ -1099,6 +1144,14 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
+ "node_modules/bidi-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz",
+ "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==",
+ "dependencies": {
+ "require-from-string": "^2.0.2"
+ }
+ },
"node_modules/binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1279,7 +1332,6 @@
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz",
"integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==",
- "dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15",
"@types/estree": "^1.0.1",
@@ -1370,7 +1422,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
"integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==",
- "dev": true,
"dependencies": {
"mdn-data": "2.0.30",
"source-map-js": "^1.0.1"
@@ -1442,7 +1493,6 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
"integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
- "dev": true,
"engines": {
"node": ">=6"
}
@@ -1564,7 +1614,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
- "dev": true,
"dependencies": {
"@types/estree": "^1.0.0"
}
@@ -1617,6 +1666,11 @@
"reusify": "^1.0.4"
}
},
+ "node_modules/fflate": {
+ "version": "0.6.10",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz",
+ "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg=="
+ },
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -1888,7 +1942,6 @@
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
- "dev": true,
"dependencies": {
"@types/estree": "*"
}
@@ -2002,8 +2055,7 @@
"node_modules/locate-character": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
- "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
- "dev": true
+ "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA=="
},
"node_modules/loupe": {
"version": "2.3.7",
@@ -2027,7 +2079,6 @@
"version": "0.30.5",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
"integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
- "dev": true,
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.4.15"
},
@@ -2038,8 +2089,7 @@
"node_modules/mdn-data": {
"version": "2.0.30",
"resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz",
- "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==",
- "dev": true
+ "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="
},
"node_modules/meilisearch": {
"version": "0.37.0",
@@ -2064,6 +2114,11 @@
"node": ">= 8"
}
},
+ "node_modules/meshoptimizer": {
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.18.1.tgz",
+ "integrity": "sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw=="
+ },
"node_modules/micromatch": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
@@ -2128,6 +2183,11 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/mitt": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz",
+ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw=="
+ },
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
@@ -2408,7 +2468,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
"integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
- "dev": true,
"dependencies": {
"@types/estree": "^1.0.0",
"estree-walker": "^3.0.0",
@@ -2717,6 +2776,14 @@
"node": ">=8.10.0"
}
},
+ "node_modules/require-from-string": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/resolve": {
"version": "1.22.8",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz",
@@ -2922,7 +2989,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
- "dev": true,
"engines": {
"node": ">=0.10.0"
}
@@ -3155,7 +3221,6 @@
"version": "4.2.9",
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.9.tgz",
"integrity": "sha512-hsoB/WZGEPFXeRRLPhPrbRz67PhP6sqYgvwcAs+gWdSQSvNDw+/lTeUJSWe5h2xC97Fz/8QxAOqItwBzNJPU8w==",
- "dev": true,
"dependencies": {
"@ampproject/remapping": "^2.2.1",
"@jridgewell/sourcemap-codec": "^1.4.15",
@@ -3343,6 +3408,19 @@
"node": ">=0.8"
}
},
+ "node_modules/three": {
+ "version": "0.161.0",
+ "resolved": "https://registry.npmjs.org/three/-/three-0.161.0.tgz",
+ "integrity": "sha512-LC28VFtjbOyEu5b93K0bNRLw1rQlMJ85lilKsYj6dgTu+7i17W+JCCEbvrpmNHF1F3NAUqDSWq50UD7w9H2xQw=="
+ },
+ "node_modules/three-mesh-bvh": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.7.2.tgz",
+ "integrity": "sha512-HKRGZDKIUwwjL2mApYIAN8AYA5WAfFvc50PY8TL/9aGWzrRN1WLfPKAvTjv35F8PdPZzTmzHotCvIMFEN9FUSw==",
+ "peerDependencies": {
+ "three": ">= 0.151.0"
+ }
+ },
"node_modules/tiny-case": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz",
@@ -3413,6 +3491,33 @@
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
},
+ "node_modules/troika-three-text": {
+ "version": "0.49.0",
+ "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.49.0.tgz",
+ "integrity": "sha512-sn9BNC6eIX8OO3iAkPwjecJ7Pn21Ve8P1UNFMNeQzXx759rrqS4i4pSZs7FLMYdWyCKVXBFGimBySFwRKLjq/Q==",
+ "dependencies": {
+ "bidi-js": "^1.0.2",
+ "troika-three-utils": "^0.49.0",
+ "troika-worker-utils": "^0.49.0",
+ "webgl-sdf-generator": "1.1.1"
+ },
+ "peerDependencies": {
+ "three": ">=0.125.0"
+ }
+ },
+ "node_modules/troika-three-utils": {
+ "version": "0.49.0",
+ "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.49.0.tgz",
+ "integrity": "sha512-umitFL4cT+Fm/uONmaQEq4oZlyRHWwVClaS6ZrdcueRvwc2w+cpNQ47LlJKJswpqtMFWbEhOLy0TekmcPZOdYA==",
+ "peerDependencies": {
+ "three": ">=0.125.0"
+ }
+ },
+ "node_modules/troika-worker-utils": {
+ "version": "0.49.0",
+ "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.49.0.tgz",
+ "integrity": "sha512-1xZHoJrG0HFfCvT/iyN41DvI/nRykiBtHqFkGaGgJwq5iXfIZFBiPPEHFpPpgyKM3Oo5ITHXP5wM2TNQszYdVg=="
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -3671,6 +3776,11 @@
}
}
},
+ "node_modules/webgl-sdf-generator": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz",
+ "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA=="
+ },
"node_modules/webidl-conversions": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
diff --git a/web/package.json b/web/package.json
index 31da8b41..4f3777d7 100644
--- a/web/package.json
+++ b/web/package.json
@@ -32,7 +32,10 @@
"type": "module",
"dependencies": {
"@fortawesome/fontawesome-free": "^6.5.1",
+ "@threlte/core": "^7.1.0",
+ "@threlte/extras": "^8.7.5",
"@types/leaflet.awesome-markers": "^2.0.28",
+ "@types/three": "^0.161.2",
"crypto-random-string": "^5.0.0",
"date-fns": "^3.3.1",
"leaflet": "^1.9.4",
@@ -42,6 +45,7 @@
"nouislider": "^15.7.1",
"photoswipe": "^5.4.3",
"pocketbase": "^0.21.0",
+ "three": "^0.161.0",
"yup": "^1.3.3"
}
}
diff --git a/web/src/lib/components/base/search.svelte b/web/src/lib/components/base/search.svelte
index 295e1e80..9f0789d2 100644
--- a/web/src/lib/components/base/search.svelte
+++ b/web/src/lib/components/base/search.svelte
@@ -55,11 +55,11 @@
-
+
{#if value.length > 0}
@@ -96,10 +108,4 @@
diff --git a/web/static/models/earth.glb b/web/static/models/earth.glb
new file mode 100644
index 0000000000000000000000000000000000000000..dd39486d36c88cf55c72d90431add0c10827bd20
GIT binary patch
literal 132020
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
a`M!FrZp!xsIF1;z|3AO?@qg;Q;{O5IvfWw$
literal 0
HcmV?d00001
diff --git a/web/vite.config.ts b/web/vite.config.ts
index 37b6a84b..d946c525 100644
--- a/web/vite.config.ts
+++ b/web/vite.config.ts
@@ -5,5 +5,8 @@ export default defineConfig({
plugins: [sveltekit()],
test: {
include: ['src/**/*.{test,spec}.{js,ts}']
+ },
+ ssr: {
+ noExternal: ['three']
}
});