From acb909b40149828003fc406d68071aee7ed29a63 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Fri, 23 Aug 2024 11:12:41 +0800 Subject: [PATCH 1/4] replace @turf/turf with @turf/great-circle --- package-lock.json | 2289 +++------------------------------------------ package.json | 2 +- src/App.tsx | 45 +- 3 files changed, 156 insertions(+), 2180 deletions(-) diff --git a/package-lock.json b/package-lock.json index aac70e6..8e0c94e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,7 @@ "name": "s2js-demos", "version": "0.0.0", "dependencies": { - "@turf/turf": "^7.1.0", + "@turf/great-circle": "^7.1.0", "maplibre-gl": "^4.6.0", "protomaps-themes-base": "^3.1.0", "s2js": "^1.38.2", @@ -1007,32 +1007,26 @@ "win32" ] }, - "node_modules/@turf/along": { + "node_modules/@turf/great-circle": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.1.0.tgz", - "integrity": "sha512-WLgBZJ/B6CcASF6WL7M+COtHlVP0hBrMbrtKyF7KBlicwRuijJZXDtEQA5oLgr+k1b2HqGN+UqH2A0/E719enQ==", + "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.1.0.tgz", + "integrity": "sha512-92q5fqUp5oW+FYekUIrUVR5PZBWbOV6NHKHPIiNahiPvtkpZItbbjoO+tGn5+2i8mxZP9FGOthayJe4V0a1xkg==", + "license": "MIT", "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/distance": "^7.1.0", "@turf/helpers": "^7.1.0", "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "@types/geojson": "^7946.0.10" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/angle": { + "node_modules/@turf/helpers": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.1.0.tgz", - "integrity": "sha512-YMHEV/YrARsWgWoQuXEWrQMsvB8z67nTMw2eiLZ883V7jwkhWQGvCW6W+/mGgsWQdHppjCZNcKryryhD2GRWVA==", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "license": "MIT", "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", "@types/geojson": "^7946.0.10", "tslib": "^2.6.2" }, @@ -1040,13 +1034,13 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/area": { + "node_modules/@turf/invariant": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", - "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.1.0.tgz", + "integrity": "sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==", + "license": "MIT", "dependencies": { "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", "@types/geojson": "^7946.0.10", "tslib": "^2.6.2" }, @@ -1054,2013 +1048,160 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/bbox": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", - "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" } }, - "node_modules/@turf/bbox-clip": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.1.0.tgz", - "integrity": "sha512-PhZubKCzF/afwStUzODqOJluiCbCw244lCtVhXA9F+Pgkhvk8KvbFdgpPquOZ45OwuktrchSB28BrBkSBiadHw==", + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@babel/types": "^7.0.0" } }, - "node_modules/@turf/bbox-polygon": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.1.0.tgz", - "integrity": "sha512-fvZB09ErCZOVlWVDop836hmpKaGUmfXnR9naMhS73A/8nn4M3hELbQtMv2R8gXj7UakXCuxS/i9erdpDFZ2O+g==", + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" } }, - "node_modules/@turf/bearing": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.1.0.tgz", - "integrity": "sha512-X5lackrZ6FW+YhgjWxwVFRgWD1j4xm4t5VvE6EE6v/1PVaHQ5OCjf6u1oaLx5LSG+gaHUhjTlAHrn9MYPFaeTA==", + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@babel/types": "^7.20.7" } }, - "node_modules/@turf/bezier-spline": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.1.0.tgz", - "integrity": "sha512-bhBY70bcVYJEosuW7B/TFtnE5rmPTTpxmJvljhGC0eyM84oNVv7apDBuseb5KdlTOOBIvdD9nIE4qV8lmplp6w==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + "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 }, - "node_modules/@turf/boolean-clockwise": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.1.0.tgz", - "integrity": "sha512-H5DYno+gHwZx+VaiC8DUBZXZQlxYecdSvqCfCACWi1uMsKvlht/O+xy65hz2P57lk2smlcV+1ETFVxJlEZduYg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" }, - "node_modules/@turf/boolean-concave": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.1.0.tgz", - "integrity": "sha512-IFCN25DI+hvngxIsv4+MPuRJQRl/Lz/xnZgpH82leCn4Jqn5wW7KqKFMz7G4GoKK+93cK5/6ioAxY7hVWBXxJw==", + "node_modules/@types/geojson-vt": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/geojson": "*" } }, - "node_modules/@turf/boolean-contains": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.1.0.tgz", - "integrity": "sha512-ldy4j1/RVChYTYjEb4wWaE/JyF1jA87WpsB4eVLic6OcAYJGs7POF1kfKbcdkJJiRBmhI3CXNA+u+m9y4Z/j3g==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } + "node_modules/@types/mapbox__point-geometry": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" }, - "node_modules/@turf/boolean-crosses": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.1.0.tgz", - "integrity": "sha512-LK8UM3AENycuGinLCDaL0QSznGMnD0XsjFDGnY4KehshiL5Zd8ZsPyKmHOPygUJT9DWeH69iLx459lOc+5Vj2w==", + "node_modules/@types/mapbox__vector-tile": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/polygon-to-line": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/geojson": "*", + "@types/mapbox__point-geometry": "*", + "@types/pbf": "*" } }, - "node_modules/@turf/boolean-disjoint": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.1.0.tgz", - "integrity": "sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw==", + "node_modules/@types/pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + }, + "node_modules/@types/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/polygon-to-line": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "@types/geojson": "*" } }, - "node_modules/@turf/boolean-equal": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.1.0.tgz", - "integrity": "sha512-deghtFMApc7fNsdXtZdgYR4gsU+TVfowcv666nrvZbPPsXL6NTYGBhDFmYXsJ8gPTCGT9uT0WXppdgT8diWOxA==", + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { - "@turf/clean-coords": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "geojson-equality-ts": "^1.0.2", - "tslib": "^2.6.2" + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">=4" } }, - "node_modules/@turf/boolean-intersects": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.1.0.tgz", - "integrity": "sha512-gpksWbb0RT+Z3nfqRfoACY3KEFyv2BPaxJ3L76PH67DhHZviq3Nfg85KYbpuhS64FSm+9tXe4IaKn6EjbHo20g==", - "dependencies": { - "@turf/boolean-disjoint": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@turf/boolean-overlap": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.1.0.tgz", - "integrity": "sha512-mJRN0X8JiPm8eDZk5sLvIrsP03A2GId6ijx4VgSE1AvHwV6qB561KlUbWxga2AScocIfv/y/qd2OCs+/TQSZcg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/line-overlap": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "geojson-equality-ts": "^1.0.2", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@turf/boolean-parallel": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.1.0.tgz", - "integrity": "sha512-tA84Oux0X91CxUc6c/lZph5W9wUZGNT4fxFOg5Gp1IMTSwtxSYL1LMvKsr/VmMnwdOUkNcqAgU06+t4wBLtDfg==", + "node_modules/babel-plugin-jsx-dom-expressions": { + "version": "0.38.1", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.38.1.tgz", + "integrity": "sha512-4FD4H69Cu4jHx2uLDEvx4YC5T/fC/Dmaafhsm8hXm7SjHYzjr09gBVyHdoFza+91f/g9e6tIzjbLCMkOXwmlew==", + "dev": true, "dependencies": { - "@turf/clean-coords": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/line-segment": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "@babel/helper-module-imports": "7.18.6", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7", + "html-entities": "2.3.3", + "validate-html-nesting": "^1.2.1" }, - "funding": { - "url": "https://opencollective.com/turf" + "peerDependencies": { + "@babel/core": "^7.20.12" } }, - "node_modules/@turf/boolean-point-in-polygon": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.1.0.tgz", - "integrity": "sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==", + "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "point-in-polygon-hao": "^1.1.0", - "tslib": "^2.6.2" + "@babel/types": "^7.18.6" }, - "funding": { - "url": "https://opencollective.com/turf" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@turf/boolean-point-on-line": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.1.0.tgz", - "integrity": "sha512-Kd83EjeTyY4kVMAhcW3Lb8aChwh24BUIhmpE9Or8M+ETNsFGzn9M7qtIySJHLRzKAL3letvWSKXKQPuK1AhAzg==", + "node_modules/babel-preset-solid": { + "version": "1.8.19", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.19.tgz", + "integrity": "sha512-F3MoUdx3i4znhStnXUBno+5kGSbvhpbGrPgqfRPrS8W7foVJUOSd1/F9QDyd9dgClHfr+J7V14931eu1PEDDMQ==", + "dev": true, "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" + "babel-plugin-jsx-dom-expressions": "^0.38.1" }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-touches": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.1.0.tgz", - "integrity": "sha512-qN4LCs3RfVtNAAdn5GpsUFBqoZyAaK9UzSnGSh67GP9sy5M8MEHwM/HAJ5zGWJqQADrczI3U6BRWGLcGfGSz3Q==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-valid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.1.0.tgz", - "integrity": "sha512-zq1QCfQEyn+piHlvxxDifjmsJn2xl53i4mnKFYdMQI/i09XiX+Fi/MVM3i2hf3D5AsEPsud8Tk7C7rWNCm4nVw==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/boolean-crosses": "^7.1.0", - "@turf/boolean-disjoint": "^7.1.0", - "@turf/boolean-overlap": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@types/geojson": "^7946.0.10", - "geojson-polygon-self-intersections": "^1.2.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-within": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.1.0.tgz", - "integrity": "sha512-pgXgKCzYHssADQ1nClB1Q9aWI/dE1elm2jy3B5X59XdoFXKrKDZA+gCHYOYgp2NGO/txzVfl3UKvnxIj54Fa4w==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/buffer": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.1.0.tgz", - "integrity": "sha512-QM3JiCMYA19k5ouO8wJtvICX3Y8XntxVpDfHSKhFFidZcCkMTR2PWWOpwS6EoL3t75rSKw/FOLIPLZGtIu963w==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/center": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/jsts": "^2.7.1", - "@turf/meta": "^7.1.0", - "@turf/projection": "^7.1.0", - "@types/geojson": "^7946.0.10", - "d3-geo": "1.7.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.1.0.tgz", - "integrity": "sha512-p9AvBMwNZmRg65kU27cGKHAUQnEcdz8Y7f/i5DvaMfm4e8zmawr+hzPKXaUpUfiTyLs8Xt2W9vlOmNGyH+6X3w==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-mean": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.1.0.tgz", - "integrity": "sha512-NQZB1LUVsyAD+p0+D4huzX2XVnfVx1yEEI9EX602THmi+g+nkge4SK9OMV11ov/Tv8JJ6aVNVPo/cy1vm/LCIQ==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-median": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.1.0.tgz", - "integrity": "sha512-jx4/Ql5+v41Cd0J/gseNCUbLTzWUT2LUaiXn8eFWDrvmEgqHIx7KJcGcJd5HzV+9zJwng4AXxyh5NMvUR0NjwA==", - "dependencies": { - "@turf/center-mean": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/center-of-mass": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.1.0.tgz", - "integrity": "sha512-j38oBlj7LBoCjZbrIo8EoHVGhk7UQmMLQ1fe8ZPAF9pd05XEL1qxyHKZKdQ/deGISiaEhXCyfLNrKAHAuy25RA==", - "dependencies": { - "@turf/centroid": "^7.1.0", - "@turf/convex": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/centroid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", - "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/circle": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.1.0.tgz", - "integrity": "sha512-6qhF1drjwH0Dg3ZB9om1JkWTJfAqBcbtIrAj5UPlrAeHP87hGoCO2ZEsFEAL9Q18vntpivT89Uho/nqQUjJhYw==", - "dependencies": { - "@turf/destination": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clean-coords": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.1.0.tgz", - "integrity": "sha512-q1U8UbRVL5cRdwOlNjD8mad8pWjFGe0s4ihg1pSiVNq7i47WASJ3k20yZiUFvuAkyNjV0rZ/A7Jd7WzjcierFg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clone": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.1.0.tgz", - "integrity": "sha512-5R9qeWvL7FDdBIbEemd0eCzOStr09oburDvJ1hRiPCFX6rPgzcZBQ0gDmZzoF4AFcNLb5IwknbLZjVLaUGWtFA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.1.0.tgz", - "integrity": "sha512-7CY3Ai+5V6q2O9/IgqLpJQrmrTy7aUJjTW1iRan8Tz3WixvxyJHeS3iyRy8Oc0046chQIaHLtyTgKVt2QdsPSA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-dbscan": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.1.0.tgz", - "integrity": "sha512-BmrBTOEaKN5FIED6b3yb3V3ejfK0A2Q3pT9/ji3mcRLJiBaRGeiN5V6gtGXe7PeMYdoqhHykU5Ye2uUtREWRdQ==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "rbush": "^3.0.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clusters-kmeans": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.1.0.tgz", - "integrity": "sha512-M8cCqR6iE1jDSUF/UU9QdPUFrobZS2fo59TfF1IRHZ2G1EjbcK4GzZcUfmQS6DZraGudYutpMYIuNdm1dPMqdQ==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "skmeans": "0.9.7", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/collect": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.1.0.tgz", - "integrity": "sha512-6indMWLiKeBh4AsioNeFeFnO0k9U5CBsWAFEje6tOEFI4c+P7LF9mNA9z91H8KkrhegR9XNO5Vm2rmdY63aYXw==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "rbush": "^3.0.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/combine": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.1.0.tgz", - "integrity": "sha512-Xl7bGKKjgzIq2T/IemS6qnIykyuxU6cMxKtz+qLeWJGoNww/BllwxXePSV+dWRPXZTFFj96KIhBXAW0aUjAQKQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/concave": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.1.0.tgz", - "integrity": "sha512-aSid53gYRee4Tjc4pfeI3KI+RoBUnL/hRMilxIPduagTgZZS+cvvk01OQWBKm5UTVfHRGuy0XIqnK8y9RFinDQ==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/tin": "^7.1.0", - "@types/geojson": "^7946.0.10", - "topojson-client": "3.x", - "topojson-server": "3.x", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/convex": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.1.0.tgz", - "integrity": "sha512-w9fUMZYE36bLrEWEj7L7aVMCB7NBtr2o8G+avRvUIwF4DPqbtcjlcZE9EEBfq44uYdn+/Pke6Iq42T/zyD/cpg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "concaveman": "^1.2.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/destination": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.1.0.tgz", - "integrity": "sha512-97XuvB0iaAiMg86hrnZ529WwP44TQAA9mmI5PMlchACiA4LFrEtWjjDzvO6234coieoqhrw6dZYcJvd5O2PwrQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/difference": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.1.0.tgz", - "integrity": "sha512-+JVzdskICQ8ULKQ9CpWUM5kBvoXxN4CO78Ez/Ki3/7NXl7+HM/nb12B0OyM8hkJchpb8TsOi0YwyJiKMqEpTBA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "polygon-clipping": "^0.15.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/dissolve": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.1.0.tgz", - "integrity": "sha512-fyOnCSYVUZ8SF9kt9ROnQYlkJTE0hpWSoWwbMZQCAR7oVZVPiuPq7eIbzTP+k5jzEAnofsqoGs5qVDTjHcWMiw==", - "dependencies": { - "@turf/flatten": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "polygon-clipping": "^0.15.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.1.0.tgz", - "integrity": "sha512-hhNHhxCHB3ddzAGCNY4BtE29OZh+DAJPvUapQz+wOjISnlwvMcwLKvslgHWSYF536QDVe/93FEU2q67+CsZTPA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance-weight": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.1.0.tgz", - "integrity": "sha512-8m6s4y8Yyt6r3itf44yAJjXC+62UkrkhOpskIfaE0lHcBcvZz9wjboHoBf3bS4l/42E4StcanbFZdjOpODAdZw==", - "dependencies": { - "@turf/centroid": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/ellipse": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.1.0.tgz", - "integrity": "sha512-AfOahUmStDExWGPg8ZWxxkgom+fdJs7Mn9DzZH+fV/uZ+je1bLQpbPCUu9/ev6u/HhbYGl4VAL/CeQzjOyy6LQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/rhumb-destination": "^7.1.0", - "@turf/transform-rotate": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/envelope": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.1.0.tgz", - "integrity": "sha512-WeLQse9wuxsxhzSqrJA6Ha7rLWnLKgdKY9cfxmJKHSpgqcJyNk60m7+T3UpI/nkGwpfbpeyB3EGC1EWPbxiDUg==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/bbox-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/explode": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.1.0.tgz", - "integrity": "sha512-To+GUbU6HtcHZ8S0w/dw1EbdQIOCXALTr6Ug5/IFg8hIBMJelDpVr3Smwy8uqhDRFinY2eprBwQnDPcd10eCqA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/flatten": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.1.0.tgz", - "integrity": "sha512-Kb23pqEarcLsdBqnQcK0qTrSMiWNTVb9tOFrNlZc66DIhDLAdpOKG4eqk00CMoUzWTixlnawDgJRqcStRrR4WA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/flip": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.1.0.tgz", - "integrity": "sha512-vac73W8WblzzNFanzWYLBzWDIcqc5xczOrtEO07RDEiKEI3Heo0471Jed3v9W506uuOX6/HAiCjXbRjTLjiLfw==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/geojson-rbush": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.1.0.tgz", - "integrity": "sha512-j1C7Ohlxa1z644bNOpgibcFGaDLgLXGLOzwF1tfQaP5y7E4PJQUXL0DWIgNb3Ke7gZC05LPHM25a5TRReUfFBQ==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "rbush": "^3.0.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/great-circle": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.1.0.tgz", - "integrity": "sha512-92q5fqUp5oW+FYekUIrUVR5PZBWbOV6NHKHPIiNahiPvtkpZItbbjoO+tGn5+2i8mxZP9FGOthayJe4V0a1xkg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/helpers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", - "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/hex-grid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.1.0.tgz", - "integrity": "sha512-I+Apx0smOPkMzaS5HHL44YOxSkSUvrz+wtSIETsDFWWLT2xKNkaaEcYU5MkgSoEfQsj082M7EkOIIpocXlA3kg==", - "dependencies": { - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/intersect": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/interpolate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.1.0.tgz", - "integrity": "sha512-VWec1OW9gHZLPS3yYkUXAHKMGQuYO4aqh8WCltT7Ym4efrKqkSOE5T+mBqO68QgcL8nY4kiNa8lxwXd0SfXDSA==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/hex-grid": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/point-grid": "^7.1.0", - "@turf/square-grid": "^7.1.0", - "@turf/triangle-grid": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/intersect": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.1.0.tgz", - "integrity": "sha512-T0VhI6yhptX9EoMsuuBETyqV+edyq31SUC8bfuM6kdJ5WwJ0EvUfQoC+3bhMtCOn60lHawrUuGBgW+vCO8KGMg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "polygon-clipping": "^0.15.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/invariant": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.1.0.tgz", - "integrity": "sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/isobands": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.1.0.tgz", - "integrity": "sha512-iMLTOP/K5C05AttF4N1WeV+KrY4O5VWW/abO0N86XCWh1OeqmIUgqIBKEmhDzttAqC0UK2YrUfj0lI1Ez1fYZQ==", - "dependencies": { - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/explode": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "marchingsquares": "^1.3.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/isolines": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.1.0.tgz", - "integrity": "sha512-V6QTHXBT5ZsL3s9ZVBJgHYtz3gCFKqNnQLysNE02LE0fVVqaSao3sFrcpghmdDxf0hBCDK8lZVvyRGO6o32LHQ==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "marchingsquares": "^1.3.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/jsts": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.1.tgz", - "integrity": "sha512-+nwOKme/aUprsxnLSfr2LylV6eL6T1Tuln+4Hl92uwZ8FrmjDRCH5Bi1LJNVfWCiYgk8+5K+t2zDphWNTsIFDA==", - "dependencies": { - "jsts": "2.7.1" - } - }, - "node_modules/@turf/kinks": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.1.0.tgz", - "integrity": "sha512-KKLYUsyJPU17fODwA81mhHzFYGQYocdbk9NxDPCcdRHvxzM8t95lptkGx/2k/9rXBs1DK7NmyzI4m7zDO0DK7g==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.1.0.tgz", - "integrity": "sha512-wUJj9WLKEudG1ngNao2ZwD+Dt6UkvWIbubuJ6lR6FndFDL3iezFhNGy0IXS+0xH9kXi2apiTnM9Vk5+i8BTEvQ==", - "dependencies": { - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-arc": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.1.0.tgz", - "integrity": "sha512-9/bM34PozTyJ5FXXPAzl/j0RpcTImgMFJZ0WhH0pZZEZRum6P0rJnENt2E2qI441zeozQ9H6X5DCiJogDmRUEw==", - "dependencies": { - "@turf/circle": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-chunk": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.1.0.tgz", - "integrity": "sha512-1lIUfqAQvCWAuUNC2ip8UYmM5kDltXOidLPW45Ee1OAIKYGBeFNtjwnxc0mQ40tnfTXclTYLDdOOP9LShspT9w==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/length": "^7.1.0", - "@turf/line-slice-along": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-intersect": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.1.0.tgz", - "integrity": "sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "sweepline-intersections": "^1.5.0", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-offset": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.1.0.tgz", - "integrity": "sha512-pz6irzhiQlJurU7DoXada6k3ei7PzY+VpsE/Wotm0D2KEAnoxqum2WK0rqqrhKPHKn+xpUGsHN9W/6K+qtmaHg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-overlap": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.1.0.tgz", - "integrity": "sha512-BdHuEoFAtqvVw3LkjCdivG035nfuwZuxji2ijst+mkmDnlv7uwSBudJqcDGjU6up2r8P1mXChS4im4xjUz+lwg==", - "dependencies": { - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/geojson-rbush": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-segment": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/nearest-point-on-line": "^7.1.0", - "@types/geojson": "^7946.0.10", - "fast-deep-equal": "^3.1.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-segment": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.1.0.tgz", - "integrity": "sha512-9rgIIH6ZzC3IiWxDQtKsq+j6eu8fRinMkJeusfI9HqOTm4vO02Ll4F/FigjOMOO/6X3TJ+Pqe3gS99TUaBINkw==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-slice": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.1.0.tgz", - "integrity": "sha512-44xcjgMQxTa7tTAZlSD3t1cFjHi5SCfAqjg1ONv45EYKsQSonPaxD7LGzCbU5pR2RJjx3R7QRJx2G88hnGcXjQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/nearest-point-on-line": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-slice-along": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.1.0.tgz", - "integrity": "sha512-UwfnFORZnu4xdnuRXiQM3ODa8f9Q0FBjQF/XHNsPEI/xxmnwgQj3MZiULbAeHUbtU/7psTC7gEjfE3Lf0tcKQw==", - "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-split": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.1.0.tgz", - "integrity": "sha512-QqUAmtlrnEu75cpLOmpEuiYU63BeVwpSKOBllBbu5gkP+7H/WBM/9fh7J0VgHNFHzqZCKiu8v4158k+CZr0QAg==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/geojson-rbush": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/line-segment": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/nearest-point-on-line": "^7.1.0", - "@turf/square": "^7.1.0", - "@turf/truncate": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-to-polygon": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.1.0.tgz", - "integrity": "sha512-n/IWBRbo+l4XDTz4sfQsQm5bU9xex8KrthK397jQasd7a9PiOKGon9Z1t/lddTJhND6ajVyJ3hl+eZMtpQaghQ==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/mask": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.1.0.tgz", - "integrity": "sha512-d+u3IIiRhe17TDfP/+UMn9qRlJYPJpK7sj6WorsssluGi0yIG/Z24uWpcLskWKSI8NNgkIbDrp+GIYkJi2t7SA==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "polygon-clipping": "^0.15.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/meta": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", - "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/midpoint": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.1.0.tgz", - "integrity": "sha512-uiUU9TwRZOCeiTUn8+7oE6MJUvclfq+n6KQ5VCMTZXiRUJjPu7nDLpBle1t2WSv7/w7O0kSQ4FfKXh0gHnkJOw==", - "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/moran-index": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.1.0.tgz", - "integrity": "sha512-xsvAr3IRF/C6PlRMoN/ANrRx6c3QFUJgBCIVfI7re+Lkdprrzgw1HZA48ZjP4F91xbhgA1scnRgQdHFi2vO2SA==", - "dependencies": { - "@turf/distance-weight": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-neighbor-analysis": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.1.0.tgz", - "integrity": "sha512-FAhT8/op3DuvqH0XFhv055JhYq/FC4aaIxEZ4hj8c7W6sYhUHAQgdRZ0tJ1RLe5/h+eXhCTbQ+DFfnfv3klu8g==", - "dependencies": { - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/bbox-polygon": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/nearest-point": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.1.0.tgz", - "integrity": "sha512-VyInmhqfVWp+jE7sCK95o46qc4tDjAgzbRfRjr+rTgfFS1Sndyy1PdwyNn6TjBFDxiM6e+mjMEeGPjb1smJlEg==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point-on-line": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.1.0.tgz", - "integrity": "sha512-aTjAOm7ab0tl5JoxGYRx/J/IbRL1DY1ZCIYQDMEQjK5gOllhclgeBC0wDXDkEZFGaVftjw0W2RtE2I0jX7RG4A==", - "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/nearest-point-to-line": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.1.0.tgz", - "integrity": "sha512-rY2F/iY4S6U8H0hIoOI25xMWYEiKywxeTvTvn5GP8KCu+2oemfZROWa7n2+hQDRwO2/uaegrGEpxO7zlFarvzg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/point-to-line-distance": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/planepoint": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.1.0.tgz", - "integrity": "sha512-hFORBkCd7Q0kNUzLqksT4XglLgTQF9tCjG+dbnZ1VehpZu+w+vlHdoW/mY7XCX3Kj1ObiyzVmXffmVYgwXwF6Q==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-grid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.1.0.tgz", - "integrity": "sha512-ihuuUcWuCu4Z1+34UYCM5NGsU2DJaB4uE8cS3jDQoUqlc+8ii2ng8kcGEtTwVn0HdPsoKA7bgvSZcisJO0v6Ww==", - "dependencies": { - "@turf/boolean-within": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-on-feature": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.1.0.tgz", - "integrity": "sha512-lOO5J9I0diuGbN+r6jViEKRH3qfymsBvv25b7U0MuP8g/YC19ncUXZ86dmKfJx1++Rb485DS9h0nFvPmJpaOdg==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/center": "^7.1.0", - "@turf/explode": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/nearest-point": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/point-to-line-distance": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.1.0.tgz", - "integrity": "sha512-Ps9eTOCaiNgxDaSNQux0wAcSLcrI0y0zYFaD9HnVm+yCMRliQXneFti2XXotS+gR7TpgnLRAAzyx4VzJMSN2tw==", - "dependencies": { - "@turf/bearing": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/projection": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", - "@turf/rhumb-distance": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/points-within-polygon": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.1.0.tgz", - "integrity": "sha512-SzqeD9Gcp11rEya+rCVMy6IPuYMrphNEkCiQ39W6ec9hsaqKlruqmtudKhhckMGVLVUUBCQAu5f55yjcDfVW2w==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-smooth": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.1.0.tgz", - "integrity": "sha512-mTlmg4XUP5rKgCP/73N91owkAXIc3t1ZKLuwsJGQM1/Op48T3rJmDwVR/WZIMnVlxl5tFbssWCCB3blj4ivx9g==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-tangents": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.1.0.tgz", - "integrity": "sha512-ffBgHXtkrpgkNs8E6s9sVLSKG4lPGH3WBk294FNKBt9NS+rbhNCv8yTuOMeP0bOm/WizaCq/SUtVryJpUSoI/g==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/boolean-within": "^7.1.0", - "@turf/explode": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/nearest-point": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygon-to-line": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.1.0.tgz", - "integrity": "sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/polygonize": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.1.0.tgz", - "integrity": "sha512-FBjxnOzO29MbE7MWnMPHHYtOo93cQopT5pXhkuPyoKgcTUCntR1+iVFpl5YFbMkYup0j5Oexjo/pbY38lVSZGw==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/envelope": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/projection": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.1.0.tgz", - "integrity": "sha512-3wHluMoOvXnTe7dfi0kcluTyLNG5MwGsSsK5OA98vkkLH6a1xvItn8e9GcesuT07oB2km/bgefxYEIvjQG5JCA==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/quadrat-analysis": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.1.0.tgz", - "integrity": "sha512-4O5h9PyWgpqYXja9O+kzr+qk5MUz0IkJqPtt5oWWX5s4jRcLNqiEUf+zi/GDBQkVV8jH3S5klT5CLrF1fxK3hQ==", - "dependencies": { - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/bbox-polygon": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/point-grid": "^7.1.0", - "@turf/random": "^7.1.0", - "@turf/square-grid": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/random": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.1.0.tgz", - "integrity": "sha512-22mXv8ejDMUWkz8DSMMqdZb0s7a0ISJzXt6T9cHovfT//vsotzkVH+5PDxJQjvmigKMnpaUgobHmQss23tAwEQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rectangle-grid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.1.0.tgz", - "integrity": "sha512-4d2AuDj4LfMMJxNHbds5yX1oFR3mIVAB5D7mx6pFB0e+YkQW0mE2dUWhDTFGJZM+n45yqbNQ5hg19bmiXv94ug==", - "dependencies": { - "@turf/boolean-intersects": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rewind": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.1.0.tgz", - "integrity": "sha512-zX0KDZpeiH89m1vYLTEJdDL6mFyoAsCxcG0P94mXO7/JXWf0AaxzA9MkNnA/d2QYX0G4ioCMjZ5cD6nXb8SXzw==", - "dependencies": { - "@turf/boolean-clockwise": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-bearing": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.1.0.tgz", - "integrity": "sha512-ESZt70eOljHVnQMFKIdiu8LIHuQlpZgzh2nqSfV40BrYjsjI/sBKeK+sp2cBWk88nsSDlriPuMTNh4f50Jqpkw==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-destination": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.1.0.tgz", - "integrity": "sha512-WA2TeO3qrv5ZrzNihtTLLYu8X4kd12WEC6JKElm99XhgLao1/4ao2SJUi43l88HqwbrnNiq4TueGQ6tYpXGU7A==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/rhumb-distance": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.1.0.tgz", - "integrity": "sha512-fR1V+yC4E1tnbdThomosiLcv0PQOwbfLSPM8rSWuxbMcJtffsncWxyJ0+N1F5juuHbcdaYhlduX8ri5I0ZCejw==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sample": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.1.0.tgz", - "integrity": "sha512-9Iq/Ankr4+sgBoh4FpuVVvoW+AA10eej3FS89Zu79SFdCqUIdT7T42Nn3MlSVj4jMyA1oXyT2HIAlNWkwgLw6Q==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/sector": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.1.0.tgz", - "integrity": "sha512-2FI2rg//eXpa/l+WJtFfvHaf1NJ7ie2MoJ+RH5dKANtrfoof1Ed+y9dXSyuhem2tp/Srq2GhrjaSofFN5/g5vA==", - "dependencies": { - "@turf/circle": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/line-arc": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/shortest-path": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.1.0.tgz", - "integrity": "sha512-1UmFhS5zHNacLv5rszoFOXq02BGov1oJvjlDatXsSWAd+Z7tqxpDc8D+41edrXy0ZB0Yxsy6WPNagM6hG9PRaA==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/bbox-polygon": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/clean-coords": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/transform-scale": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/simplify": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.1.0.tgz", - "integrity": "sha512-JypymaoiSiFzGHwEoUkK0OPW1KQSnH3hEsEW3UIRS+apzltJ4HdFovYjsfqQgGZJZ+NJ9+dv7h8pgGLYuqcBUQ==", - "dependencies": { - "@turf/clean-coords": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/square": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.1.0.tgz", - "integrity": "sha512-ANuA+WXZheGTLW6Veq0i+/B2S4KMhEHAixDv9gQEb9e6FTyqTJVwrqP4CHI3OzA3DZ/ytFf+NTKVofetO/BBQg==", - "dependencies": { - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/square-grid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.1.0.tgz", - "integrity": "sha512-JyhsALULVRlkh8htdTi9aXaXFSUv6wRNbeFbqyGJKKlA5eF+AYmyWdI/BlFGQN27xtbtMPeAuLmj+8jaB2omGw==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/rectangle-grid": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/standard-deviational-ellipse": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.1.0.tgz", - "integrity": "sha512-JqvQFH/witHh+3XgPC1Qk4+3G8w8WQta2NTJjnGinOgFulH+7RD4DcxCT+XXtCHoeq8IvL9VPJRX3ciaW5nSCg==", - "dependencies": { - "@turf/center-mean": "^7.1.0", - "@turf/ellipse": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/points-within-polygon": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tag": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.1.0.tgz", - "integrity": "sha512-cD8TC++DnNmdI1B/apTf3nj2zRNY6SoLRliB8K76OB+70Kev8tOf4ZVgAqOd0u+Hpdg/T6l7dO7fyJ6UouE7jA==", - "dependencies": { - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tesselate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.1.0.tgz", - "integrity": "sha512-E/Z94Mx6kUjvQVbEcSuM9MbEo2dkOczRe4ZzjhFlLgJh1dCkfRgwYLH49mb2CcfG/me1arxoCgmtG+qgm7LrCg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "earcut": "^2.2.4", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/tin": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.1.0.tgz", - "integrity": "sha512-h8Bdm0IYN6OpKHM8lBRWGxkJnZcxL0KYecf8U6pa6DCEYsEXuEExMTvYSD2OmqIsL5ml8P6RjwgyI+dZeE0O9A==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-rotate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.1.0.tgz", - "integrity": "sha512-Vp7VBZ6DqaPV8mkwSycksBFRLqSj3y16zg+uEPSCsXUjbFtw9DOLcyH2F5vMpnC2bOpS9NOB4hebhJRwBwAPWQ==", - "dependencies": { - "@turf/centroid": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", - "@turf/rhumb-destination": "^7.1.0", - "@turf/rhumb-distance": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-scale": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.1.0.tgz", - "integrity": "sha512-m5fLnh3JqrWSv0sAC8Aieet/fr5IZND8BFaE9LakMidtNaJqOIPOyVmUoklcrGn6eK6MX+66rRPn+5a1pahlLQ==", - "dependencies": { - "@turf/bbox": "^7.1.0", - "@turf/center": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", - "@turf/rhumb-destination": "^7.1.0", - "@turf/rhumb-distance": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/transform-translate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.1.0.tgz", - "integrity": "sha512-XA6Oh7VqUDrieY9m9/OF4XpBTd8qlfVGi3ObywojCqtHaHKLK3aXwTBZ276i0QKmZqOQA+2jFa9NhgF/TgBDrw==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/rhumb-destination": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/triangle-grid": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.1.0.tgz", - "integrity": "sha512-hrPyRAuX5PKu7txmc/11VPKrlJDR+JGzd+eijupKTspNLR4n2sqZUx8UXqSxZ/1nq06ScTyjIfGQJVzlRS8BTg==", - "dependencies": { - "@turf/distance": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/intersect": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/truncate": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.1.0.tgz", - "integrity": "sha512-rrF3AML9PGZw2i5wmt53ESI+Ln9cZyCXgJ7QrEvkT8NbE4OFgmw6p8/1xT8+VEWFSpD4gHz+hmM+5FaFxXvtNg==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/turf": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.1.0.tgz", - "integrity": "sha512-7NA6tAjbu9oIvIfpRO5AdPrZbFTlUFU02HVA7sLJM9jFeNIZovW09QuDo23uoS2z5l94SXV1GgKKxN5wo7prCw==", - "dependencies": { - "@turf/along": "^7.1.0", - "@turf/angle": "^7.1.0", - "@turf/area": "^7.1.0", - "@turf/bbox": "^7.1.0", - "@turf/bbox-clip": "^7.1.0", - "@turf/bbox-polygon": "^7.1.0", - "@turf/bearing": "^7.1.0", - "@turf/bezier-spline": "^7.1.0", - "@turf/boolean-clockwise": "^7.1.0", - "@turf/boolean-concave": "^7.1.0", - "@turf/boolean-contains": "^7.1.0", - "@turf/boolean-crosses": "^7.1.0", - "@turf/boolean-disjoint": "^7.1.0", - "@turf/boolean-equal": "^7.1.0", - "@turf/boolean-intersects": "^7.1.0", - "@turf/boolean-overlap": "^7.1.0", - "@turf/boolean-parallel": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/boolean-point-on-line": "^7.1.0", - "@turf/boolean-touches": "^7.1.0", - "@turf/boolean-valid": "^7.1.0", - "@turf/boolean-within": "^7.1.0", - "@turf/buffer": "^7.1.0", - "@turf/center": "^7.1.0", - "@turf/center-mean": "^7.1.0", - "@turf/center-median": "^7.1.0", - "@turf/center-of-mass": "^7.1.0", - "@turf/centroid": "^7.1.0", - "@turf/circle": "^7.1.0", - "@turf/clean-coords": "^7.1.0", - "@turf/clone": "^7.1.0", - "@turf/clusters": "^7.1.0", - "@turf/clusters-dbscan": "^7.1.0", - "@turf/clusters-kmeans": "^7.1.0", - "@turf/collect": "^7.1.0", - "@turf/combine": "^7.1.0", - "@turf/concave": "^7.1.0", - "@turf/convex": "^7.1.0", - "@turf/destination": "^7.1.0", - "@turf/difference": "^7.1.0", - "@turf/dissolve": "^7.1.0", - "@turf/distance": "^7.1.0", - "@turf/distance-weight": "^7.1.0", - "@turf/ellipse": "^7.1.0", - "@turf/envelope": "^7.1.0", - "@turf/explode": "^7.1.0", - "@turf/flatten": "^7.1.0", - "@turf/flip": "^7.1.0", - "@turf/geojson-rbush": "^7.1.0", - "@turf/great-circle": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/hex-grid": "^7.1.0", - "@turf/interpolate": "^7.1.0", - "@turf/intersect": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@turf/isobands": "^7.1.0", - "@turf/isolines": "^7.1.0", - "@turf/kinks": "^7.1.0", - "@turf/length": "^7.1.0", - "@turf/line-arc": "^7.1.0", - "@turf/line-chunk": "^7.1.0", - "@turf/line-intersect": "^7.1.0", - "@turf/line-offset": "^7.1.0", - "@turf/line-overlap": "^7.1.0", - "@turf/line-segment": "^7.1.0", - "@turf/line-slice": "^7.1.0", - "@turf/line-slice-along": "^7.1.0", - "@turf/line-split": "^7.1.0", - "@turf/line-to-polygon": "^7.1.0", - "@turf/mask": "^7.1.0", - "@turf/meta": "^7.1.0", - "@turf/midpoint": "^7.1.0", - "@turf/moran-index": "^7.1.0", - "@turf/nearest-neighbor-analysis": "^7.1.0", - "@turf/nearest-point": "^7.1.0", - "@turf/nearest-point-on-line": "^7.1.0", - "@turf/nearest-point-to-line": "^7.1.0", - "@turf/planepoint": "^7.1.0", - "@turf/point-grid": "^7.1.0", - "@turf/point-on-feature": "^7.1.0", - "@turf/point-to-line-distance": "^7.1.0", - "@turf/points-within-polygon": "^7.1.0", - "@turf/polygon-smooth": "^7.1.0", - "@turf/polygon-tangents": "^7.1.0", - "@turf/polygon-to-line": "^7.1.0", - "@turf/polygonize": "^7.1.0", - "@turf/projection": "^7.1.0", - "@turf/quadrat-analysis": "^7.1.0", - "@turf/random": "^7.1.0", - "@turf/rectangle-grid": "^7.1.0", - "@turf/rewind": "^7.1.0", - "@turf/rhumb-bearing": "^7.1.0", - "@turf/rhumb-destination": "^7.1.0", - "@turf/rhumb-distance": "^7.1.0", - "@turf/sample": "^7.1.0", - "@turf/sector": "^7.1.0", - "@turf/shortest-path": "^7.1.0", - "@turf/simplify": "^7.1.0", - "@turf/square": "^7.1.0", - "@turf/square-grid": "^7.1.0", - "@turf/standard-deviational-ellipse": "^7.1.0", - "@turf/tag": "^7.1.0", - "@turf/tesselate": "^7.1.0", - "@turf/tin": "^7.1.0", - "@turf/transform-rotate": "^7.1.0", - "@turf/transform-scale": "^7.1.0", - "@turf/transform-translate": "^7.1.0", - "@turf/triangle-grid": "^7.1.0", - "@turf/truncate": "^7.1.0", - "@turf/union": "^7.1.0", - "@turf/unkink-polygon": "^7.1.0", - "@turf/voronoi": "^7.1.0", - "@types/geojson": "^7946.0.10", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/union": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.1.0.tgz", - "integrity": "sha512-7VI8jONdBg9qmbfNlLQycPr93l5aU9HGMgWI9M6pb4ERuU2+p8KgffCgs2NyMtP2HxPrKSybzj31g7bnbEKofQ==", - "dependencies": { - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "polygon-clipping": "^0.15.3", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/unkink-polygon": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.1.0.tgz", - "integrity": "sha512-pqkirni2aLpRA1ELFIuJz+mkjYyJQX8Ar6BflSu1b0ajY/CTrcDxbIv1x8UfvbybLzdJc4Gxzg5mo4cEtSwtaQ==", - "dependencies": { - "@turf/area": "^7.1.0", - "@turf/boolean-point-in-polygon": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/meta": "^7.1.0", - "@types/geojson": "^7946.0.10", - "rbush": "^3.0.1", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/voronoi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.1.0.tgz", - "integrity": "sha512-xUvzPDG6GaqEekgxd+pjeMKJXOYJ3eFIqUHbTe/ISKzzv3f2cFGiR2VH7ZGXri8d4ozzCQbUQ27ilHPPLf5+xw==", - "dependencies": { - "@turf/clone": "^7.1.0", - "@turf/helpers": "^7.1.0", - "@turf/invariant": "^7.1.0", - "@types/d3-voronoi": "^1.1.12", - "@types/geojson": "^7946.0.10", - "d3-voronoi": "1.1.2", - "tslib": "^2.6.2" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.7" - } - }, - "node_modules/@types/d3-voronoi": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", - "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==" - }, - "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 - }, - "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" - }, - "node_modules/@types/geojson-vt": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", - "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/mapbox__point-geometry": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", - "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" - }, - "node_modules/@types/mapbox__vector-tile": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", - "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", - "dependencies": { - "@types/geojson": "*", - "@types/mapbox__point-geometry": "*", - "@types/pbf": "*" - } - }, - "node_modules/@types/pbf": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", - "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" - }, - "node_modules/@types/supercluster": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", - "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-plugin-jsx-dom-expressions": { - "version": "0.38.1", - "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.38.1.tgz", - "integrity": "sha512-4FD4H69Cu4jHx2uLDEvx4YC5T/fC/Dmaafhsm8hXm7SjHYzjr09gBVyHdoFza+91f/g9e6tIzjbLCMkOXwmlew==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "7.18.6", - "@babel/plugin-syntax-jsx": "^7.18.6", - "@babel/types": "^7.20.7", - "html-entities": "2.3.3", - "validate-html-nesting": "^1.2.1" - }, - "peerDependencies": { - "@babel/core": "^7.20.12" - } - }, - "node_modules/babel-plugin-jsx-dom-expressions/node_modules/@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/babel-preset-solid": { - "version": "1.8.19", - "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.19.tgz", - "integrity": "sha512-F3MoUdx3i4znhStnXUBno+5kGSbvhpbGrPgqfRPrS8W7foVJUOSd1/F9QDyd9dgClHfr+J7V14931eu1PEDDMQ==", - "dev": true, - "dependencies": { - "babel-plugin-jsx-dom-expressions": "^0.38.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/bigfloat": { @@ -3166,22 +1307,6 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" - }, - "node_modules/concaveman": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", - "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", - "dependencies": { - "point-in-polygon": "^1.1.0", - "rbush": "^3.0.1", - "robust-predicates": "^2.0.4", - "tinyqueue": "^2.0.3" - } - }, "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", @@ -3193,24 +1318,6 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, - "node_modules/d3-array": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", - "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" - }, - "node_modules/d3-geo": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", - "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", - "dependencies": { - "d3-array": "1" - } - }, - "node_modules/d3-voronoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", - "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" - }, "node_modules/debug": { "version": "4.3.6", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", @@ -3228,11 +1335,6 @@ } } }, - "node_modules/earcut": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", - "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" - }, "node_modules/electron-to-chromium": { "version": "1.5.13", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", @@ -3306,11 +1408,6 @@ "node": ">=0.10.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -3334,35 +1431,6 @@ "node": ">=6.9.0" } }, - "node_modules/geojson-equality-ts": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", - "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", - "dependencies": { - "@types/geojson": "^7946.0.14" - } - }, - "node_modules/geojson-polygon-self-intersections": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", - "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", - "dependencies": { - "rbush": "^2.0.1" - } - }, - "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", - "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" - }, - "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", - "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", - "dependencies": { - "quickselect": "^1.0.1" - } - }, "node_modules/geojson-vt": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", @@ -3538,14 +1606,6 @@ "node": ">=6" } }, - "node_modules/jsts": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz", - "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==", - "engines": { - "node": ">= 12" - } - }, "node_modules/kdbush": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", @@ -3618,11 +1678,6 @@ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" }, - "node_modules/marchingsquares": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz", - "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==" - }, "node_modules/merge-anything": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/merge-anything/-/merge-anything-5.1.7.tgz", @@ -3699,30 +1754,6 @@ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, - "node_modules/point-in-polygon": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", - "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" - }, - "node_modules/point-in-polygon-hao": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.1.0.tgz", - "integrity": "sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ==" - }, - "node_modules/polygon-clipping": { - "version": "0.15.7", - "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz", - "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==", - "dependencies": { - "robust-predicates": "^3.0.2", - "splaytree": "^3.1.0" - } - }, - "node_modules/polygon-clipping/node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, "node_modules/postcss": { "version": "8.4.41", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", @@ -3771,19 +1802,6 @@ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" }, - "node_modules/rbush": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", - "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", - "dependencies": { - "quickselect": "^2.0.0" - } - }, - "node_modules/rbush/node_modules/quickselect": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", - "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" - }, "node_modules/resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", @@ -3792,11 +1810,6 @@ "protocol-buffers-schema": "^3.3.1" } }, - "node_modules/robust-predicates": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", - "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==" - }, "node_modules/rollup": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", @@ -3887,11 +1900,6 @@ "node": ">=0.10.0" } }, - "node_modules/skmeans": { - "version": "0.9.7", - "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", - "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" - }, "node_modules/solid-js": { "version": "1.8.21", "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.21.tgz", @@ -3957,11 +1965,6 @@ "node": ">=0.10.0" } }, - "node_modules/splaytree": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz", - "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==" - }, "node_modules/split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", @@ -4016,24 +2019,11 @@ "node": ">=4" } }, - "node_modules/sweepline-intersections": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", - "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", - "dependencies": { - "tinyqueue": "^2.0.0" - } - }, "node_modules/terra-draw": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/terra-draw/-/terra-draw-1.0.0-beta.1.tgz", "integrity": "sha512-eYv2JhJCJTlHYGK6//Prw2fyA0PS4LDUpu0ZpX19kqtMUGdxDTBFARkr0Tg0LEYBfxz4wUkyRngxGq2pNu/wUw==" }, - "node_modules/tinyqueue": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", - "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" - }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -4043,34 +2033,11 @@ "node": ">=4" } }, - "node_modules/topojson-client": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", - "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", - "dependencies": { - "commander": "2" - }, - "bin": { - "topo2geo": "bin/topo2geo", - "topomerge": "bin/topomerge", - "topoquantize": "bin/topoquantize" - } - }, - "node_modules/topojson-server": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", - "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", - "dependencies": { - "commander": "2" - }, - "bin": { - "geo2topo": "bin/geo2topo" - } - }, "node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "license": "0BSD" }, "node_modules/typescript": { "version": "5.5.4", diff --git a/package.json b/package.json index 07c6244..d318f0c 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "preview": "vite preview" }, "dependencies": { - "@turf/turf": "^7.1.0", + "@turf/great-circle": "^7.1.0", "maplibre-gl": "^4.6.0", "protomaps-themes-base": "^3.1.0", "s2js": "^1.38.2", diff --git a/src/App.tsx b/src/App.tsx index cf073b6..b00b932 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -3,7 +3,7 @@ import "./App.css"; import maplibregl from "maplibre-gl"; import "maplibre-gl/dist/maplibre-gl.css"; import { r1, s2, s1 } from "s2js"; -import { point, greatCircle, featureCollection, polygonize } from "@turf/turf"; +import { greatCircle } from "@turf/great-circle"; import { TerraDraw, TerraDrawMapLibreGLAdapter, @@ -12,7 +12,7 @@ import { TerraDrawPolygonMode, TerraDrawCircleMode, } from "terra-draw"; -import { Polygon, FeatureCollection } from "geojson"; +import { Feature, Position, Polygon, FeatureCollection } from "geojson"; const polygonBuilder = (polygon: Polygon): s2.Polygon => { const points = []; @@ -52,37 +52,46 @@ const getCovering = ( const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const degrees = s1.angle.degrees; - let collections = [...union].map((cellid) => { + let features = [...union].map((cellid): Feature => { const cell = s2.Cell.fromCellID(cellid); const v0 = s2.LatLng.fromPoint(cell.vertex(0)); const v1 = s2.LatLng.fromPoint(cell.vertex(1)); const v2 = s2.LatLng.fromPoint(cell.vertex(2)); const v3 = s2.LatLng.fromPoint(cell.vertex(3)); - const p0 = point([degrees(v0.lng), degrees(v0.lat)]); - const p1 = point([degrees(v1.lng), degrees(v1.lat)]); - const p2 = point([degrees(v2.lng), degrees(v2.lat)]); - const p3 = point([degrees(v3.lng), degrees(v3.lat)]); + const p0 = [degrees(v0.lng), degrees(v0.lat)]; + const p1 = [degrees(v1.lng), degrees(v1.lat)]; + const p2 = [degrees(v2.lng), degrees(v2.lat)]; + const p3 = [degrees(v3.lng), degrees(v3.lat)]; - const level = s2.cellid.level(cellid); + const level = cell.level; const npoints = (30 - level) * 5; const arc0 = greatCircle(p0, p1, { npoints }); const arc1 = greatCircle(p1, p2, { npoints }); const arc2 = greatCircle(p2, p3, { npoints }); const arc3 = greatCircle(p3, p0, { npoints }); - let collection = featureCollection([arc0, arc1, arc2, arc3]); - try { - return polygonize(collection); - } catch (e) { - console.error("polygonize error"); - console.error(e); - } - return collection; + const coordinates = [ + ...arc0.geometry.coordinates.slice(0, -1), + ...arc1.geometry.coordinates.slice(0, -1), + ...arc2.geometry.coordinates.slice(0, -1), + ...arc3.geometry.coordinates, + ] as Position[]; + + return { + type: "Feature", + geometry: { + type: "Polygon", + coordinates: [coordinates], + }, + properties: { + level: cell.level, + }, + }; }); return { type: "FeatureCollection", - features: collections.map((c) => c.features).flat(1), + features: features, }; }; @@ -225,7 +234,7 @@ function App() {
- +
Date: Fri, 23 Aug 2024 11:12:54 +0800 Subject: [PATCH 2/4] support light mode --- src/App.tsx | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index b00b932..b842a61 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -144,20 +144,33 @@ function App() { }; onMount(() => { + let basemapTheme = "white"; + let cellColor = "darkslategray"; + if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + basemapTheme = "black"; + cellColor = "yellow"; + } + map = new maplibregl.Map({ container: "map", style: - "https://api.protomaps.com/styles/v3/black.json?key=5b9c1298c2eef269", + `https://api.protomaps.com/styles/v3/${basemapTheme}.json?key=5b9c1298c2eef269`, maplibreLogo: true, }); + const options = { + styles: { + outlineWidth: 0 + } + } + draw = new TerraDraw({ adapter: new TerraDrawMapLibreGLAdapter({ map, maplibregl }), modes: [ - new TerraDrawRectangleMode(), - new TerraDrawAngledRectangleMode(), - new TerraDrawPolygonMode(), - new TerraDrawCircleMode(), + new TerraDrawRectangleMode(options), + new TerraDrawAngledRectangleMode(options), + new TerraDrawPolygonMode(options), + new TerraDrawCircleMode(options), ], }); @@ -181,7 +194,7 @@ function App() { type: "fill", source: "covering", paint: { - "fill-color": "yellow", + "fill-color": cellColor, "fill-opacity": 0.5, }, }); @@ -190,7 +203,7 @@ function App() { type: "line", source: "covering", paint: { - "line-color": "yellow", + "line-color": cellColor, }, }); map.addLayer({ @@ -204,7 +217,7 @@ function App() { "text-size": 10, }, paint: { - "text-color": "yellow", + "text-color": cellColor, }, }); }); From 967352ecee348fae169149502350bd596eb2c444 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Fri, 23 Aug 2024 17:06:13 +0200 Subject: [PATCH 3/4] antimeridian --- package-lock.json | 107 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 + src/App.tsx | 105 +++++++++++++++++++++++++++++++++++++++------ tsconfig.app.json | 4 +- 4 files changed, 202 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8e0c94e..bc918f4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,7 +8,9 @@ "name": "s2js-demos", "version": "0.0.0", "dependencies": { + "@turf/flatten": "^7.1.0", "@turf/great-circle": "^7.1.0", + "@turf/polygonize": "^7.1.0", "maplibre-gl": "^4.6.0", "protomaps-themes-base": "^3.1.0", "s2js": "^1.38.2", @@ -1007,6 +1009,77 @@ "win32" ] }, + "node_modules/@turf/bbox": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", + "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.1.0.tgz", + "integrity": "sha512-fvZB09ErCZOVlWVDop836hmpKaGUmfXnR9naMhS73A/8nn4M3hELbQtMv2R8gXj7UakXCuxS/i9erdpDFZ2O+g==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.1.0.tgz", + "integrity": "sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/envelope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.1.0.tgz", + "integrity": "sha512-WeLQse9wuxsxhzSqrJA6Ha7rLWnLKgdKY9cfxmJKHSpgqcJyNk60m7+T3UpI/nkGwpfbpeyB3EGC1EWPbxiDUg==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flatten": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.1.0.tgz", + "integrity": "sha512-Kb23pqEarcLsdBqnQcK0qTrSMiWNTVb9tOFrNlZc66DIhDLAdpOKG4eqk00CMoUzWTixlnawDgJRqcStRrR4WA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@turf/great-circle": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.1.0.tgz", @@ -1048,6 +1121,35 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/meta": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", + "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygonize": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.1.0.tgz", + "integrity": "sha512-FBjxnOzO29MbE7MWnMPHHYtOo93cQopT5pXhkuPyoKgcTUCntR1+iVFpl5YFbMkYup0j5Oexjo/pbY38lVSZGw==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/envelope": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -1754,6 +1856,11 @@ "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, + "node_modules/point-in-polygon-hao": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.1.0.tgz", + "integrity": "sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ==" + }, "node_modules/postcss": { "version": "8.4.41", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", diff --git a/package.json b/package.json index d318f0c..f36fbf1 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,9 @@ "preview": "vite preview" }, "dependencies": { + "@turf/flatten": "^7.1.0", "@turf/great-circle": "^7.1.0", + "@turf/polygonize": "^7.1.0", "maplibre-gl": "^4.6.0", "protomaps-themes-base": "^3.1.0", "s2js": "^1.38.2", diff --git a/src/App.tsx b/src/App.tsx index b842a61..a5471cc 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,6 +4,8 @@ import maplibregl from "maplibre-gl"; import "maplibre-gl/dist/maplibre-gl.css"; import { r1, s2, s1 } from "s2js"; import { greatCircle } from "@turf/great-circle"; +import { flatten } from "@turf/flatten"; +import { polygonize } from "@turf/polygonize"; import { TerraDraw, TerraDrawMapLibreGLAdapter, @@ -12,7 +14,24 @@ import { TerraDrawPolygonMode, TerraDrawCircleMode, } from "terra-draw"; -import { Feature, Position, Polygon, FeatureCollection } from "geojson"; +import { + Feature, + Position, + Polygon, + LineString, + FeatureCollection, +} from "geojson"; + +const initialUnion = (): s2.CellUnion => { + const union = new s2.CellUnion(); + union.push(s2.cellid.fromFace(0)); + union.push(s2.cellid.fromFace(1)); + // union.push(s2.cellid.fromFace(2)); + union.push(s2.cellid.fromFace(3)); + union.push(s2.cellid.fromFace(4)); + // union.push(s2.cellid.fromFace(5)); + return union; +}; const polygonBuilder = (polygon: Polygon): s2.Polygon => { const points = []; @@ -50,6 +69,34 @@ const getCovering = ( ); }; +const fixAntimeridianCrossings = (arcLines: FeatureCollection) => { + if (arcLines.features.length <= 4) return; + + const antimeridianCrossings: boolean[] = []; + let antiCrossed = false; + + // find crossings + let last = arcLines.features.at(-1)!.geometry.coordinates.at(-1)!; + arcLines.features.forEach((f) => { + const first = f.geometry.coordinates.at(0)!; + if ( + (last[0] === 180 && first[0] === -180) || + (last[0] === -180 && first[0] === 180) + ) { + antiCrossed = !antiCrossed; + } + + antimeridianCrossings.push(antiCrossed); + last = f.geometry.coordinates.at(-1)!; + }); + + // fix lats + arcLines.features.forEach((f, fi) => { + if (!antimeridianCrossings[fi]) return; + f.geometry.coordinates.forEach((v) => (v[0] += 360)); + }); +}; + const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const degrees = s1.angle.degrees; let features = [...union].map((cellid): Feature => { @@ -65,18 +112,38 @@ const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const p3 = [degrees(v3.lng), degrees(v3.lat)]; const level = cell.level; - const npoints = (30 - level) * 5; + const npoints = 20 + (30 - level) * 3; const arc0 = greatCircle(p0, p1, { npoints }); const arc1 = greatCircle(p1, p2, { npoints }); const arc2 = greatCircle(p2, p3, { npoints }); const arc3 = greatCircle(p3, p0, { npoints }); - const coordinates = [ - ...arc0.geometry.coordinates.slice(0, -1), - ...arc1.geometry.coordinates.slice(0, -1), - ...arc2.geometry.coordinates.slice(0, -1), - ...arc3.geometry.coordinates, - ] as Position[]; + const arcLines: FeatureCollection = { + type: "FeatureCollection", + features: [ + ...flatten(arc0).features, + ...flatten(arc1).features, + ...flatten(arc2).features, + ...flatten(arc3).features, + ], + }; + + fixAntimeridianCrossings(arcLines); + + // const poly = polygonize(arcLines).features[0]; + // poly.properties = { level: cell.level }; + // return poly; + + const coordinates = arcLines.features + .map((f) => f.geometry.coordinates) + .flat(1); + + // const coordinates = [ + // ...arc0.features.map((f) => f.geometry.coordinates).flat(1), + // ...arc1.features.map((f) => f.geometry.coordinates).flat(1), + // ...arc2.features.map((f) => f.geometry.coordinates).flat(1), + // ...arc3.features.map((f) => f.geometry.coordinates).flat(1), + // ] as Position[]; return { type: "Feature", @@ -146,23 +213,25 @@ function App() { onMount(() => { let basemapTheme = "white"; let cellColor = "darkslategray"; - if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { + if ( + window.matchMedia && + window.matchMedia("(prefers-color-scheme: dark)").matches + ) { basemapTheme = "black"; cellColor = "yellow"; } map = new maplibregl.Map({ container: "map", - style: - `https://api.protomaps.com/styles/v3/${basemapTheme}.json?key=5b9c1298c2eef269`, + style: `https://api.protomaps.com/styles/v3/${basemapTheme}.json?key=5b9c1298c2eef269`, maplibreLogo: true, }); const options = { styles: { - outlineWidth: 0 - } - } + outlineWidth: 0, + }, + }; draw = new TerraDraw({ adapter: new TerraDrawMapLibreGLAdapter({ map, maplibregl }), @@ -220,6 +289,14 @@ function App() { "text-color": cellColor, }, }); + + // initialize the view with a predefined union + const init = initialUnion(); + if (init && init.length) { + (map!.getSource("covering") as maplibregl.GeoJSONSource).setData( + getCellVisualization(init), + ); + } }); }); diff --git a/tsconfig.app.json b/tsconfig.app.json index 8819bec..37b1536 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -1,9 +1,9 @@ { "compilerOptions": { - "target": "ES2020", + "target": "ES2022", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], + "lib": ["ES2022", "DOM", "DOM.Iterable"], "skipLibCheck": true, /* Bundler mode */ From 37a932998a1dfaebc256624186d076500439e228 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 28 Aug 2024 11:42:20 +0200 Subject: [PATCH 4/4] spherical rendering fixes --- src/App.tsx | 141 +++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 117 insertions(+), 24 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index a5471cc..91cf150 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -5,7 +5,6 @@ import "maplibre-gl/dist/maplibre-gl.css"; import { r1, s2, s1 } from "s2js"; import { greatCircle } from "@turf/great-circle"; import { flatten } from "@turf/flatten"; -import { polygonize } from "@turf/polygonize"; import { TerraDraw, TerraDrawMapLibreGLAdapter, @@ -16,20 +15,37 @@ import { } from "terra-draw"; import { Feature, - Position, Polygon, LineString, FeatureCollection, + MultiLineString, } from "geojson"; const initialUnion = (): s2.CellUnion => { const union = new s2.CellUnion(); - union.push(s2.cellid.fromFace(0)); - union.push(s2.cellid.fromFace(1)); + // union.push(s2.cellid.fromFace(0)); + // union.push(s2.cellid.fromFace(1)); // union.push(s2.cellid.fromFace(2)); - union.push(s2.cellid.fromFace(3)); - union.push(s2.cellid.fromFace(4)); + // union.push(s2.cellid.fromFace(3)); + // union.push(s2.cellid.fromFace(4)); // union.push(s2.cellid.fromFace(5)); + + // union.push(2985886552946638848n); + // union.push(3008404551083491328n); + // union.push(3098476543630901248n); + // union.push(7710162562058289152n); + // union.push(7854277750134145024n); + // union.push(8286623314361712640n); + // union.push(11957057010668666880n); + // union.push(11979575008805519360n); + // union.push(12087661399862411264n); + // union.push(12393906174523604992n); + // union.push(5719853001737240576n); + // union.push(5476377146882523136n); + // union.push(4899916394579099648n); + // union.push(s2.cellid.fromToken("5b")); + // union.push(s2.cellid.fromToken("a4")); + // union.push(s2.cellid.fromToken("4c")); return union; }; @@ -69,7 +85,7 @@ const getCovering = ( ); }; -const fixAntimeridianCrossings = (arcLines: FeatureCollection) => { +const wrapAntimeridianCrossings = (arcLines: FeatureCollection) => { if (arcLines.features.length <= 4) return; const antimeridianCrossings: boolean[] = []; @@ -90,13 +106,55 @@ const fixAntimeridianCrossings = (arcLines: FeatureCollection) => { last = f.geometry.coordinates.at(-1)!; }); - // fix lats + // wrap lats arcLines.features.forEach((f, fi) => { if (!antimeridianCrossings[fi]) return; f.geometry.coordinates.forEach((v) => (v[0] += 360)); }); }; +const fixPolarFaces = (arcs: Feature[]) => { + arcs.forEach((arc: Feature) => { + if (arc.geometry.type === "MultiLineString") { + const A = arc.geometry.coordinates[0].at(-1)!; + const B = arc.geometry.coordinates[1].at(0)!; + + // sanity checks + if (!A || Math.abs(A[0]) !== 180 || !B || Math.abs(B[0]) !== 180) { + return; + } + + // the target polar latitude + const E = Math.sign(A[0]) * 90; + + // draw a line to the pole, across, and back again + arc.geometry.coordinates = [ + arc.geometry.coordinates[0], + [A, [A[0], E], [B[0], E], B], + arc.geometry.coordinates[1], + ]; + } + }); +}; + +const fixPoles = (points: number[][]) => { + points.forEach((p, i) => { + if (Math.abs(p[1]) === 90) p[0] = points.at(i - 1)![0]; + }); +}; + +const fixFalseAntimeridianCrossings = (points: number[][]) => { + const exterior = points.filter((p) => Math.abs(p[0]) === 180); + if (exterior.length !== 2) return; + if (Math.sign(exterior[0][0]) !== Math.sign(exterior[1][0])) return; + + const interior = points.filter((p) => Math.abs(p[0]) !== 180); + if (interior.length !== 2) return; + if (Math.sign(interior[0][0]) !== Math.sign(interior[1][0])) return; + + exterior.forEach((p) => (p[0] = Math.sign(interior[0][0]) * 180)); +}; + const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const degrees = s1.angle.degrees; let features = [...union].map((cellid): Feature => { @@ -106,10 +164,29 @@ const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const v2 = s2.LatLng.fromPoint(cell.vertex(2)); const v3 = s2.LatLng.fromPoint(cell.vertex(3)); - const p0 = [degrees(v0.lng), degrees(v0.lat)]; - const p1 = [degrees(v1.lng), degrees(v1.lat)]; - const p2 = [degrees(v2.lng), degrees(v2.lat)]; - const p3 = [degrees(v3.lng), degrees(v3.lat)]; + const p0 = [degrees(v0.lng) || 0, degrees(v0.lat) || 0]; + const p1 = [degrees(v1.lng) || 0, degrees(v1.lat) || 0]; + const p2 = [degrees(v2.lng) || 0, degrees(v2.lat) || 0]; + const p3 = [degrees(v3.lng) || 0, degrees(v3.lat) || 0]; + + fixPoles([p0, p1, p2, p3]); + fixFalseAntimeridianCrossings([p0, p1, p2, p3]); + + // console.log(p0, p1, p2, p3); + + // if ([p0, p1, p2, p3].filter((p) => !p[0]).length % 2 !== 0) { + // console.log("potential line drawing issue", cellid); + // console.log(p0, p1, p2, p3); + // } + + // if ( + // [p0, p1, p2, p3].filter( + // (p) => Math.abs(p[0]) === 180 && Math.abs(p[1]) === 90, + // ).length + // ) { + // console.log("potential pole issue", cellid); + // console.log(p0, p1, p2, p3); + // } const level = cell.level; const npoints = 20 + (30 - level) * 3; @@ -118,6 +195,29 @@ const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { const arc2 = greatCircle(p2, p3, { npoints }); const arc3 = greatCircle(p3, p0, { npoints }); + const removeRedundantArcs = ( + arcs: Feature[], + ) => { + arcs.forEach((arc: Feature) => { + if (arc.geometry.type !== "MultiLineString") return; + if (arc.geometry.coordinates.length !== 2) return; + arc.geometry.coordinates = arc.geometry.coordinates.filter((ls) => { + if (ls.length !== 2) return true; + if (ls[0][0] === ls[1][0] && ls[0][1] === ls[1][1]) return false; + return true; + }); + }); + }; + + removeRedundantArcs([arc0, arc1, arc2, arc3]); + + // console.log(arc0, arc1, arc2, arc3); + // planar hacks for the two polar faces + const POLAR_FACES = [s2.cellid.fromFace(2), s2.cellid.fromFace(5)]; + if (POLAR_FACES.includes(cellid)) { + fixPolarFaces([arc0, arc1, arc2, arc3]); + } + const arcLines: FeatureCollection = { type: "FeatureCollection", features: [ @@ -128,23 +228,15 @@ const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { ], }; - fixAntimeridianCrossings(arcLines); - - // const poly = polygonize(arcLines).features[0]; - // poly.properties = { level: cell.level }; - // return poly; + // fixes; + if (!POLAR_FACES.includes(cellid)) { + wrapAntimeridianCrossings(arcLines); + } const coordinates = arcLines.features .map((f) => f.geometry.coordinates) .flat(1); - // const coordinates = [ - // ...arc0.features.map((f) => f.geometry.coordinates).flat(1), - // ...arc1.features.map((f) => f.geometry.coordinates).flat(1), - // ...arc2.features.map((f) => f.geometry.coordinates).flat(1), - // ...arc3.features.map((f) => f.geometry.coordinates).flat(1), - // ] as Position[]; - return { type: "Feature", geometry: { @@ -153,6 +245,7 @@ const getCellVisualization = (union: s2.CellUnion): FeatureCollection => { }, properties: { level: cell.level, + token: s2.cellid.toToken(cell.id), }, }; });