diff --git a/package.json b/package.json index c0e488860..c10b46b3f 100644 --- a/package.json +++ b/package.json @@ -48,11 +48,13 @@ "@sveltejs/kit": "^2.20.2", "@sveltejs/vite-plugin-svelte": "^5.0.3", "@tailwindcss/postcss": "^4.1.4", + "@turf/boolean-point-in-polygon": "^7.2.0", "@types/compression": "^1.7.5", "@types/glob": "^8.1.0", "@types/jsdom": "^21.1.7", "@types/markdown-it": "^13.0.9", "@types/morgan": "^1.9.9", + "@types/proj4": "^2.5.6", "analytics": "^0.8.16", "appwrite": "^17.0.1", "bits-ui": "^1.3.19", @@ -87,6 +89,7 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", + "proj4": "^2.17.0", "remeda": "^2.20.0", "reodotdev": "^1.0.0", "sass": "^1.83.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ddf609045..4d3683d5e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,6 +69,9 @@ importers: '@tailwindcss/postcss': specifier: ^4.1.4 version: 4.1.4 + '@turf/boolean-point-in-polygon': + specifier: ^7.2.0 + version: 7.2.0 '@types/compression': specifier: ^1.7.5 version: 1.7.5 @@ -84,6 +87,9 @@ importers: '@types/morgan': specifier: ^1.9.9 version: 1.9.9 + '@types/proj4': + specifier: ^2.5.6 + version: 2.5.6 analytics: specifier: ^0.8.16 version: 0.8.16(@types/dlv@1.1.5) @@ -183,6 +189,9 @@ importers: prettier-plugin-tailwindcss: specifier: ^0.6.11 version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.25.6))(prettier@3.5.3) + proj4: + specifier: ^2.17.0 + version: 2.17.0 remeda: specifier: ^2.20.0 version: 2.21.2 @@ -1427,6 +1436,15 @@ packages: '@tsbb/copy-template-dir@1.4.0': resolution: {integrity: sha512-WXezrpwkm+JGoH5eh/7bngabXriDe7bhqCATWV6e+um8Qw0nNCkE4hfQ791CoiIdSe4LLyzoIfomwH1kR0GYvQ==} + '@turf/boolean-point-in-polygon@7.2.0': + resolution: {integrity: sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==} + + '@turf/helpers@7.2.0': + resolution: {integrity: sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==} + + '@turf/invariant@7.2.0': + resolution: {integrity: sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==} + '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -1451,6 +1469,9 @@ packages: '@types/express@5.0.0': resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/glob@8.1.0': resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} @@ -1499,6 +1520,9 @@ packages: '@types/node@22.13.10': resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + '@types/proj4@2.5.6': + resolution: {integrity: sha512-zfMrPy9fx+8DchqM0kIUGeu2tTVB5ApO1KGAYcSGFS8GoqRIkyL41xq2yCx/iV3sOLzo7v4hEgViSLTiPI1L0w==} + '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -2353,6 +2377,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. + geographiclib-geodesic@2.1.1: + resolution: {integrity: sha512-lkd8EUkPSByobWu9BPMHTdYA5AUZxOa8McmUNtBE9KrvUJEvSADnN6gTDmhXbi6NzdA16LtWLpSxLE/lIIRhyA==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2811,6 +2838,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mgrs@1.0.0: + resolution: {integrity: sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==} + microbuffer@1.0.0: resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} @@ -3171,6 +3201,9 @@ packages: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} + point-in-polygon-hao@1.2.4: + resolution: {integrity: sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==} + postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -3302,6 +3335,9 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + proj4@2.17.0: + resolution: {integrity: sha512-BqVoruVAOUgkw5U9Ns76+E2nHZG0Y42tbkC+0BpyqjhwPIai29hoivyQoyelEKFSfaV3zkR3NqPRD0EwPM4Wug==} + promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -3398,6 +3434,9 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@4.35.0: resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -3931,6 +3970,9 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wkt-parser@1.5.2: + resolution: {integrity: sha512-1ZUiV1FTwSiSrgWzV9KXJuOF2BVW91KY/mau04BhnmgOdroRQea7Q0s5TVqwGLm0D2tZwObd/tBYXW49sSxp3Q==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -5074,6 +5116,25 @@ snapshots: readdirp: 3.6.0 run-parallel: 1.2.0 + '@turf/boolean-point-in-polygon@7.2.0': + dependencies: + '@turf/helpers': 7.2.0 + '@turf/invariant': 7.2.0 + '@types/geojson': 7946.0.16 + point-in-polygon-hao: 1.2.4 + tslib: 2.8.1 + + '@turf/helpers@7.2.0': + dependencies: + '@types/geojson': 7946.0.16 + tslib: 2.8.1 + + '@turf/invariant@7.2.0': + dependencies: + '@turf/helpers': 7.2.0 + '@types/geojson': 7946.0.16 + tslib: 2.8.1 + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 @@ -5107,6 +5168,8 @@ snapshots: '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 + '@types/geojson@7946.0.16': {} + '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 @@ -5159,6 +5222,8 @@ snapshots: dependencies: undici-types: 6.20.0 + '@types/proj4@2.5.6': {} + '@types/qs@6.9.18': {} '@types/range-parser@1.2.7': {} @@ -6090,6 +6155,8 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 + geographiclib-geodesic@2.1.1: {} + get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -6580,6 +6647,8 @@ snapshots: merge2@1.4.1: {} + mgrs@1.0.0: {} + microbuffer@1.0.0: {} micromatch@4.0.8: @@ -6918,6 +6987,10 @@ snapshots: pngjs@3.4.0: {} + point-in-polygon-hao@1.2.4: + dependencies: + robust-predicates: 3.0.2 + postcss-load-config@3.1.4(postcss@8.5.3): dependencies: lilconfig: 2.1.0 @@ -6984,6 +7057,12 @@ snapshots: process@0.11.10: {} + proj4@2.17.0: + dependencies: + geographiclib-geodesic: 2.1.1 + mgrs: 1.0.0 + wkt-parser: 1.5.2 + promise-inflight@1.0.1: {} promise-retry@2.0.1: @@ -7070,6 +7149,8 @@ snapshots: dependencies: glob: 7.2.3 + robust-predicates@3.0.2: {} + rollup@4.35.0: dependencies: '@types/estree': 1.0.6 @@ -7666,6 +7747,8 @@ snapshots: dependencies: string-width: 4.2.3 + wkt-parser@1.5.2: {} + word-wrap@1.2.5: {} wrap-ansi@7.0.0: diff --git a/src/lib/components/appwrite-network/map-marker.svelte b/src/lib/components/appwrite-network/map-marker.svelte deleted file mode 100644 index 61549cd4c..000000000 --- a/src/lib/components/appwrite-network/map-marker.svelte +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/src/lib/components/appwrite-network/map-tooltip.svelte b/src/lib/components/appwrite-network/map-tooltip.svelte index 78419d44a..25b8b1eaf 100644 --- a/src/lib/components/appwrite-network/map-tooltip.svelte +++ b/src/lib/components/appwrite-network/map-tooltip.svelte @@ -1,8 +1,8 @@ -{#if $tooltipData.city} -