From 26bacf3a7d7960ba6f15923dd52eb6223a7f10c4 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 26 Sep 2024 15:49:03 -0300 Subject: [PATCH 01/36] Add GlobeMap view option to campaign maps --- gatsby-config.js | 4 +- package.json | 3 +- src/components/map/globe-map.js | 88 +++ src/components/timeline/timeline-chart.js | 30 +- yarn.lock | 902 +++++++++++++++++++++- 5 files changed, 1004 insertions(+), 23 deletions(-) create mode 100644 src/components/map/globe-map.js diff --git a/gatsby-config.js b/gatsby-config.js index 1f11c79d..0bd536a2 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -94,8 +94,8 @@ module.exports = { "child-src": "'self' blob:", "connect-src": process.env.NODE_ENV === "development" - ? "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com http://localhost:* ws://localhost:*" - : "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com https://admgstaging.nasa-impact.net/api/unpublished_drafts", + ? "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com http://localhost:* ws://localhost:* https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson" + : "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com https://admgstaging.nasa-impact.net/api/unpublished_drafts https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson", }, }, }, diff --git a/package.json b/package.json index b7235afc..8813a2b6 100644 --- a/package.json +++ b/package.json @@ -27,10 +27,11 @@ "@turf/area": "^6.5.0", "@turf/bbox": "^6.5.0", "@turf/boolean-disjoint": "^6.5.0", - "@turf/centroid": "^6.5.0", + "@turf/centroid": "^7.1.0", "@turf/envelope": "^6.5.0", "d3": "^7.3.0", "date-fns": "^2.28.0", + "deck.gl": "^9.0.30", "gatsby": "^5.13.7", "gatsby-plugin-csp": "^1.1.4", "gatsby-plugin-google-gtag": "5.13.1", diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js new file mode 100644 index 00000000..8eddb6ff --- /dev/null +++ b/src/components/map/globe-map.js @@ -0,0 +1,88 @@ +import React, { useEffect, useState, useMemo } from "react" +import { centroid } from "@turf/centroid" +import DeckGL from "@deck.gl/react" +import { + COORDINATE_SYSTEM, + _GlobeView as GlobeView, + FlyToInterpolator, +} from "@deck.gl/core" +import { GeoJsonLayer } from "@deck.gl/layers" +import { SimpleMeshLayer } from "@deck.gl/mesh-layers" +import { SphereGeometry } from "@luma.gl/engine" +import PropTypes from "prop-types" + +const INITIAL_VIEW_STATE = { + longitude: -98, + latitude: 40, + zoom: 0, +} + +export function GlobeMap({ geojson }) { + const [initialViewState, setInitialViewState] = useState(INITIAL_VIEW_STATE) + + useEffect(() => { + const dataCentroid = centroid(geojson) + const [lon, lat] = dataCentroid.geometry.coordinates + setInitialViewState({ + longitude: lon, + latitude: lat, + zoom: 1, + transitionInterpolator: new FlyToInterpolator({ speed: 1.5 }), + transitionDuration: "auto", + }) + }, [geojson]) + + const backgroundLayers = useMemo( + () => [ + new SimpleMeshLayer({ + id: "earth-sphere", + data: [0], + mesh: new SphereGeometry({ + radius: 6.3e6, + nlat: 18, + nlong: 36, + }), + coordinateSystem: COORDINATE_SYSTEM.CARTESIAN, + getPosition: [0, 0, 0], + getColor: [255, 255, 255], + }), + new GeoJsonLayer({ + id: "earth-land", + data: "https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson", + // Styles + stroked: false, + filled: true, + opacity: 0.1, + getFillColor: [18, 23, 33], + }), + ], + [] + ) + + const dataLayers = new GeoJsonLayer({ + id: "flight", + data: geojson, + // Styles + lineWidthMinPixels: 0.5, + getLineWidth: 1, + getLineColor: [255, 0, 0], + }) + + return ( +
+ +
+ ) +} + +GlobeMap.propTypes = { + geojson: PropTypes.object.required, +} diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 43709592..73a4a58f 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -13,6 +13,8 @@ import { Disclosure } from "@reach/disclosure" import { DeploymentPanel } from "./deployment-panel" import { DeploymentMap } from "./map" import { replaceSlashes } from "../../utils/helpers" +import { GlobeMap } from "../map/globe-map" +import Button from "../button" const chartSettings = { marginTop: 1, @@ -86,6 +88,7 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { const [count, setCount] = useState(1) const [priority, setPriority] = useState({}) const [geojson, setGeojson] = useState({}) + const [enable3DView, setEnable3DView] = useState(false) const [tooltip, setTooltip] = useState({ x: null, y: null }) const [tooltipContent, setTooltipContent] = useState(null) @@ -146,12 +149,27 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { return ( {geojson?.features?.length && ( - + <> + {enable3DView ? ( + + ) : ( + + )} +
+ +
+ )}
Date: Thu, 26 Sep 2024 16:11:16 -0300 Subject: [PATCH 02/36] Lint code --- src/components/map/globe-map.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 8eddb6ff..3a88b8ae 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -10,6 +10,7 @@ import { GeoJsonLayer } from "@deck.gl/layers" import { SimpleMeshLayer } from "@deck.gl/mesh-layers" import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" +import styled from "styled-components" const INITIAL_VIEW_STATE = { longitude: -98, @@ -69,7 +70,7 @@ export function GlobeMap({ geojson }) { }) return ( -
+ -
+ ) } GlobeMap.propTypes = { geojson: PropTypes.object.required, } + +const MapContainer = styled.div` + position: relative; + display: block; + height: 500px; + width: 100%; + overflow: hidden; + background: #111; +` From ba521b4fcfe58e9535bd29940abd47df34d80e78 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Fri, 27 Sep 2024 10:24:20 -0300 Subject: [PATCH 03/36] Add Mapbox tiles to GlobeView map --- gatsby-config.js | 4 +-- src/components/map/globe-map.js | 39 ++++++++++++++++------- src/components/timeline/map.js | 4 ++- src/components/timeline/timeline-chart.js | 4 ++- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/gatsby-config.js b/gatsby-config.js index 0bd536a2..1f11c79d 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -94,8 +94,8 @@ module.exports = { "child-src": "'self' blob:", "connect-src": process.env.NODE_ENV === "development" - ? "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com http://localhost:* ws://localhost:* https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson" - : "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com https://admgstaging.nasa-impact.net/api/unpublished_drafts https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson", + ? "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com http://localhost:* ws://localhost:*" + : "'self' https://admg.nasa-impact.net https://www.google-analytics.com https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com https://admgstaging.nasa-impact.net/api/unpublished_drafts", }, }, }, diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 3a88b8ae..024afa2a 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -6,7 +6,8 @@ import { _GlobeView as GlobeView, FlyToInterpolator, } from "@deck.gl/core" -import { GeoJsonLayer } from "@deck.gl/layers" +import { GeoJsonLayer, BitmapLayer } from "@deck.gl/layers" +import { TileLayer } from "@deck.gl/geo-layers" import { SimpleMeshLayer } from "@deck.gl/mesh-layers" import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" @@ -17,8 +18,9 @@ const INITIAL_VIEW_STATE = { latitude: 40, zoom: 0, } +const MAPBOX_TOKEN = process.env.GATSBY_MAPBOX_TOKEN -export function GlobeMap({ geojson }) { +export function GlobeMap({ geojson, mapStyleID }) { const [initialViewState, setInitialViewState] = useState(INITIAL_VIEW_STATE) useEffect(() => { @@ -45,16 +47,30 @@ export function GlobeMap({ geojson }) { }), coordinateSystem: COORDINATE_SYSTEM.CARTESIAN, getPosition: [0, 0, 0], - getColor: [255, 255, 255], + getColor: [18, 42, 70, 255], }), - new GeoJsonLayer({ - id: "earth-land", - data: "https://d2ad6b4ur7yvpq.cloudfront.net/naturalearth-3.3.0/ne_50m_land.geojson", - // Styles - stroked: false, - filled: true, - opacity: 0.1, - getFillColor: [18, 23, 33], + new TileLayer({ + id: "TileLayer", + data: `https://api.mapbox.com/styles/v1/${mapStyleID}/tiles/256/{z}/{x}/{y}@2x?access_token=${MAPBOX_TOKEN}`, + maxZoom: 22, + minZoom: 0, + tileSize: 256, + + renderSubLayers: props => { + // eslint-disable-next-line react/prop-types + const { boundingBox } = props.tile + return new BitmapLayer(props, { + data: null, + // eslint-disable-next-line react/prop-types + image: props.data, + bounds: [ + boundingBox[0][0], + boundingBox[0][1], + boundingBox[1][0], + boundingBox[1][1], + ], + }) + }, }), ], [] @@ -86,6 +102,7 @@ export function GlobeMap({ geojson }) { GlobeMap.propTypes = { geojson: PropTypes.object.required, + mapStyleID: PropTypes.string.required, } const MapContainer = styled.div` diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index a93a27d5..64be7c2b 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -26,6 +26,7 @@ export function DeploymentMap({ deployments, bounds, selectedDeployment, + mapStyleID, }) { const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) @@ -64,7 +65,7 @@ export function DeploymentMap({ return ( {geojson && ( @@ -194,6 +195,7 @@ DeploymentMap.propTypes = { deployments: PropTypes.array, bounds: PropTypes.array, selectedDeployment: PropTypes.object, + mapStyleID: PropTypes.string.isRequired, } const DeploymentLayer = ({ diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 73a4a58f..d634b7a3 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -42,6 +42,7 @@ export const Swatch = styled.div` export const TimelineChart = ({ deployments, bounds, campaignName }) => { const [containerRef, dms] = useChartDimensions(chartSettings) + const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" const minDateString = d3 .min( @@ -151,13 +152,14 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { {geojson?.features?.length && ( <> {enable3DView ? ( - + ) : ( )}
From 02f1400b6df49a57195beebc15bb995bf75abcd6 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Fri, 27 Sep 2024 16:27:09 -0300 Subject: [PATCH 04/36] Improve GlobeMap rendering and set flight colors based on the platform name --- src/components/map/globe-map.js | 28 ++++++++++++++++----- src/components/timeline/timeline-chart.js | 6 ++++- src/utils/__tests__/platform-colors.test.js | 13 ++++++++++ src/utils/platform-colors.js | 10 ++++++++ 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 024afa2a..267c3e40 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -12,6 +12,8 @@ import { SimpleMeshLayer } from "@deck.gl/mesh-layers" import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" import styled from "styled-components" +import { getUniquePlatforms } from "../../utils/get-unique-platforms" +import { getLineColorToDeckGL } from "../../utils/platform-colors" const INITIAL_VIEW_STATE = { longitude: -98, @@ -20,8 +22,16 @@ const INITIAL_VIEW_STATE = { } const MAPBOX_TOKEN = process.env.GATSBY_MAPBOX_TOKEN -export function GlobeMap({ geojson, mapStyleID }) { +export function GlobeMap({ geojson, deployments, mapStyleID }) { const [initialViewState, setInitialViewState] = useState(INITIAL_VIEW_STATE) + const platforms = getUniquePlatforms( + deployments.flatMap(d => d.collectionPeriods) + ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) + const movingPlatforms = platforms + .filter(platform => + ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) + ) + .map(platform => platform.name) useEffect(() => { const dataCentroid = centroid(geojson) @@ -47,15 +57,15 @@ export function GlobeMap({ geojson, mapStyleID }) { }), coordinateSystem: COORDINATE_SYSTEM.CARTESIAN, getPosition: [0, 0, 0], - getColor: [18, 42, 70, 255], + getColor: [42, 98, 163, 125], }), new TileLayer({ id: "TileLayer", data: `https://api.mapbox.com/styles/v1/${mapStyleID}/tiles/256/{z}/{x}/{y}@2x?access_token=${MAPBOX_TOKEN}`, maxZoom: 22, minZoom: 0, + zoomOffset: 1, tileSize: 256, - renderSubLayers: props => { // eslint-disable-next-line react/prop-types const { boundingBox } = props.tile @@ -79,10 +89,14 @@ export function GlobeMap({ geojson, mapStyleID }) { const dataLayers = new GeoJsonLayer({ id: "flight", data: geojson, + pointType: "circle", // Styles lineWidthMinPixels: 0.5, getLineWidth: 1, - getLineColor: [255, 0, 0], + getLineColor: f => + getLineColorToDeckGL(movingPlatforms.indexOf(f.properties.platform_name)), + getFillColor: [160, 160, 180, 200], + getPointRadius: 4, }) return ( @@ -93,6 +107,7 @@ export function GlobeMap({ geojson, mapStyleID }) { controller: { keyboard: false, inertia: true }, }) } + parameters={{ cull: true }} initialViewState={initialViewState} layers={[backgroundLayers, dataLayers]} > @@ -101,8 +116,9 @@ export function GlobeMap({ geojson, mapStyleID }) { } GlobeMap.propTypes = { - geojson: PropTypes.object.required, - mapStyleID: PropTypes.string.required, + geojson: PropTypes.object, + deployments: PropTypes.array, + mapStyleID: PropTypes.string, } const MapContainer = styled.div` diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index d634b7a3..bf0e7a49 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -152,7 +152,11 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { {geojson?.features?.length && ( <> {enable3DView ? ( - + ) : ( { expect(getStaticIcons()).toEqual(result) }) }) + +describe("getLineColorsToDeckGL", () => { + it("returns the color in RGB format", () => { + const platforms = ["DC-8", "ER-2", "GH", "Learjet"] + expect(getLineColorToDeckGL(platforms.indexOf("DC-8"))).toEqual([ + 178, 223, 138, + ]) + expect(getLineColorToDeckGL(platforms.indexOf("GH"))).toEqual([ + 253, 191, 111, + ]) + }) +}) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index 2c2929fa..086389ea 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -78,6 +78,16 @@ export const STATIC_PLATFORMS = [ export const flightPathColors = platforms => platforms.map((i, index) => [i, MOVING_PLATFORMS_COLORS[index]]) +const hex2rgb = hex => hex.match(/[0-9a-f]{2}/g).map(x => parseInt(x, 16)) + +export const getLineColorToDeckGL = index => { + if (index === -1) return hex2rgb(FALLBACK_COLOR) + const color = MOVING_PLATFORMS_COLORS[index] + // converts from HEX to RGB + console.log(hex2rgb) + return hex2rgb(color) +} + export const getLineColors = platforms => { const colors = flightPathColors(platforms) return [ From 228a70fbd9d56f6838de4826a7e70cddb8ad3ee9 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Fri, 27 Sep 2024 16:39:54 -0300 Subject: [PATCH 05/36] Solve conflicts from develop --- package.json | 8 +- yarn.lock | 216 +++++++++++++++++++++------------------------------ 2 files changed, 92 insertions(+), 132 deletions(-) diff --git a/package.json b/package.json index 8813a2b6..61b8a04f 100644 --- a/package.json +++ b/package.json @@ -24,11 +24,11 @@ "@reach/listbox": "^0.18.0", "@reach/menu-button": "^0.18.0", "@reach/visually-hidden": "^0.18.0", - "@turf/area": "^6.5.0", - "@turf/bbox": "^6.5.0", - "@turf/boolean-disjoint": "^6.5.0", + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/boolean-disjoint": "^7.1.0", "@turf/centroid": "^7.1.0", - "@turf/envelope": "^6.5.0", + "@turf/envelope": "^7.1.0", "d3": "^7.3.0", "date-fns": "^2.28.0", "deck.gl": "^9.0.30", diff --git a/yarn.lock b/yarn.lock index fcba1c57..931ca377 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3398,37 +3398,34 @@ resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== -"@turf/area@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/area/-/area-6.5.0.tgz#1d0d7aee01d8a4a3d4c91663ed35cc615f36ad56" - integrity sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/meta" "^6.5.0" - -"@turf/bbox-polygon@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/bbox-polygon/-/bbox-polygon-6.5.0.tgz#f18128b012eedfa860a521d8f2b3779cc0801032" - integrity sha512-+/r0NyL1lOG3zKZmmf6L8ommU07HliP4dgYToMoTxqzsWzyLjaj/OzgQ8rBmv703WJX+aS6yCmLuIhYqyufyuw== +"@turf/area@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/area/-/area-7.1.0.tgz#c8b506cfa9f8b06570c090c9cf915fa080ae7b66" + integrity sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g== dependencies: - "@turf/helpers" "^6.5.0" + "@turf/helpers" "^7.1.0" + "@turf/meta" "^7.1.0" + "@types/geojson" "^7946.0.10" + tslib "^2.6.2" -"@turf/bbox@*": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-7.0.0.tgz#1f892bb71f429aaa1d746c92d901567d5667f9b2" - integrity sha512-IyXG5HAsn6IZLdAtQo7aWYccjU5WsV+uzIzhGaXrh/qTVylSYmRiWgLdiekHZVED9nv9r7D/EJUMOT4zyA6POA== +"@turf/bbox-polygon@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/bbox-polygon/-/bbox-polygon-7.1.0.tgz#5034eefcae4e497f72763220c191cc2b436649fa" + integrity sha512-fvZB09ErCZOVlWVDop836hmpKaGUmfXnR9naMhS73A/8nn4M3hELbQtMv2R8gXj7UakXCuxS/i9erdpDFZ2O+g== dependencies: - "@turf/helpers" "^7.0.0" - "@turf/meta" "^7.0.0" + "@turf/helpers" "^7.1.0" + "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/bbox@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-6.5.0.tgz#bec30a744019eae420dac9ea46fb75caa44d8dc5" - integrity sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw== +"@turf/bbox@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/bbox/-/bbox-7.1.0.tgz#45a9287c084f7b79577ee88b7b539d83562b923b" + integrity sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA== dependencies: - "@turf/helpers" "^6.5.0" - "@turf/meta" "^6.5.0" + "@turf/helpers" "^7.1.0" + "@turf/meta" "^7.1.0" + "@types/geojson" "^7946.0.10" + tslib "^2.6.2" "@turf/boolean-clockwise@^5.1.5": version "5.1.5" @@ -3438,24 +3435,29 @@ "@turf/helpers" "^5.1.5" "@turf/invariant" "^5.1.5" -"@turf/boolean-disjoint@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/boolean-disjoint/-/boolean-disjoint-6.5.0.tgz#e291d8f8f8cce7f7bb3c11e23059156a49afc5e4" - integrity sha512-rZ2ozlrRLIAGo2bjQ/ZUu4oZ/+ZjGvLkN5CKXSKBcu6xFO6k2bgqeM8a1836tAW+Pqp/ZFsTA5fZHsJZvP2D5g== +"@turf/boolean-disjoint@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/boolean-disjoint/-/boolean-disjoint-7.1.0.tgz#2ed06023f369ffc2bccfec463be13d7db2193acf" + integrity sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw== dependencies: - "@turf/boolean-point-in-polygon" "^6.5.0" - "@turf/helpers" "^6.5.0" - "@turf/line-intersect" "^6.5.0" - "@turf/meta" "^6.5.0" - "@turf/polygon-to-line" "^6.5.0" + "@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" -"@turf/boolean-point-in-polygon@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz#6d2e9c89de4cd2e4365004c1e51490b7795a63cf" - integrity sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A== +"@turf/boolean-point-in-polygon@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.1.0.tgz#dec07b467d74b4409eb03acc60b874958f71b49a" + integrity sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew== dependencies: - "@turf/helpers" "^6.5.0" - "@turf/invariant" "^6.5.0" + "@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" "@turf/centroid@^7.1.0": version "7.1.0" @@ -3474,33 +3476,22 @@ dependencies: "@turf/helpers" "^5.1.5" -"@turf/envelope@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/envelope/-/envelope-6.5.0.tgz#73e81b9b7ed519bd8a614d36322d6f9fbeeb0579" - integrity sha512-9Z+FnBWvOGOU4X+fMZxYFs1HjFlkKqsddLuMknRaqcJd6t+NIv5DWvPtDL8ATD2GEExYDiFLwMdckfr1yqJgHA== +"@turf/envelope@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/envelope/-/envelope-7.1.0.tgz#0c50c62a643eab6329d971898d49c7ef1409cbc3" + integrity sha512-WeLQse9wuxsxhzSqrJA6Ha7rLWnLKgdKY9cfxmJKHSpgqcJyNk60m7+T3UpI/nkGwpfbpeyB3EGC1EWPbxiDUg== dependencies: - "@turf/bbox" "^6.5.0" - "@turf/bbox-polygon" "^6.5.0" - "@turf/helpers" "^6.5.0" - -"@turf/helpers@6.x", "@turf/helpers@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-6.5.0.tgz#f79af094bd6b8ce7ed2bd3e089a8493ee6cae82e" - integrity sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw== + "@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" "@turf/helpers@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-5.1.5.tgz#153405227ab933d004a5bb9641a9ed999fcbe0cf" integrity sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw== -"@turf/helpers@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-7.0.0.tgz#22dc2335e8b82db2a21b8c873ea10b3fb3dc5158" - integrity sha512-vwZvxRuyjGpGXvhXSbT9mX6FK92dBMLWbMbDJ/MXQUPx17ReVPFc+6N6IcxAzZfkiCnqy7vpuq0c+/TTrQxIiA== - dependencies: - deep-equal "^2.2.3" - tslib "^2.6.2" - "@turf/helpers@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-7.1.0.tgz#eb734e291c9c205822acdd289fe20e91c3cb1641" @@ -3516,39 +3507,24 @@ dependencies: "@turf/helpers" "^5.1.5" -"@turf/invariant@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-6.5.0.tgz#970afc988023e39c7ccab2341bd06979ddc7463f" - integrity sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg== - dependencies: - "@turf/helpers" "^6.5.0" - -"@turf/line-intersect@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-6.5.0.tgz#dea48348b30c093715d2195d2dd7524aee4cf020" - integrity sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA== - dependencies: - "@turf/helpers" "^6.5.0" - "@turf/invariant" "^6.5.0" - "@turf/line-segment" "^6.5.0" - "@turf/meta" "^6.5.0" - geojson-rbush "3.x" - -"@turf/line-segment@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/line-segment/-/line-segment-6.5.0.tgz#ee73f3ffcb7c956203b64ed966d96af380a4dd65" - integrity sha512-jI625Ho4jSuJESNq66Mmi290ZJ5pPZiQZruPVpmHkUw257Pew0alMmb6YrqYNnLUuiVVONxAAKXUVeeUGtycfw== +"@turf/invariant@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-7.1.0.tgz#c90cffa093291316b597212396d68bf9e465cf2e" + integrity sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q== dependencies: - "@turf/helpers" "^6.5.0" - "@turf/invariant" "^6.5.0" - "@turf/meta" "^6.5.0" + "@turf/helpers" "^7.1.0" + "@types/geojson" "^7946.0.10" + tslib "^2.6.2" -"@turf/meta@6.x", "@turf/meta@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-6.5.0.tgz#b725c3653c9f432133eaa04d3421f7e51e0418ca" - integrity sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA== +"@turf/line-intersect@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/line-intersect/-/line-intersect-7.1.0.tgz#60c46a62143e42d6663be93f893de1cfac584cf9" + integrity sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg== dependencies: - "@turf/helpers" "^6.5.0" + "@turf/helpers" "^7.1.0" + "@types/geojson" "^7946.0.10" + sweepline-intersections "^1.5.0" + tslib "^2.6.2" "@turf/meta@^5.1.5": version "5.2.0" @@ -3557,13 +3533,6 @@ dependencies: "@turf/helpers" "^5.1.5" -"@turf/meta@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-7.0.0.tgz#85f91ad874cccd2c2c3d361917e200912597c11b" - integrity sha512-cEXr13uFwhXq5mFBy0IK1U/QepE5qgk3zXpBYsla3lYV7cB83Vh+NNUR+r0/w/QoJqest1TG4H20F9tGYWPi/g== - dependencies: - "@turf/helpers" "^7.0.0" - "@turf/meta@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-7.1.0.tgz#b2af85afddd0ef08aeae8694a12370a4f06b6d13" @@ -3572,13 +3541,15 @@ "@turf/helpers" "^7.1.0" "@types/geojson" "^7946.0.10" -"@turf/polygon-to-line@^6.5.0": - version "6.5.0" - resolved "https://registry.yarnpkg.com/@turf/polygon-to-line/-/polygon-to-line-6.5.0.tgz#4dc86db66168b32bb83ce448cf966208a447d952" - integrity sha512-5p4n/ij97EIttAq+ewSnKt0ruvuM+LIDzuczSzuHTpq4oS7Oq8yqg5TQ4nzMVuK41r/tALCk7nAoBuw3Su4Gcw== +"@turf/polygon-to-line@^7.1.0": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@turf/polygon-to-line/-/polygon-to-line-7.1.0.tgz#fcacd153ab481dec27d821889758452642f09288" + integrity sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA== dependencies: - "@turf/helpers" "^6.5.0" - "@turf/invariant" "^6.5.0" + "@turf/helpers" "^7.1.0" + "@turf/invariant" "^7.1.0" + "@types/geojson" "^7946.0.10" + tslib "^2.6.2" "@turf/rewind@^5.1.5": version "5.1.5" @@ -3736,11 +3707,6 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/geojson@7946.0.8": - version "7946.0.8" - resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.8.tgz#30744afdb385e2945e22f3b033f897f76b1f12ca" - integrity sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA== - "@types/geojson@^7946.0.10", "@types/geojson@^7946.0.7", "@types/geojson@^7946.0.8": version "7946.0.14" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" @@ -6480,7 +6446,7 @@ dedent@^1.0.0: resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" integrity sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ== -deep-equal@^2.0.5, deep-equal@^2.2.3: +deep-equal@^2.0.5: version "2.2.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== @@ -8633,17 +8599,6 @@ geojson-flatten@^1.0.4: resolved "https://registry.yarnpkg.com/geojson-flatten/-/geojson-flatten-1.1.1.tgz#601aae07ba6406281ebca683573dcda69eba04c7" integrity sha512-k/6BCd0qAt7vdqdM1LkLfAy72EsLDy0laNwX0x2h49vfYCiQkRc4PSra8DNEdJ10EKRpwEvDXMb0dBknTJuWpQ== -geojson-rbush@3.x: - version "3.2.0" - resolved "https://registry.yarnpkg.com/geojson-rbush/-/geojson-rbush-3.2.0.tgz#8b543cf0d56f99b78faf1da52bb66acad6dfc290" - integrity sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w== - dependencies: - "@turf/bbox" "*" - "@turf/helpers" "6.x" - "@turf/meta" "6.x" - "@types/geojson" "7946.0.8" - rbush "^3.0.1" - geojson-vt@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/geojson-vt/-/geojson-vt-3.2.1.tgz#f8adb614d2c1d3f6ee7c4265cad4bbf3ad60c8b7" @@ -11770,6 +11725,11 @@ playwright@1.31.2: dependencies: playwright-core "1.31.2" +point-in-polygon-hao@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/point-in-polygon-hao/-/point-in-polygon-hao-1.1.0.tgz#37f5f4fbe14e89fa8a3bb7f67c9158079d2ede7c" + integrity sha512-3hTIM2j/v9Lio+wOyur3kckD4NxruZhpowUbEgmyikW+a2Kppjtu1eN+AhnMQtoHW46zld88JiYWv6fxpsDrTQ== + possible-typed-array-names@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz#89bb63c6fada2c3e90adc4a647beeeb39cc7bf8f" @@ -12379,13 +12339,6 @@ raw-loader@^4.0.2: loader-utils "^2.0.0" schema-utils "^3.0.0" -rbush@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" - integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== - dependencies: - quickselect "^2.0.0" - rc@1.2.8, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -13785,6 +13738,13 @@ swap-case@^2.0.2: dependencies: tslib "^2.0.3" +sweepline-intersections@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz#85ab3629a291875926fae0acd508496430d8a647" + integrity sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ== + dependencies: + tinyqueue "^2.0.0" + symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -13935,7 +13895,7 @@ tiny-invariant@^1.2.0: resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.3.3.tgz#46680b7a873a0d5d10005995eb90a70d74d60127" integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== -tinyqueue@^2.0.3: +tinyqueue@^2.0.0, tinyqueue@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/tinyqueue/-/tinyqueue-2.0.3.tgz#64d8492ebf39e7801d7bd34062e29b45b2035f08" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== From b973320bc5f8de2ef795d2af3f1d294ec2bc4cab Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 3 Oct 2024 16:35:20 -0300 Subject: [PATCH 06/36] Try to add static location icons --- src/components/map/globe-map.js | 85 +++++--- src/components/timeline/map.js | 216 ++++++++++---------- src/utils/__tests__/platform-colors.test.js | 20 +- src/utils/platform-colors.js | 6 +- 4 files changed, 186 insertions(+), 141 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 267c3e40..e882fe2c 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -6,14 +6,14 @@ import { _GlobeView as GlobeView, FlyToInterpolator, } from "@deck.gl/core" -import { GeoJsonLayer, BitmapLayer } from "@deck.gl/layers" +import { GeoJsonLayer, BitmapLayer, IconLayer } from "@deck.gl/layers" import { TileLayer } from "@deck.gl/geo-layers" import { SimpleMeshLayer } from "@deck.gl/mesh-layers" import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" import styled from "styled-components" import { getUniquePlatforms } from "../../utils/get-unique-platforms" -import { getLineColorToDeckGL } from "../../utils/platform-colors" +import { getLineColorAsRGB, getPlatformIcon } from "../../utils/platform-colors" const INITIAL_VIEW_STATE = { longitude: -98, @@ -24,6 +24,7 @@ const MAPBOX_TOKEN = process.env.GATSBY_MAPBOX_TOKEN export function GlobeMap({ geojson, deployments, mapStyleID }) { const [initialViewState, setInitialViewState] = useState(INITIAL_VIEW_STATE) + const [iconMapping, setIconMapping] = useState({}) const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) @@ -33,6 +34,27 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { ) .map(platform => platform.name) + useEffect(() => { + const fetchData = async () => { + try { + const response = await fetch( + `https://api.mapbox.com/styles/v1/${mapStyleID}/48lhibiqllsww17zqo5nw6pga/sprite@2x.json?access_token=${MAPBOX_TOKEN}`, + { + method: "GET", + headers: { + "Content-Type": "application/json", + }, + } + ) + const mapping = await response.json() + setIconMapping(mapping) + } catch (error) { + console.log("catch error", error) + } + } + fetchData() + }, []) + useEffect(() => { const dataCentroid = centroid(geojson) const [lon, lat] = dataCentroid.geometry.coordinates @@ -86,33 +108,48 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { [] ) - const dataLayers = new GeoJsonLayer({ - id: "flight", - data: geojson, - pointType: "circle", - // Styles + const flights = new GeoJsonLayer({ + id: "flights", + data: { + ...geojson, + features: geojson.features.filter(f => f.geometry.type !== "Point"), + }, lineWidthMinPixels: 0.5, getLineWidth: 1, getLineColor: f => - getLineColorToDeckGL(movingPlatforms.indexOf(f.properties.platform_name)), - getFillColor: [160, 160, 180, 200], - getPointRadius: 4, + getLineColorAsRGB(movingPlatforms.indexOf(f.properties.platform_name)), }) - return ( - - - - ) + const staticLocations = new IconLayer({ + id: "static-platforms", + data: geojson.features.filter(f => f.geometry.type === "Point"), + pickable: true, + iconAtlas: `https://api.mapbox.com/styles/v1/${mapStyleID}/sprite@2x.png?access_token=${MAPBOX_TOKEN}`, + iconMapping: iconMapping, + getIcon: f => { + return getPlatformIcon(f.properties.platform_name) + }, + getPosition: f => f.geometry.coordinates, + getSize: 20, + sizeScale: 15, + }) + + if (iconMapping && geojson) { + return ( + + + + ) + } } GlobeMap.propTypes = { diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index 64be7c2b..945e340b 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -68,117 +68,115 @@ export function DeploymentMap({ basemap={`mapbox://styles/${mapStyleID}`} showControls={true} > - {geojson && ( - + - map.fitBounds(bounds, { padding: 50 })} - selectedPlatforms={selectedPlatforms} - selectedDeployment={ - selectedDeployment - ? replaceSlashes(selectedDeployment.longname) - : "" - } - /> - - - - )} + onLoad={map => map.fitBounds(bounds, { padding: 50 })} + selectedPlatforms={selectedPlatforms} + selectedDeployment={ + selectedDeployment + ? replaceSlashes(selectedDeployment.longname) + : "" + } + /> + + + { }) }) -describe("getLineColorsToDeckGL", () => { +describe("getLineColorAsRGB", () => { it("returns the color in RGB format", () => { const platforms = ["DC-8", "ER-2", "GH", "Learjet"] - expect(getLineColorToDeckGL(platforms.indexOf("DC-8"))).toEqual([ + expect(getLineColorAsRGB(platforms.indexOf("DC-8"))).toEqual([ 178, 223, 138, ]) - expect(getLineColorToDeckGL(platforms.indexOf("GH"))).toEqual([ - 253, 191, 111, - ]) + expect(getLineColorAsRGB(platforms.indexOf("GH"))).toEqual([253, 191, 111]) + }) +}) + +describe("getPlatformIcon", () => { + it("returns the icon id for a platform", () => { + expect(getPlatformIcon("Vehicle")).toEqual("VehicleIcon") + expect(getPlatformIcon("Permanent Land Site")).toEqual( + "PermanentLandSiteIcon" + ) }) }) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index 086389ea..62bbbc20 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -80,11 +80,10 @@ export const flightPathColors = platforms => const hex2rgb = hex => hex.match(/[0-9a-f]{2}/g).map(x => parseInt(x, 16)) -export const getLineColorToDeckGL = index => { +export const getLineColorAsRGB = index => { if (index === -1) return hex2rgb(FALLBACK_COLOR) const color = MOVING_PLATFORMS_COLORS[index] // converts from HEX to RGB - console.log(hex2rgb) return hex2rgb(color) } @@ -117,3 +116,6 @@ export const getIconColors = () => { "#fff", // fallback color ] } + +export const getPlatformIcon = platformName => + STATIC_PLATFORMS.find(i => i.name === platformName).mapIcon From 16a16e555cf8085a4bd74c814a032b25c93a9708 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 4 Oct 2024 16:33:40 -0400 Subject: [PATCH 07/36] Update globemap to view staticicons --- src/components/map/globe-map.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index e882fe2c..2fcf7c57 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -130,8 +130,7 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { return getPlatformIcon(f.properties.platform_name) }, getPosition: f => f.geometry.coordinates, - getSize: 20, - sizeScale: 15, + getSize: 12, }) if (iconMapping && geojson) { @@ -143,7 +142,6 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { controller: { keyboard: false, inertia: true }, }) } - parameters={{ cull: true }} initialViewState={initialViewState} layers={[backgroundLayers, flights, staticLocations]} > From ea5bc028292ef43b112747f1a65112acc3719123 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Wed, 16 Oct 2024 16:01:31 +0530 Subject: [PATCH 08/36] Add legend to GlobeMap and move MapLegend component to a new file --- src/components/map/globe-map.js | 40 +- .../{map.test.js => map-legend.test.js} | 2 +- src/components/timeline/map-legend.js | 272 +++++++++++++ src/components/timeline/map.js | 361 ++++-------------- src/components/timeline/timeline-chart.js | 36 +- src/utils/__tests__/platform-colors.test.js | 70 ++++ src/utils/platform-colors.js | 13 + 7 files changed, 477 insertions(+), 317 deletions(-) rename src/components/timeline/__tests__/{map.test.js => map-legend.test.js} (98%) create mode 100644 src/components/timeline/map-legend.js diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 2fcf7c57..af31216f 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -13,7 +13,11 @@ import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" import styled from "styled-components" import { getUniquePlatforms } from "../../utils/get-unique-platforms" -import { getLineColorAsRGB, getPlatformIcon } from "../../utils/platform-colors" +import { + getLineColorAsRGB, + getPlatformIcon, + isPlatformVisible, +} from "../../utils/platform-colors" const INITIAL_VIEW_STATE = { longitude: -98, @@ -22,7 +26,14 @@ const INITIAL_VIEW_STATE = { } const MAPBOX_TOKEN = process.env.GATSBY_MAPBOX_TOKEN -export function GlobeMap({ geojson, deployments, mapStyleID }) { +export function GlobeMap({ + geojson, + deployments, + selectedPlatforms, + selectedDeployment, + mapStyleID, + children, +}) { const [initialViewState, setInitialViewState] = useState(INITIAL_VIEW_STATE) const [iconMapping, setIconMapping] = useState({}) const platforms = getUniquePlatforms( @@ -112,7 +123,15 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { id: "flights", data: { ...geojson, - features: geojson.features.filter(f => f.geometry.type !== "Point"), + features: geojson.features + .filter(f => f.geometry.type !== "Point") + .filter(f => + isPlatformVisible({ + platformProperties: f.properties, + selectedDeployment, + selectedPlatforms, + }) + ), }, lineWidthMinPixels: 0.5, getLineWidth: 1, @@ -126,9 +145,14 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { pickable: true, iconAtlas: `https://api.mapbox.com/styles/v1/${mapStyleID}/sprite@2x.png?access_token=${MAPBOX_TOKEN}`, iconMapping: iconMapping, - getIcon: f => { - return getPlatformIcon(f.properties.platform_name) - }, + getIcon: f => + isPlatformVisible({ + platformProperties: f.properties, + selectedDeployment, + selectedPlatforms, + }) + ? getPlatformIcon(f.properties.platform_name) + : null, getPosition: f => f.geometry.coordinates, getSize: 12, }) @@ -145,6 +169,7 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { initialViewState={initialViewState} layers={[backgroundLayers, flights, staticLocations]} > + {children} ) } @@ -153,7 +178,10 @@ export function GlobeMap({ geojson, deployments, mapStyleID }) { GlobeMap.propTypes = { geojson: PropTypes.object, deployments: PropTypes.array, + selectedDeployment: PropTypes.array, + selectedPlatforms: PropTypes.array, mapStyleID: PropTypes.string, + children: PropTypes.node, } const MapContainer = styled.div` diff --git a/src/components/timeline/__tests__/map.test.js b/src/components/timeline/__tests__/map-legend.test.js similarity index 98% rename from src/components/timeline/__tests__/map.test.js rename to src/components/timeline/__tests__/map-legend.test.js index 8e2c4357..cb51c5a3 100644 --- a/src/components/timeline/__tests__/map.test.js +++ b/src/components/timeline/__tests__/map-legend.test.js @@ -1,7 +1,7 @@ import React from "react" import renderer, { act } from "react-test-renderer" -import { MapLegend, PlatformStatus } from "../map" +import { MapLegend, PlatformStatus } from "../map-legend" import { LineIcon } from "../../../icons" import { BalloonIcon, diff --git a/src/components/timeline/map-legend.js b/src/components/timeline/map-legend.js new file mode 100644 index 00000000..55f65d21 --- /dev/null +++ b/src/components/timeline/map-legend.js @@ -0,0 +1,272 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "styled-components" +import { Tooltip } from "react-tooltip" + +import { LineIcon } from "../../icons" +import { colors } from "../../theme" +import { usePlatformStatus } from "../../utils/use-platform-status" +import { + FALLBACK_COLOR, + MOVING_PLATFORMS_COLORS, + STATIC_PLATFORMS, +} from "../../utils/platform-colors" + +export const LegendItem = ({ + name, + type, + color, + icon, + checked, + disabled, + onClick, + activeDeploymentPlatforms, + platformsWithData, +}) => ( +
+ onClick()} + /> + + {type === "moving" ? ( + + ) : ( + {icon} + )} + {name} + + +
+) + +LegendItem.propTypes = { + name: PropTypes.string, + type: PropTypes.string, + color: PropTypes.string, + icon: PropTypes.node, + checked: PropTypes.bool, + disabled: PropTypes.bool, + platformsWithData: PropTypes.array, + activeDeploymentPlatforms: PropTypes.array, + onClick: PropTypes.func, +} + +export const MapLegend = ({ + platforms = [], + platformsWithData = [], + activeDeploymentPlatforms = [], + setSelectedPlatforms, + selectedPlatforms, +}) => { + const names = platforms.map(i => i.name) + const uniquePlatforms = platforms.filter( + (i, index) => names.indexOf(i.name) === index + ) + const movingPlatforms = uniquePlatforms.filter(platform => + ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) + ) + const staticPlatforms = uniquePlatforms.filter( + platform => !["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) + ) + + return ( + +
+ Platforms + {movingPlatforms.length > 0 &&

Moving

} + {movingPlatforms.map((platform, index) => ( + + selectedPlatforms.includes(platform.name) + ? setSelectedPlatforms( + selectedPlatforms.filter(i => i !== platform.name) + ) + : setSelectedPlatforms([...selectedPlatforms, platform.name]) + } + activeDeploymentPlatforms={activeDeploymentPlatforms} + platformsWithData={platformsWithData} + /> + ))} + {staticPlatforms.length > 0 &&

Stationary

} + {staticPlatforms.map(platform => ( + i.name === platform.name)?.color} + icon={STATIC_PLATFORMS?.find(i => i.name === platform.name)?.icon} + checked={selectedPlatforms.includes(platform.name)} + disabled={ + (selectedPlatforms.length === 1 && + selectedPlatforms.includes(platform.name)) || + !platformsWithData.includes(platform.name) + } + onClick={() => + selectedPlatforms.includes(platform.name) + ? setSelectedPlatforms( + selectedPlatforms.filter(i => i !== platform.name) + ) + : setSelectedPlatforms([...selectedPlatforms, platform.name]) + } + activeDeploymentPlatforms={activeDeploymentPlatforms} + platformsWithData={platformsWithData} + /> + ))} +
+
+ ) +} + +MapLegend.propTypes = { + platforms: PropTypes.array, + platformsWithData: PropTypes.array, + activeDeploymentPlatforms: PropTypes.array, + setSelectedPlatforms: PropTypes.func, + selectedPlatforms: PropTypes.array, +} + +export const PlatformStatus = ({ + platformName, + platformsWithData, + activeDeploymentPlatforms, +}) => { + const status = usePlatformStatus( + platformName, + platformsWithData, + activeDeploymentPlatforms + ) + + if (status !== "operational") { + return ( + + + {status === "notShown" ? "(Not Shown)" : "(Not Operating)"} + + + + ) + } + return <> +} + +PlatformStatus.propTypes = { + platformName: PropTypes.string, + platformsWithData: PropTypes.array, + activeDeploymentPlatforms: PropTypes.array, +} + +const LegendText = styled.label` + font-weight: ${props => (props.checked ? 600 : 400)}; + font-family: "Titillium Web", sans-serif; + display: inline-flex; + gap: 0.25rem; + margin-left: 0.5rem; + background: transparent; + border: none; + & svg { + vertical-align: middle; + } +` + +const IconSpan = styled.span` + color: ${props => props.color}; + background: #294060; + border: 0.5px solid; + border-color: ${props => props.color}; + display: inline-flex; + height: 1.25rem; + width: 1.25rem; + justify-content: center; + align-items: center; + border-radius: 512px; + & svg { + vertical-align: unset; + font-weight: 600; + } +` + +const LegendBox = styled.div` + display: inline-block; + text-align: left; + min-width: 14rem; + position: absolute; + right: 5px; + margin-top: 5px; + margin-right: 5px; + padding: 8px; + color: ${colors.lightTheme.text}; + background-color: rgba(255, 255, 255, 0.75); + transition: all 0.24s ease-out; + > fieldset { + border: 0px; + } + > fieldset > legend { + padding: 0 0 4px; + font-family: "Titillium Web", sans-serif; + color: ${colors.lightTheme.text}; + font-size: 1.1rem; + font-weight: 600; + } + & input { + cursor: pointer; + } + & h4 { + font-weight: 600; + color: ${colors.lightTheme.text}; + font-size: 0.8rem; + margin: 4px 0 2px; + } + &:hover { + background-color: rgba(255, 255, 255, 0.95); + } +` + +const Tag = styled.div` + display: inline; + > u { + text-decoration-line: underline; + text-decoration-style: dotted; + text-decoration-color: #4d4d4d; + color: #333; + text-decoration-thickness: 2px; + padding-left: 7px; + &:hover { + cursor: pointer; + } + } +` diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index 945e340b..99f3c3a0 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -1,33 +1,30 @@ import React, { useEffect, useState } from "react" import PropTypes from "prop-types" -import styled from "styled-components" -import { Tooltip } from "react-tooltip" import Map from "../map" import Source from "../map/source" import Layer from "../map/layer" import { getUniquePlatforms } from "../../utils/get-unique-platforms" -import { LineIcon } from "../../icons" import { mapLayerFilter } from "../../utils/filter-utils" -import { colors } from "../../theme" import { replaceSlashes } from "../../utils/helpers" -import { usePlatformStatus } from "../../utils/use-platform-status" import { - FALLBACK_COLOR, - MOVING_PLATFORMS_COLORS, - STATIC_PLATFORMS, getLineColors, getStaticIcons, getIconColors, } from "../../utils/platform-colors" +import Button from "../button" +import { GlobeMap } from "../map/globe-map" +import { POSITIVE } from "../../utils/constants" +import { MapLegend } from "./map-legend" export function DeploymentMap({ geojson, deployments, bounds, selectedDeployment, - mapStyleID, }) { + const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" + const [enable3DView, setEnable3DView] = useState(false) const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) @@ -53,8 +50,6 @@ export function DeploymentMap({ const lineColorsPaint = getLineColors( movingPlatforms.filter((i, index) => movingPlatforms.indexOf(i) === index) ) - const iconImage = getStaticIcons() - const iconColors = getIconColors() const [selectedPlatforms, setSelectedPlatforms] = useState( names @@ -62,6 +57,74 @@ export function DeploymentMap({ .filter(name => platformsWithData.includes(name)) ) + return ( + <> + {enable3DView ? ( + + + + ) : ( + + + + )} +
+ +
+ + ) +} + +DeploymentMap.propTypes = { + geojson: PropTypes.object, + deployments: PropTypes.array, + bounds: PropTypes.array, + selectedDeployment: PropTypes.object, +} + +const MapboxMap = ({ + geojson, + mapStyleID, + bounds, + lineColorsPaint, + selectedDeployment, + selectedPlatforms, + children, +}) => { + const iconImage = getStaticIcons() + const iconColors = getIconColors() return ( - + {children} ) } -DeploymentMap.propTypes = { +MapboxMap.propTypes = { geojson: PropTypes.object, - deployments: PropTypes.array, - bounds: PropTypes.array, + children: PropTypes.node, selectedDeployment: PropTypes.object, + selectedPlatforms: PropTypes.array, + setSelectedPlatforms: PropTypes.func, + lineColorsPaint: PropTypes.array, + bounds: PropTypes.array, mapStyleID: PropTypes.string.isRequired, } @@ -237,262 +297,3 @@ DeploymentLayer.propTypes = { selectedPlatforms: PropTypes.array, onLoad: PropTypes.func, } - -export const LegendItem = ({ - name, - type, - color, - icon, - checked, - disabled, - onClick, - activeDeploymentPlatforms, - platformsWithData, -}) => ( -
- onClick()} - /> - - {type === "moving" ? ( - - ) : ( - {icon} - )} - {name} - - -
-) - -LegendItem.propTypes = { - name: PropTypes.string, - type: PropTypes.string, - color: PropTypes.string, - icon: PropTypes.node, - checked: PropTypes.bool, - disabled: PropTypes.bool, - platformsWithData: PropTypes.array, - activeDeploymentPlatforms: PropTypes.array, - onClick: PropTypes.func, -} - -export const MapLegend = ({ - platforms = [], - platformsWithData = [], - activeDeploymentPlatforms = [], - setSelectedPlatforms, - selectedPlatforms, -}) => { - const names = platforms.map(i => i.name) - const uniquePlatforms = platforms.filter( - (i, index) => names.indexOf(i.name) === index - ) - const movingPlatforms = uniquePlatforms.filter(platform => - ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) - ) - const staticPlatforms = uniquePlatforms.filter( - platform => !["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) - ) - - return ( - -
- Platforms - {movingPlatforms.length > 0 &&

Moving

} - {movingPlatforms.map((platform, index) => ( - - selectedPlatforms.includes(platform.name) - ? setSelectedPlatforms( - selectedPlatforms.filter(i => i !== platform.name) - ) - : setSelectedPlatforms([...selectedPlatforms, platform.name]) - } - activeDeploymentPlatforms={activeDeploymentPlatforms} - platformsWithData={platformsWithData} - /> - ))} - {staticPlatforms.length > 0 &&

Stationary

} - {staticPlatforms.map(platform => ( - i.name === platform.name)?.color} - icon={STATIC_PLATFORMS?.find(i => i.name === platform.name)?.icon} - checked={selectedPlatforms.includes(platform.name)} - disabled={ - (selectedPlatforms.length === 1 && - selectedPlatforms.includes(platform.name)) || - !platformsWithData.includes(platform.name) - } - onClick={() => - selectedPlatforms.includes(platform.name) - ? setSelectedPlatforms( - selectedPlatforms.filter(i => i !== platform.name) - ) - : setSelectedPlatforms([...selectedPlatforms, platform.name]) - } - activeDeploymentPlatforms={activeDeploymentPlatforms} - platformsWithData={platformsWithData} - /> - ))} -
-
- ) -} - -MapLegend.propTypes = { - platforms: PropTypes.array, - platformsWithData: PropTypes.array, - activeDeploymentPlatforms: PropTypes.array, - setSelectedPlatforms: PropTypes.func, - selectedPlatforms: PropTypes.array, -} - -export const PlatformStatus = ({ - platformName, - platformsWithData, - activeDeploymentPlatforms, -}) => { - const status = usePlatformStatus( - platformName, - platformsWithData, - activeDeploymentPlatforms - ) - - if (status !== "operational") { - return ( - - - {status === "notShown" ? "(Not Shown)" : "(Not Operating)"} - - - - ) - } - return <> -} - -PlatformStatus.propTypes = { - platformName: PropTypes.string, - platformsWithData: PropTypes.array, - activeDeploymentPlatforms: PropTypes.array, -} - -const LegendText = styled.label` - font-weight: ${props => (props.checked ? 600 : 400)}; - font-family: "Titillium Web", sans-serif; - display: inline-flex; - gap: 0.25rem; - margin-left: 0.5rem; - background: transparent; - border: none; - & svg { - vertical-align: middle; - } -` - -const IconSpan = styled.span` - color: ${props => props.color}; - background: #294060; - border: 0.5px solid; - border-color: ${props => props.color}; - display: inline-flex; - height: 1.25rem; - width: 1.25rem; - justify-content: center; - align-items: center; - border-radius: 512px; - & svg { - vertical-align: unset; - font-weight: 600; - } -` - -const LegendBox = styled.div` - display: inline-block; - text-align: left; - min-width: 14rem; - position: absolute; - right: 5px; - margin-top: 5px; - margin-right: 5px; - padding: 8px; - color: ${colors.lightTheme.text}; - background-color: rgba(255, 255, 255, 0.75); - transition: all 0.24s ease-out; - > fieldset { - border: 0px; - } - > fieldset > legend { - padding: 0 0 4px; - font-family: "Titillium Web", sans-serif; - color: ${colors.lightTheme.text}; - font-size: 1.1rem; - font-weight: 600; - } - & input { - cursor: pointer; - } - & h4 { - font-weight: 600; - color: ${colors.lightTheme.text}; - font-size: 0.8rem; - margin: 4px 0 2px; - } - &:hover { - background-color: rgba(255, 255, 255, 0.95); - } -` - -const Tag = styled.div` - display: inline; - > u { - text-decoration-line: underline; - text-decoration-style: dotted; - text-decoration-color: #4d4d4d; - color: #333; - text-decoration-thickness: 2px; - padding-left: 7px; - &:hover { - cursor: pointer; - } - } -` diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index bf0e7a49..43709592 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -13,8 +13,6 @@ import { Disclosure } from "@reach/disclosure" import { DeploymentPanel } from "./deployment-panel" import { DeploymentMap } from "./map" import { replaceSlashes } from "../../utils/helpers" -import { GlobeMap } from "../map/globe-map" -import Button from "../button" const chartSettings = { marginTop: 1, @@ -42,7 +40,6 @@ export const Swatch = styled.div` export const TimelineChart = ({ deployments, bounds, campaignName }) => { const [containerRef, dms] = useChartDimensions(chartSettings) - const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" const minDateString = d3 .min( @@ -89,7 +86,6 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { const [count, setCount] = useState(1) const [priority, setPriority] = useState({}) const [geojson, setGeojson] = useState({}) - const [enable3DView, setEnable3DView] = useState(false) const [tooltip, setTooltip] = useState({ x: null, y: null }) const [tooltipContent, setTooltipContent] = useState(null) @@ -150,32 +146,12 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { return ( {geojson?.features?.length && ( - <> - {enable3DView ? ( - - ) : ( - - )} -
- -
- + )}
{ @@ -72,3 +73,72 @@ describe("getPlatformIcon", () => { ) }) }) + +describe("isPlatformVisible", () => { + const platformProperties = { + platform_name: "DC-8", + deployment: "SPADE_D1_2018", + } + it("returns true if there is not selected platforms and deployments", () => { + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: null, + selectedDeployment: null, + }) + ).toBeTruthy() + }) + it("returns true if it is one of the selected platforms", () => { + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: ["DC-8", "ER-2"], + selectedDeployment: null, + }) + ).toBeTruthy() + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: ["DC-8", "ER-2"], + selectedDeployment: { longname: "SPADE_D1_2018" }, + }) + ).toBeTruthy() + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: null, + selectedDeployment: { longname: "SPADE_D1_2018" }, + }) + ).toBeTruthy() + }) + it("returns false if the selected platforms and deployment does not match", () => { + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: ["DC-8", "ER-2"], + selectedDeployment: { longname: "SPADE_D2_2019" }, + }) + ).toBeFalsy() + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: null, + selectedDeployment: { longname: "SPADE_D2_2019" }, + }) + ).toBeFalsy() + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: ["ER-2"], + selectedDeployment: { longname: "SPADE_D1_2018" }, + }) + ).toBeFalsy() + expect( + isPlatformVisible({ + platformProperties, + selectedPlatforms: ["ER-2"], + selectedDeployment: null, + }) + ).toBeFalsy() + }) +}) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index 62bbbc20..9244bcb0 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -119,3 +119,16 @@ export const getIconColors = () => { export const getPlatformIcon = platformName => STATIC_PLATFORMS.find(i => i.name === platformName).mapIcon + +export const isPlatformVisible = ({ + platformProperties, + selectedPlatforms, + selectedDeployment, +}) => { + return ( + (selectedDeployment === null || + selectedDeployment.longname === platformProperties.deployment) && + (selectedPlatforms === null || + selectedPlatforms.includes(platformProperties.platform_name)) + ) +} From 1d959a4fe88438d50eeb64f0e22cf1757881b472 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Wed, 16 Oct 2024 16:11:31 +0530 Subject: [PATCH 09/36] Update deck.gl version --- package.json | 2 +- yarn.lock | 149 ++++++++++++++++++++++++--------------------------- 2 files changed, 72 insertions(+), 79 deletions(-) diff --git a/package.json b/package.json index 61b8a04f..bfc209d4 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@turf/envelope": "^7.1.0", "d3": "^7.3.0", "date-fns": "^2.28.0", - "deck.gl": "^9.0.30", + "deck.gl": "^9.0.33", "gatsby": "^5.13.7", "gatsby-plugin-csp": "^1.1.4", "gatsby-plugin-google-gtag": "5.13.1", diff --git a/yarn.lock b/yarn.lock index 931ca377..5bcaf721 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1176,28 +1176,28 @@ resolved "https://registry.yarnpkg.com/@builder.io/partytown/-/partytown-0.7.6.tgz#697acea6b552167a4dd43ddd4827018aa42e0364" integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== -"@deck.gl/aggregation-layers@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.30.tgz#52f870bc4c9e6854fa3915e12b887efd691afa4f" - integrity sha512-reuYO+NHlDk92JZNMr1cTEOIlh6dto0o4rwlOU3EbMoj1xdhx1qp1HFcpVk/hFPARFH9vZrzJUldZ6dcyXO/Dg== +"@deck.gl/aggregation-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.33.tgz#e676907ada185157be49c75c2a4a97474d2cf421" + integrity sha512-h0YCvdY4nZctkW1/1zFuwyL3o3o1HwZamRRdImpi74ug0GiLayt0kc4jLBbId4Tlxm5q/N2lggrZkFa9TPytWA== dependencies: "@luma.gl/constants" "~9.0.27" "@luma.gl/shadertools" "~9.0.27" "@math.gl/web-mercator" "^4.0.0" d3-hexbin "^0.2.1" -"@deck.gl/arcgis@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.30.tgz#6eb8d513916fbd569b60e6d5a4c6c62d7a2071f1" - integrity sha512-ioEp/O8rnE5GN9RC7+ivFJgnfhVsZDSSBlf2DzbuVE0u1Q4+25KGM33BMRB31O6Q1gapeRdVAA4Wl4MkWImWeA== +"@deck.gl/arcgis@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.33.tgz#421b654194103513bf9cb1957da38b697f992423" + integrity sha512-EFtDynelO4QhsAlBUNmrkfnx03YzLPJlxDbaeiABF08dWt8fztMvmEFAIseGLbh8/7O8mnqmRuBBo5tWeDgs5Q== dependencies: "@luma.gl/constants" "~9.0.27" esri-loader "^3.7.0" -"@deck.gl/carto@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.30.tgz#7c97e89cb19e9817b93dcc97df78dfeb6523ecb3" - integrity sha512-YUPRYLhqP8Wp2MxwPqCf5no/IVRRvZUC5xn9KpwdJDLBzQExfk662Z3x6b9A20cpp/ChMgWzoYJe5MgPb+DVeA== +"@deck.gl/carto@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.33.tgz#5ba027e133d0eafbd28cd9ff757258f22f16ee14" + integrity sha512-6eGWIWnVo/JPLhziVlcDEjTbTi1YF0NSHhJTkb8NjdE+lJ4cBzFxCfEaFXBACbLjqJwa6F1Mo+9VoDZVQcbkig== dependencies: "@loaders.gl/gis" "^4.2.0" "@loaders.gl/loader-utils" "^4.2.0" @@ -1221,10 +1221,10 @@ pbf "^3.2.1" quadbin "^0.2.0" -"@deck.gl/core@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.30.tgz#6efac9c8db26bff9a018fb53f290617dc4e09a13" - integrity sha512-TsEkgtgFHi6t8Wcby/0RS8LPMbetDii/aIKOadYVI4iCA/PQLte9t1qQlVfiSiu15ifca7+JncKnnIph5NSQTQ== +"@deck.gl/core@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.33.tgz#e172cb94a92a8d71338c11bb306ddcc815fefc30" + integrity sha512-KTfanNfb0b/JKV6BFSzQ8uMC07Yy5zvzLnnfHLV4l4ostHdEaPHdBEr5IDhsSRMBgcYSfsML3NpTFncVom+IyA== dependencies: "@loaders.gl/core" "^4.2.0" "@loaders.gl/images" "^4.2.0" @@ -1243,19 +1243,19 @@ gl-matrix "^3.0.0" mjolnir.js "^2.7.0" -"@deck.gl/extensions@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.30.tgz#2ceb86816ce9cae9eea532f323c9ffa65ec880aa" - integrity sha512-Mxa9ujE859kfqdIWo+3eBNk5GXbbjL5GbYJJlCnFS0j/eOmBcH0P1uGaaQrcARg+eoLkkC12l19hGhQqLeA3Tg== +"@deck.gl/extensions@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.33.tgz#aec00910d6c570aa603d3331c482d0defb5c91b0" + integrity sha512-rxfz3/I4mf0WKW6EvntMmsn9F7rkkWYUweadUZSw12FQ50fm8GVDJ7k/2Mkzn1WJEocJW2Pv5mBRqsSWtUdyQQ== dependencies: "@luma.gl/constants" "~9.0.27" "@luma.gl/shadertools" "~9.0.27" "@math.gl/core" "^4.0.0" -"@deck.gl/geo-layers@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.30.tgz#3a4f1c77d883e217209da32bcd9647f368d5d7ff" - integrity sha512-XAEbQqHfcsVD91620rg5PYdBgXlWQC7wAP4t8QwVKxeN5tdsrG9MGISJMGj7tAoVvYfzORMhqlcbTT6TzH+eAQ== +"@deck.gl/geo-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.33.tgz#8a2a42f2db98530813ac401d7fb4a5ee3b779c0d" + integrity sha512-OmKfeliZclDIi24EfX/1geNR4gADKzRrF7M10oesREvTygkHdUxzeyEPpWqp0XS38qn80qfd3zttUN63+Vc0Bg== dependencies: "@loaders.gl/3d-tiles" "^4.2.0" "@loaders.gl/gis" "^4.2.0" @@ -1274,26 +1274,26 @@ h3-js "^4.1.0" long "^3.2.0" -"@deck.gl/google-maps@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.30.tgz#eeff2bc62e517427173f2048451de057449cbd4b" - integrity sha512-YOCNiYbEh9Sdob6fFsk2bWMqpYlvqHF/NottAi3g5/bMcEPQX/PFUft0LPn8oa5qrdCth+JOARqHWqblbcJbXw== +"@deck.gl/google-maps@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.33.tgz#98e940645ba84ba3d7fe19e5d9721a597876c558" + integrity sha512-/iKzWat4HozegCkYYStHTbFybiThsg0xVJRMLuNPy/ea5QlIZJoHsQv9ON3q7lJHrz8qOVYgyEYc+u6EzaP0rA== dependencies: "@luma.gl/constants" "~9.0.27" "@math.gl/core" "^4.0.0" "@types/google.maps" "^3.48.6" -"@deck.gl/json@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.30.tgz#3e4a1cf272d850bbe789955030815f83adfeac03" - integrity sha512-zgkJgAJdLA4E6ftkZACIbqGDOp8wV3ZG4Yu5eIyViTYDPLGUcUwVijrvYUj2DQBBIzx9FLx2Tfg+IANA8iiMCA== +"@deck.gl/json@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.33.tgz#99578717b99cdfad2edefd7579411e3c055a1125" + integrity sha512-ZxIxWyVYyh1RJcZ1UwA1jH/cqv+KcSL39nJ6r24z9twuIgtWO3ezeEtHTwT/mnQGMfdHWcFwMTaDXUG8pOO2Iw== dependencies: - expression-eval "^5.0.0" + jsep "^0.3.0" -"@deck.gl/layers@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.30.tgz#20dccdfb168ca79d4637527e76ce52816be1d4b4" - integrity sha512-+w/b8Rb50v/rkGgX9+/K6lmYUELaT4/Js+Vv7hecXjO4GUa+9eMokomOEvUw3uKG6Td8k1/GtLfK5E+4Pu2n6g== +"@deck.gl/layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.33.tgz#57a57460a8fe5ef3c569ce0df24dd119dac467bf" + integrity sha512-PBtxOuSq5QmlQ1N27FUIC3sC5iLFqAsdyEXUkjzWMPdLGjeow5xx32j3E0iag//ShgW4jiffS1dqgYywbjwYhg== dependencies: "@loaders.gl/images" "^4.2.0" "@loaders.gl/schema" "^4.2.0" @@ -1303,32 +1303,32 @@ "@math.gl/web-mercator" "^4.0.0" earcut "^2.2.4" -"@deck.gl/mapbox@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.30.tgz#eef8fd64505d03092cc67f868f29f8acb2ce6676" - integrity sha512-jVRMM9O5lidAbf5FaRuXBofUBtUD68tcfEouuCGmBgh7QOBkPsPGeofMITfCQY7FjkbHOe2CnVNVNjiEHBa3Hw== +"@deck.gl/mapbox@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.33.tgz#366b0d92c0c61197dc9e6b3b95d40ad030aad07b" + integrity sha512-8C4xOghijVnH0nHEAmt/QK8JUOIE5fg6rN/dmYuVe/QyLFsgh27l3MxY6EgWv1nnSTRCCnyX1i3tjxsdCKRPmw== dependencies: "@luma.gl/constants" "~9.0.27" "@math.gl/web-mercator" "^4.0.0" -"@deck.gl/mesh-layers@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.30.tgz#e6d9ca11cb452bfc1b84bda94186e1ba6972887a" - integrity sha512-v4A6zftxDZcmSGhBNqB6X7V9jzssM2MW2V/xdHaDeBPZ3j6uAA17lhGkxcWDp42SRUFNfdYXQ7INgmOuh18w2g== +"@deck.gl/mesh-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.33.tgz#b64411c1ec688b04516f805bc23ebdfd24fe88f6" + integrity sha512-iN57iZ4Vq+/8polkVuJ7PsIOUpJbUVrRYywTGQgm8PaJ4WrN3wigo0fcrKfDzts7O2fluh37qg8aGNRBLuqMFQ== dependencies: "@loaders.gl/gltf" "^4.2.0" "@luma.gl/gltf" "~9.0.27" "@luma.gl/shadertools" "~9.0.27" -"@deck.gl/react@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.30.tgz#c757a2eb35068043e59a84ca0a72b27bfa5cda91" - integrity sha512-BbBZZ5Mf0p2KyDtF6VwaFP+ORHG3F4CMTHX9JOCFTb3Kmwfun5YSJiI4KofXft6czliCIgq+yurfbaVJua4aAA== +"@deck.gl/react@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.33.tgz#e38268db0f2785828224723959f17298441f0339" + integrity sha512-ka9QAfv3GxqQJtXjyGcIjMFR8d24dEaaQ53qSjjWgb8gLjb+RQSKZ7YB18VMX1g3iq7xyDRJ3LobcRA14m0SEA== -"@deck.gl/widgets@9.0.30": - version "9.0.30" - resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.30.tgz#9d1654c75462fc62ceccd5ba9d251cca9f82fcc3" - integrity sha512-gbUIYw2cQTpHvw0b9eOSvyDKygxq3N3fypGDHOF++iuX4wfKcfNnUnzfS31lFiAPcWzTEuVDD3BRoZLW2fkOoA== +"@deck.gl/widgets@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.33.tgz#33cb004bb78759955a52a2dc9b60c3f1fe2406ee" + integrity sha512-Uxwk4xx1Q17/j/nvythVBC/nRRr75lsTOuQl1+208ELUI6tpNCKlgFlZdKWjgXA/8KLPYhrx6y9apEfrHk4HEQ== dependencies: preact "^10.17.0" @@ -6407,24 +6407,24 @@ decimal.js@^10.4.2: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -deck.gl@^9.0.30: - version "9.0.30" - resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.30.tgz#69eec27be97efbe54500d9949bddcbc00aa5b4f0" - integrity sha512-AByVq4o+MyLxihbUOSfP0fNTCqfYfQhIRkzz05bFlTbqVwaZA/LShEjWHyL+DfsJCSDD7vdOxfbqgeUMyK1ndw== - dependencies: - "@deck.gl/aggregation-layers" "9.0.30" - "@deck.gl/arcgis" "9.0.30" - "@deck.gl/carto" "9.0.30" - "@deck.gl/core" "9.0.30" - "@deck.gl/extensions" "9.0.30" - "@deck.gl/geo-layers" "9.0.30" - "@deck.gl/google-maps" "9.0.30" - "@deck.gl/json" "9.0.30" - "@deck.gl/layers" "9.0.30" - "@deck.gl/mapbox" "9.0.30" - "@deck.gl/mesh-layers" "9.0.30" - "@deck.gl/react" "9.0.30" - "@deck.gl/widgets" "9.0.30" +deck.gl@^9.0.33: + version "9.0.33" + resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.33.tgz#4bee04859dcb2bcaeb44a6341a9e115ba4c54d1b" + integrity sha512-XQK40kkJOBXvPweALtR9dt+BoEkpnVjYtwLsrLLihVsuX0ZrN32lA41k+wzBS2lJpkMvCIFzeYQJgncJHARWSg== + dependencies: + "@deck.gl/aggregation-layers" "9.0.33" + "@deck.gl/arcgis" "9.0.33" + "@deck.gl/carto" "9.0.33" + "@deck.gl/core" "9.0.33" + "@deck.gl/extensions" "9.0.33" + "@deck.gl/geo-layers" "9.0.33" + "@deck.gl/google-maps" "9.0.33" + "@deck.gl/json" "9.0.33" + "@deck.gl/layers" "9.0.33" + "@deck.gl/mapbox" "9.0.33" + "@deck.gl/mesh-layers" "9.0.33" + "@deck.gl/react" "9.0.33" + "@deck.gl/widgets" "9.0.33" "@loaders.gl/core" "^4.2.0" "@luma.gl/core" "~9.0.27" "@luma.gl/engine" "~9.0.27" @@ -7625,13 +7625,6 @@ express@^4.16.3, express@^4.18.2: utils-merge "1.0.1" vary "~1.1.2" -expression-eval@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/expression-eval/-/expression-eval-5.0.1.tgz#845758fa9ba64d9edc7b6804ae404934a6cfee6b" - integrity sha512-7SL4miKp19lI834/F6y156xlNg+i9Q41tteuGNCq9C06S78f1bm3BXuvf0+QpQxv369Pv/P2R7Hb17hzxLpbDA== - dependencies: - jsep "^0.3.0" - ext@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" From 68e3975ab8911846df4e2c8df7f7fc803068a49b Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 17 Oct 2024 17:20:39 +0530 Subject: [PATCH 10/36] Add Zoom and FullScreen controls to Globe View Map --- src/components/map/deck-gl.css | 152 ++++++++++++++++++++++++++++++++ src/components/map/globe-map.js | 7 ++ 2 files changed, 159 insertions(+) create mode 100644 src/components/map/deck-gl.css diff --git a/src/components/map/deck-gl.css b/src/components/map/deck-gl.css new file mode 100644 index 00000000..cbda6674 --- /dev/null +++ b/src/components/map/deck-gl.css @@ -0,0 +1,152 @@ +/* This is a copy of node_modules/@deck.gl/widgets/dist/stylesheet.css file, +as the import from the library didn't work */ + +.deck-widget { + margin: var(--widget-margin, 12px); +} + +/* Common button container styles */ +.deck-widget-button, +.deck-widget-button-group { + background: var(--button-stroke, rgba(255, 255, 255, 0.3)); + border-radius: var(--button-corner-radius, 8px); + box-shadow: var(--button-shadow, 0px 0px 8px 0px rgba(0, 0, 0, 0.25)); + + display: flex; + align-items: center; + justify-content: center; +} + +/* Single button */ +.deck-widget-button { + width: var(--button-size, 28px); + height: var(--button-size, 28px); +} + +/* Button group */ +.deck-widget-button-group { + width: calc(var(--button-size, 28px) - 2); + height: calc((var(--button-size, 28px) * 2) - 1); + + flex-direction: row; + padding: 1px; + gap: 1px; +} + +.deck-widget-button-group.vertical { + display: inline-flex; + flex-direction: column; +} + +/* Common button styles */ +.deck-widget-button-group button, +.deck-widget-button button { + width: calc(var(--button-size, 28px) - 2px); + height: calc(var(--button-size, 28px) - 2px); + + box-sizing: border-box; + background: var(--button-background, #fff); + backdrop-filter: var(--button-backdrop-filter, unset); + border: var(--button-inner-stroke, unset); + border-radius: calc(var(--button-corner-radius, 8px) - 1px); + + pointer-events: auto; + cursor: pointer; + outline: none; + padding: 0; +} + +/* Border radius adjustments for grouped buttons */ +.deck-widget-button-group.vertical > *:not(:last-child), +.deck-widget-button-group.vertical > *:not(:last-child) > button { + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; +} + +.deck-widget-button-group.vertical > *:not(:first-child), +.deck-widget-button-group.vertical > *:not(:first-child) > button { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + + +.deck-widget-button-group.horizontal > *:not(:last-child), +.deck-widget-button-group.horizontal > *:not(:last-child) > button { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.deck-widget-button-group.horizontal > *:not(:first-child), +.deck-widget-button-group.horizontal > *:not(:first-child) > button { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +/* Icon button styles */ +.deck-widget button .deck-widget-icon { + background-color: var(--button-icon-idle, #616166); + background-position: 50%; + background-repeat: no-repeat; + display: block; + height: 100%; + width: 100%; +} + +.deck-widget button .deck-widget-icon:hover { + background-color: var(--button-icon-hover, rgb(24, 24, 26)); +} + +/* Fullscreen styles */ +.deck-widget.deck-widget-fullscreen button.deck-widget-fullscreen-enter .deck-widget-icon { + mask-image: var( + --icon-fullscreen-enter, + url('data:image/svg+xml,') + ); + -webkit-mask-image: var( + --icon-fullscreen-enter, + url('data:image/svg+xml,') + ); +} + +.deck-widget.deck-widget-fullscreen button.deck-widget-fullscreen-exit .deck-widget-icon { + mask-image: var( + --icon-fullscreen-exit, + url('data:image/svg+xml,') + ); + -webkit-mask-image: var( + --icon-fullscreen-exit, + url('data:image/svg+xml,') + ); +} + +.deck-pseudo-fullscreen { + height: 100% !important; + left: 0 !important; + position: fixed !important; + top: 0 !important; + width: 100% !important; + z-index: 99999; +} + +/* Zoom styles */ +.deck-widget.deck-widget-zoom button.deck-widget-zoom-in .deck-widget-icon { + mask-image: var( + --icon-zoom-in, + url('data:image/svg+xml,') + ); + -webkit-mask-image: var( + --icon-zoom-in, + url('data:image/svg+xml,') + ); +} + +.deck-widget.deck-widget-zoom button.deck-widget-zoom-out .deck-widget-icon { + mask-image: var( + --icon-zoom-out, + url('data:image/svg+xml, wBox="0 0 26 26" fill="none">') + ); + -webkit-mask-image: var( + --icon-zoom-out, + url('data:image/svg+xml, wBox="0 0 26 26" fill="none">') + ); +} diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index af31216f..3d37fcc7 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -9,6 +9,7 @@ import { import { GeoJsonLayer, BitmapLayer, IconLayer } from "@deck.gl/layers" import { TileLayer } from "@deck.gl/geo-layers" import { SimpleMeshLayer } from "@deck.gl/mesh-layers" +import { ZoomWidget, FullscreenWidget } from "@deck.gl/widgets" import { SphereGeometry } from "@luma.gl/engine" import PropTypes from "prop-types" import styled from "styled-components" @@ -18,6 +19,7 @@ import { getPlatformIcon, isPlatformVisible, } from "../../utils/platform-colors" +import "./deck-gl.css" const INITIAL_VIEW_STATE = { longitude: -98, @@ -166,8 +168,13 @@ export function GlobeMap({ controller: { keyboard: false, inertia: true }, }) } + controller={true} initialViewState={initialViewState} layers={[backgroundLayers, flights, staticLocations]} + widgets={[ + new ZoomWidget({ placement: "bottom-right" }), + new FullscreenWidget({ placement: "bottom-right" }), + ]} > {children} From 3788bd302803e41b6493bffc6fb98ee97e81f21c Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 17 Oct 2024 17:40:11 +0530 Subject: [PATCH 11/36] Move MapViewControl to inside the map --- src/components/timeline/map-view-control.js | 29 +++++++++++++++++ src/components/timeline/map.js | 36 ++++++++++----------- 2 files changed, 47 insertions(+), 18 deletions(-) create mode 100644 src/components/timeline/map-view-control.js diff --git a/src/components/timeline/map-view-control.js b/src/components/timeline/map-view-control.js new file mode 100644 index 00000000..c7b6083a --- /dev/null +++ b/src/components/timeline/map-view-control.js @@ -0,0 +1,29 @@ +import React from "react" +import PropTypes from "prop-types" +import styled from "styled-components" +import Button from "../button" +import { POSITIVE } from "../../utils/constants" + +const ControlBox = styled.div` + display: inline-block; + text-align: right; + position: absolute; + left: 5px; + bottom: 0px; + margin-bottom: 5px; + font-weight: ${props => (props.checked ? 600 : 400)}; + font-family: "Titillium Web", sans-serif; +` + +export const MapViewControl = ({ onClick, is3DViewEnabled }) => ( + + + +) + +MapViewControl.propTypes = { + onClick: PropTypes.func, + is3DViewEnabled: PropTypes.bool.isRequired, +} diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index 99f3c3a0..73f560a0 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -12,10 +12,9 @@ import { getStaticIcons, getIconColors, } from "../../utils/platform-colors" -import Button from "../button" import { GlobeMap } from "../map/globe-map" -import { POSITIVE } from "../../utils/constants" import { MapLegend } from "./map-legend" +import { MapViewControl } from "./map-view-control" export function DeploymentMap({ geojson, @@ -74,6 +73,10 @@ export function DeploymentMap({ selectedPlatforms={selectedPlatforms} setSelectedPlatforms={setSelectedPlatforms} /> + setEnable3DView(!enable3DView)} + is3DViewEnabled={enable3DView} + /> ) : ( - + <> + + setEnable3DView(!enable3DView)} + is3DViewEnabled={enable3DView} + /> + )} -
- -
) } From 02693922fdacd792fee9efe8f43a559408616ca9 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Fri, 18 Oct 2024 11:13:49 +0530 Subject: [PATCH 12/36] Update src/components/timeline/map-view-control.js Co-authored-by: Lane Goodman --- src/components/timeline/map-view-control.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/timeline/map-view-control.js b/src/components/timeline/map-view-control.js index c7b6083a..9d4c8755 100644 --- a/src/components/timeline/map-view-control.js +++ b/src/components/timeline/map-view-control.js @@ -18,7 +18,7 @@ const ControlBox = styled.div` export const MapViewControl = ({ onClick, is3DViewEnabled }) => ( ) From e3ce771e8fdb33014835502ff9dc03fd3e123912 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Sat, 19 Oct 2024 08:01:29 +0800 Subject: [PATCH 13/36] Add attribution to Globe View Map --- src/components/global.css | 4 ++++ src/components/map/globe-map.js | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/src/components/global.css b/src/components/global.css index 1fe98981..8ba208e5 100644 --- a/src/components/global.css +++ b/src/components/global.css @@ -4,3 +4,7 @@ body { -moz-osx-font-smoothing: grayscale; background: #294060; } + +.bottom-right { + margin-bottom: 10px; +} \ No newline at end of file diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 3d37fcc7..881e5a84 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -20,6 +20,7 @@ import { isPlatformVisible, } from "../../utils/platform-colors" import "./deck-gl.css" +import { colors } from "../../theme" const INITIAL_VIEW_STATE = { longitude: -98, @@ -177,6 +178,22 @@ export function GlobeMap({ ]} > {children} + + + © Mapbox + + + © OpenStreetMap + + ) } @@ -199,3 +216,18 @@ const MapContainer = styled.div` overflow: hidden; background: #111; ` + +const Attribution = styled.div` + display: inline-block; + text-align: right; + position: absolute; + right: 4px; + bottom: 2px; + font-weight: 400; + font-size: 11px; + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + color: ${colors.darkTheme.text}; + > a { + margin-left: 4px; + } +` From b12a637135ec3d63e818817fc7df1d5a22282a66 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 21 Oct 2024 12:27:04 +0700 Subject: [PATCH 14/36] Replace zoomOffset with minZoom 3 and world extent --- src/components/map/globe-map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 881e5a84..9f5923f2 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -99,8 +99,8 @@ export function GlobeMap({ id: "TileLayer", data: `https://api.mapbox.com/styles/v1/${mapStyleID}/tiles/256/{z}/{x}/{y}@2x?access_token=${MAPBOX_TOKEN}`, maxZoom: 22, - minZoom: 0, - zoomOffset: 1, + minZoom: 3, + extent: [-180, -90, 180, 90], tileSize: 256, renderSubLayers: props => { // eslint-disable-next-line react/prop-types From 8aa8f5b53c45460da301e384199264837d79fff8 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 24 Oct 2024 11:26:53 +0700 Subject: [PATCH 15/36] Try to solve conflicts in yarn.lock --- yarn.lock | 862 +----------------------------------------------------- 1 file changed, 9 insertions(+), 853 deletions(-) diff --git a/yarn.lock b/yarn.lock index 5bcaf721..60549a00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1176,162 +1176,6 @@ resolved "https://registry.yarnpkg.com/@builder.io/partytown/-/partytown-0.7.6.tgz#697acea6b552167a4dd43ddd4827018aa42e0364" integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== -"@deck.gl/aggregation-layers@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.33.tgz#e676907ada185157be49c75c2a4a97474d2cf421" - integrity sha512-h0YCvdY4nZctkW1/1zFuwyL3o3o1HwZamRRdImpi74ug0GiLayt0kc4jLBbId4Tlxm5q/N2lggrZkFa9TPytWA== - dependencies: - "@luma.gl/constants" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - "@math.gl/web-mercator" "^4.0.0" - d3-hexbin "^0.2.1" - -"@deck.gl/arcgis@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.33.tgz#421b654194103513bf9cb1957da38b697f992423" - integrity sha512-EFtDynelO4QhsAlBUNmrkfnx03YzLPJlxDbaeiABF08dWt8fztMvmEFAIseGLbh8/7O8mnqmRuBBo5tWeDgs5Q== - dependencies: - "@luma.gl/constants" "~9.0.27" - esri-loader "^3.7.0" - -"@deck.gl/carto@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.33.tgz#5ba027e133d0eafbd28cd9ff757258f22f16ee14" - integrity sha512-6eGWIWnVo/JPLhziVlcDEjTbTi1YF0NSHhJTkb8NjdE+lJ4cBzFxCfEaFXBACbLjqJwa6F1Mo+9VoDZVQcbkig== - dependencies: - "@loaders.gl/gis" "^4.2.0" - "@loaders.gl/loader-utils" "^4.2.0" - "@loaders.gl/mvt" "^4.2.0" - "@loaders.gl/schema" "^4.2.0" - "@loaders.gl/tiles" "^4.2.0" - "@luma.gl/core" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - "@math.gl/web-mercator" "^4.0.0" - "@types/d3-array" "^3.0.2" - "@types/d3-color" "^1.4.2" - "@types/d3-scale" "^3.0.0" - cartocolor "^5.0.2" - d3-array "^3.2.0" - d3-color "^3.1.0" - d3-format "^3.1.0" - d3-scale "^4.0.0" - earcut "^2.2.4" - h3-js "^4.1.0" - moment-timezone "^0.5.33" - pbf "^3.2.1" - quadbin "^0.2.0" - -"@deck.gl/core@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.33.tgz#e172cb94a92a8d71338c11bb306ddcc815fefc30" - integrity sha512-KTfanNfb0b/JKV6BFSzQ8uMC07Yy5zvzLnnfHLV4l4ostHdEaPHdBEr5IDhsSRMBgcYSfsML3NpTFncVom+IyA== - dependencies: - "@loaders.gl/core" "^4.2.0" - "@loaders.gl/images" "^4.2.0" - "@luma.gl/constants" "~9.0.27" - "@luma.gl/core" "~9.0.27" - "@luma.gl/engine" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - "@luma.gl/webgl" "~9.0.27" - "@math.gl/core" "^4.0.0" - "@math.gl/sun" "^4.0.0" - "@math.gl/web-mercator" "^4.0.0" - "@probe.gl/env" "^4.0.9" - "@probe.gl/log" "^4.0.9" - "@probe.gl/stats" "^4.0.9" - "@types/offscreencanvas" "^2019.6.4" - gl-matrix "^3.0.0" - mjolnir.js "^2.7.0" - -"@deck.gl/extensions@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.33.tgz#aec00910d6c570aa603d3331c482d0defb5c91b0" - integrity sha512-rxfz3/I4mf0WKW6EvntMmsn9F7rkkWYUweadUZSw12FQ50fm8GVDJ7k/2Mkzn1WJEocJW2Pv5mBRqsSWtUdyQQ== - dependencies: - "@luma.gl/constants" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - "@math.gl/core" "^4.0.0" - -"@deck.gl/geo-layers@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.33.tgz#8a2a42f2db98530813ac401d7fb4a5ee3b779c0d" - integrity sha512-OmKfeliZclDIi24EfX/1geNR4gADKzRrF7M10oesREvTygkHdUxzeyEPpWqp0XS38qn80qfd3zttUN63+Vc0Bg== - dependencies: - "@loaders.gl/3d-tiles" "^4.2.0" - "@loaders.gl/gis" "^4.2.0" - "@loaders.gl/loader-utils" "^4.2.0" - "@loaders.gl/mvt" "^4.2.0" - "@loaders.gl/schema" "^4.2.0" - "@loaders.gl/terrain" "^4.2.0" - "@loaders.gl/tiles" "^4.2.0" - "@loaders.gl/wms" "^4.2.0" - "@luma.gl/gltf" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - "@math.gl/core" "^4.0.0" - "@math.gl/culling" "^4.0.0" - "@math.gl/web-mercator" "^4.0.0" - "@types/geojson" "^7946.0.8" - h3-js "^4.1.0" - long "^3.2.0" - -"@deck.gl/google-maps@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.33.tgz#98e940645ba84ba3d7fe19e5d9721a597876c558" - integrity sha512-/iKzWat4HozegCkYYStHTbFybiThsg0xVJRMLuNPy/ea5QlIZJoHsQv9ON3q7lJHrz8qOVYgyEYc+u6EzaP0rA== - dependencies: - "@luma.gl/constants" "~9.0.27" - "@math.gl/core" "^4.0.0" - "@types/google.maps" "^3.48.6" - -"@deck.gl/json@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.33.tgz#99578717b99cdfad2edefd7579411e3c055a1125" - integrity sha512-ZxIxWyVYyh1RJcZ1UwA1jH/cqv+KcSL39nJ6r24z9twuIgtWO3ezeEtHTwT/mnQGMfdHWcFwMTaDXUG8pOO2Iw== - dependencies: - jsep "^0.3.0" - -"@deck.gl/layers@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.33.tgz#57a57460a8fe5ef3c569ce0df24dd119dac467bf" - integrity sha512-PBtxOuSq5QmlQ1N27FUIC3sC5iLFqAsdyEXUkjzWMPdLGjeow5xx32j3E0iag//ShgW4jiffS1dqgYywbjwYhg== - dependencies: - "@loaders.gl/images" "^4.2.0" - "@loaders.gl/schema" "^4.2.0" - "@mapbox/tiny-sdf" "^2.0.5" - "@math.gl/core" "^4.0.0" - "@math.gl/polygon" "^4.0.0" - "@math.gl/web-mercator" "^4.0.0" - earcut "^2.2.4" - -"@deck.gl/mapbox@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.33.tgz#366b0d92c0c61197dc9e6b3b95d40ad030aad07b" - integrity sha512-8C4xOghijVnH0nHEAmt/QK8JUOIE5fg6rN/dmYuVe/QyLFsgh27l3MxY6EgWv1nnSTRCCnyX1i3tjxsdCKRPmw== - dependencies: - "@luma.gl/constants" "~9.0.27" - "@math.gl/web-mercator" "^4.0.0" - -"@deck.gl/mesh-layers@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.33.tgz#b64411c1ec688b04516f805bc23ebdfd24fe88f6" - integrity sha512-iN57iZ4Vq+/8polkVuJ7PsIOUpJbUVrRYywTGQgm8PaJ4WrN3wigo0fcrKfDzts7O2fluh37qg8aGNRBLuqMFQ== - dependencies: - "@loaders.gl/gltf" "^4.2.0" - "@luma.gl/gltf" "~9.0.27" - "@luma.gl/shadertools" "~9.0.27" - -"@deck.gl/react@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.33.tgz#e38268db0f2785828224723959f17298441f0339" - integrity sha512-ka9QAfv3GxqQJtXjyGcIjMFR8d24dEaaQ53qSjjWgb8gLjb+RQSKZ7YB18VMX1g3iq7xyDRJ3LobcRA14m0SEA== - -"@deck.gl/widgets@9.0.33": - version "9.0.33" - resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.33.tgz#33cb004bb78759955a52a2dc9b60c3f1fe2406ee" - integrity sha512-Uxwk4xx1Q17/j/nvythVBC/nRRr75lsTOuQl1+208ELUI6tpNCKlgFlZdKWjgXA/8KLPYhrx6y9apEfrHk4HEQ== - dependencies: - preact "^10.17.0" - "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -2173,265 +2017,6 @@ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz#c72e8b6faae31d925d23a6db0379cc3fe0216fdd" integrity sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA== -"@loaders.gl/3d-tiles@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/3d-tiles/-/3d-tiles-4.2.4.tgz#84815592e4d5e69b0962accaf761b50127fb7b37" - integrity sha512-SIBzJwnkxWL6EOict3bIONWaJSP9eXej2M6i9GrdlcG5Ge7lLYRyxVFPbDxPXd3pQtDix127gd0+c0j+fD31KA== - dependencies: - "@loaders.gl/compression" "4.2.4" - "@loaders.gl/crypto" "4.2.4" - "@loaders.gl/draco" "4.2.4" - "@loaders.gl/gltf" "4.2.4" - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/math" "4.2.4" - "@loaders.gl/tiles" "4.2.4" - "@loaders.gl/zip" "4.2.4" - "@math.gl/core" "^4.0.1" - "@math.gl/culling" "^4.0.1" - "@math.gl/geospatial" "^4.0.1" - "@probe.gl/log" "^4.0.4" - long "^5.2.1" - -"@loaders.gl/compression@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/compression/-/compression-4.2.4.tgz#c4415d882b1fb0a7e8678436eadab7139e856f4e" - integrity sha512-Ce+JGux4nNWTc5+F5GWOBlWdjsYoX2G5tr4V/j3z1ho/mVztZ31/+MJyDtYquxl3FrZ0yl4PiT4rBm4OK2ku+A== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - "@types/brotli" "^1.3.0" - "@types/pako" "^1.0.1" - fflate "0.7.4" - lzo-wasm "^0.0.4" - pako "1.0.11" - snappyjs "^0.6.1" - optionalDependencies: - brotli "^1.3.2" - lz4js "^0.2.0" - zstd-codec "^0.1" - -"@loaders.gl/core@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-4.2.4.tgz#9be318f74a3c6676147cd53d06bbf67130bb53bd" - integrity sha512-qBOO70Q1bDOc2hgHUBHOTHt9pJ41LU0y14yEyhUN/u9y1UM3L7XI8ktwkQGPeMDLjMFn4wLI0nWJLiBKsbjDEA== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - "@probe.gl/log" "^4.0.2" - -"@loaders.gl/crypto@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/crypto/-/crypto-4.2.4.tgz#258acf600cec2aae8398e1c6d3e0d9ad92235e4f" - integrity sha512-rAIREpLd1Dk0CTMSXQWzaZ8//PjoXL2vUGlh4WsAoeIRf/sAekQzk1nALaL8yqBQSNquK4f++vK0YDrFrVr6iQ== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - "@types/crypto-js" "^4.0.2" - -"@loaders.gl/draco@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/draco/-/draco-4.2.4.tgz#1743f6d5eba1e5cc3b83d4567f2c8fc2d6fd462c" - integrity sha512-pPJ9x9KMCrCU71PvOXOi+9tL3TykFqmY/3msq3f8TKZEH/wnotVX4nIeL7xD7hrkY1nBvMp1q0WZPyDfMRrl7A== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - draco3d "1.5.7" - -"@loaders.gl/gis@4.2.4", "@loaders.gl/gis@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/gis/-/gis-4.2.4.tgz#f78c693b909f082a59b7f483a0e5c131114f3e6a" - integrity sha512-TwBOjhF/mrqukBP/ia2AwjMLg5ocZQxnobGj+rZMYjagMKeHtnoZjgr17d2YPbvCTUobzIS5xQ083YJ8iXkK/A== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@mapbox/vector-tile" "^1.3.1" - "@math.gl/polygon" "^4.0.0" - pbf "^3.2.1" - -"@loaders.gl/gltf@4.2.4", "@loaders.gl/gltf@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/gltf/-/gltf-4.2.4.tgz#abe1c7f22326f5541f618d49caca03f399738000" - integrity sha512-7nczbGkYrQhQeIUQ0LNQZFVxJZleD2R6sTGaxl9OPNK44Q52QTd5UfOc2gaQx/Is4BP9HI60YP45jkqG4PMtvg== - dependencies: - "@loaders.gl/draco" "4.2.4" - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/textures" "4.2.4" - "@math.gl/core" "^4.0.0" - -"@loaders.gl/images@4.2.4", "@loaders.gl/images@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-4.2.4.tgz#85e7c75795872a3f3df5b2e5de771311c447dd13" - integrity sha512-g0pcuq4dVlKfgu+U99s8//Z/aawEkMBOzurXd+WVVFmcVsgCer4jKSywyn6UGbaV5ITPO9GUQCq9HQbah9zXjQ== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - -"@loaders.gl/loader-utils@4.2.4", "@loaders.gl/loader-utils@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/loader-utils/-/loader-utils-4.2.4.tgz#bfe4bd5b24a771f82cb6396170542251114958da" - integrity sha512-ay9L8CQLY3db/PfJa+vDwyxmpxHtbe77BASfKRj/FWKrs3ydh1MxrQc6PWaHDL83YpG30wRBXGUEmPTkCvJqlw== - dependencies: - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - "@probe.gl/stats" "^4.0.2" - -"@loaders.gl/math@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/math/-/math-4.2.4.tgz#7fe94523c02723758f77052fffce7912e5e8cf2c" - integrity sha512-t4uOoIhED+YCHUwWEojC3KmyYtBT2FYp7qL8ydfUK8VuOOvj2kQOXUxvIc98FQUzI7L7T6EMLLlpP/snRdTvHw== - dependencies: - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@math.gl/core" "^4.0.0" - -"@loaders.gl/mvt@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/mvt/-/mvt-4.2.4.tgz#99fdc9c8a2cfba728511f4755b79e402f508e7bd" - integrity sha512-ZqdUrBvl+edCaBhnMdwBLvwyaH/M8MMfjNeIS1aADA8SGB3PghM6G42kfdQzw0ZoLT9DY3DbzyoTja2ojRVipg== - dependencies: - "@loaders.gl/gis" "4.2.4" - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@math.gl/polygon" "^4.0.0" - pbf "^3.2.1" - -"@loaders.gl/schema@4.2.4", "@loaders.gl/schema@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/schema/-/schema-4.2.4.tgz#601d11379e5280221747a1d555297338269ff8bf" - integrity sha512-43M18e/kaVqwFfvTLkFfJS3CdzLGwXJG+Va9BSMlGydWb7P7KCqNenZ1ZtLP3RElUpVZv3hNWdtpxk+fLQrZaA== - dependencies: - "@types/geojson" "^7946.0.7" - -"@loaders.gl/terrain@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/terrain/-/terrain-4.2.4.tgz#68d203531b7a13a381ce9e3c8dc1132f324b582e" - integrity sha512-c7gQxNgQlUeiwSFvL0+v0Jgt/Tm0hQ61/FF+TdhBpSFCal1W2VVmK6Tehra00EUsgHzoOrmnN8LpHj89vtDOow== - dependencies: - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@mapbox/martini" "^0.2.0" - -"@loaders.gl/textures@4.2.4", "@loaders.gl/textures@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/textures/-/textures-4.2.4.tgz#67c857a084eba59ab8fe8d03a51708c38be76a28" - integrity sha512-0WrQfGnbjm8PzJiHeQa7K65qDmfW3FhOxfsCsk+alsZjFJTDIS6jaOfA2sA+BD0s8OYTsb/AZR5OAFnR1ZyVyg== - dependencies: - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/worker-utils" "4.2.4" - "@math.gl/types" "^4.0.1" - ktx-parse "^0.0.4" - texture-compressor "^1.0.2" - -"@loaders.gl/tiles@4.2.4", "@loaders.gl/tiles@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/tiles/-/tiles-4.2.4.tgz#25aa15e93f084b617f23a4525b6a1da2165eebbe" - integrity sha512-2QlCN7ZZXZLerikw8M0UlcD9prBHljTaMFaGhwMTmgt0G99BOZ12Py40ap++ZVUllSWWtb9Qs/mx4j57ElaQWQ== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/math" "4.2.4" - "@math.gl/core" "^4.0.0" - "@math.gl/culling" "^4.0.0" - "@math.gl/geospatial" "^4.0.0" - "@math.gl/web-mercator" "^4.0.0" - "@probe.gl/stats" "^4.0.2" - -"@loaders.gl/wms@^4.2.0": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/wms/-/wms-4.2.4.tgz#9df01730d2dd3d40a2853ec5f0f7efafde0c9b67" - integrity sha512-uFpEhoxDkdKpVqG84QvQ1l7Ce+t+sqJpJCCGRKx+6GYJvk7CdzeaGGvXXxnzJlcc7a6BqHESSLdYPjZ/F6aqUQ== - dependencies: - "@loaders.gl/images" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - "@loaders.gl/xml" "4.2.4" - "@turf/rewind" "^5.1.5" - deep-strict-equal "^0.2.0" - -"@loaders.gl/worker-utils@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/worker-utils/-/worker-utils-4.2.4.tgz#9383e5e73558ea57eeea1479a5177d71fd092c30" - integrity sha512-QDrGqRaOu/AGgQfp4nIMIZSp7PXd38M2b96OKIlhvh1GWXXspTINqY7hVlaaRaRqktSZOm6+4nKcpleLVP0MzA== - -"@loaders.gl/xml@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/xml/-/xml-4.2.4.tgz#354315fcf9ac71041164dafe67dfb38e56374c6e" - integrity sha512-edaO7TbzqE96zTKMzxm2/kfTWEg+a3nGO7ztmMXtAfIohxyVp2/JCPBLEzAJAnGXQP36Ro5GfnVw53dX9kO/Bw== - dependencies: - "@loaders.gl/loader-utils" "4.2.4" - "@loaders.gl/schema" "4.2.4" - fast-xml-parser "^4.2.5" - -"@loaders.gl/zip@4.2.4": - version "4.2.4" - resolved "https://registry.yarnpkg.com/@loaders.gl/zip/-/zip-4.2.4.tgz#eea8143f69d4f8bc0ca69ac0dcf132052af13707" - integrity sha512-jhKytc9Kg8ie6wLqyVrRtr/1azCz7QPzKyEtsQ697YS/XXyG5vcBv1LWGMe1M5leTj9+g0AhJly4y/heIxjMlg== - dependencies: - "@loaders.gl/compression" "4.2.4" - "@loaders.gl/crypto" "4.2.4" - "@loaders.gl/loader-utils" "4.2.4" - jszip "^3.1.5" - md5 "^2.3.0" - -"@luma.gl/constants@9.0.27", "@luma.gl/constants@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-9.0.27.tgz#65d65fa1ea407fd5f74bfa92dfba43261be33763" - integrity sha512-NBkMim3u0xt4UDe4e69L6E/pq5XNxfX60GrggJDzfilVRfIbx5XwKhBXTyNjjtNEk4oc6uYLHWd/05jGRHcfLg== - -"@luma.gl/core@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-9.0.27.tgz#dc90b75d5715f3e0a2b25e165a4ad46994b0cf7a" - integrity sha512-7OXM8ZknTuqt10nL8XHg3YzaHESzU2pSh+6BknLJbLM+UjNWOkDHArF6pRYu96Om0QsnOMK/RXKqXBr+Ni0gvw== - dependencies: - "@math.gl/types" "^4.0.0" - "@probe.gl/env" "^4.0.2" - "@probe.gl/log" "^4.0.2" - "@probe.gl/stats" "^4.0.2" - "@types/offscreencanvas" "^2019.6.4" - -"@luma.gl/engine@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/engine/-/engine-9.0.27.tgz#d59c718d83cffbb9315e9ae8e53544a701960078" - integrity sha512-O4e7RbIjBJX5WLs8HJLjpccYEkcans4pz8+TI8Y7BO7gDq9ZbEASbVd5CT53jFLfTjnRuqAOpElfaXwQ/B7oWg== - dependencies: - "@luma.gl/shadertools" "9.0.27" - "@math.gl/core" "^4.0.0" - "@probe.gl/log" "^4.0.2" - "@probe.gl/stats" "^4.0.2" - -"@luma.gl/gltf@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/gltf/-/gltf-9.0.27.tgz#505f5a107bd39a6ecdf50be36cdaa84923676ef3" - integrity sha512-AeYdX25G35KKGnGVzIkrKl8ni9SWVo0VP/9lfMyEom3syIBYlWtkPLwJ2Gm6SU4ZZfcpWK/17UgK2r2TSWFIJw== - dependencies: - "@loaders.gl/textures" "^4.2.0" - "@luma.gl/shadertools" "9.0.27" - "@math.gl/core" "^4.0.0" - -"@luma.gl/shadertools@9.0.27", "@luma.gl/shadertools@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-9.0.27.tgz#96ccb105afd79dbe93fad0ca763537635a5e666e" - integrity sha512-JcOuYH2Fh4uljinXKbR04en1dqEthlJNdqV5efQ0fE9NetJul7Pkq+N1v/Oo8/vmJn9ZqEC49dgZHwtbzY8UnQ== - dependencies: - "@math.gl/core" "^4.0.0" - "@math.gl/types" "^4.0.0" - wgsl_reflect "^1.0.1" - -"@luma.gl/webgl@~9.0.27": - version "9.0.27" - resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-9.0.27.tgz#cdf2bc4292ecc35e95846b0dd17eaea0af684c85" - integrity sha512-GOzOiDfTFgT4If1XSeCqXswKrgXVwTyuf/1W21Vv7fs5inub5p3LISmZglrt/RcdaGyXQQ5zEqf/+x67dGTeYw== - dependencies: - "@luma.gl/constants" "9.0.27" - "@probe.gl/env" "^4.0.2" - "@mapbox/extent@0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@mapbox/extent/-/extent-0.4.0.tgz#3e591f32e1f0c3981c864239f7b0ac06e610f8a9" @@ -2510,11 +2095,6 @@ resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== -"@mapbox/martini@^0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@mapbox/martini/-/martini-0.2.0.tgz#1af70211fbe994abf26e37f1388ca69c02cd43b4" - integrity sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ== - "@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" @@ -2525,23 +2105,11 @@ resolved "https://registry.yarnpkg.com/@mapbox/sphericalmercator/-/sphericalmercator-1.2.0.tgz#55d4896be906bfff859e22a1d72267329a0fff90" integrity sha512-ZTOuuwGuMOJN+HEmG/68bSEw15HHaMWmQ5gdTsWdWsjDe56K1kGvLOK6bOSC8gWgIvEO0w6un/2Gvv1q5hJSkQ== -"@mapbox/tile-cover@3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@mapbox/tile-cover/-/tile-cover-3.0.1.tgz#ad0dbe69d02e4e9ff74bf228b3ee8fa533034210" - integrity sha512-R8aoFY/87HWBOL9E2eBqzOY2lpfWYXCcTNgBpIxAv67rqQeD4IfnHD0iPXg/Z1cqXrklegEYZCp/7ZR/RsWqBQ== - dependencies: - tilebelt "^1.0.1" - "@mapbox/tiny-sdf@^1.1.1": version "1.2.5" resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== -"@mapbox/tiny-sdf@^2.0.5": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282" - integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA== - "@mapbox/unitbezier@^0.0.0": version "0.0.0" resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" @@ -2559,53 +2127,6 @@ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== -"@math.gl/core@4.1.0", "@math.gl/core@^4.0.0", "@math.gl/core@^4.0.1": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/core/-/core-4.1.0.tgz#2f4a1644c6f8fb50aacae57a02f1297f933aefbd" - integrity sha512-FrdHBCVG3QdrworwrUSzXIaK+/9OCRLscxI2OUy6sLOHyHgBMyfnEGs99/m3KNvs+95BsnQLWklVfpKfQzfwKA== - dependencies: - "@math.gl/types" "4.1.0" - -"@math.gl/culling@^4.0.0", "@math.gl/culling@^4.0.1": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/culling/-/culling-4.1.0.tgz#efab3137c2964a8a307aa54345481100f0b603ab" - integrity sha512-jFmjFEACnP9kVl8qhZxFNhCyd47qPfSVmSvvjR0/dIL6R9oD5zhR1ub2gN16eKDO/UM7JF9OHKU3EBIfeR7gtg== - dependencies: - "@math.gl/core" "4.1.0" - "@math.gl/types" "4.1.0" - -"@math.gl/geospatial@^4.0.0", "@math.gl/geospatial@^4.0.1": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/geospatial/-/geospatial-4.1.0.tgz#be7c73842f7744b270a7cdb578edf76859d7d153" - integrity sha512-BzsUhpVvnmleyYF6qdqJIip6FtIzJmnWuPTGhlBuPzh7VBHLonCFSPtQpbkRuoyAlbSyaGXcVt6p6lm9eK2vtg== - dependencies: - "@math.gl/core" "4.1.0" - "@math.gl/types" "4.1.0" - -"@math.gl/polygon@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/polygon/-/polygon-4.1.0.tgz#27d8117f82689f59e099957ab68ba26ab35ed100" - integrity sha512-YA/9PzaCRHbIP5/0E9uTYrqe+jsYTQoqoDWhf6/b0Ixz8bPZBaGDEafLg3z7ffBomZLacUty9U3TlPjqMtzPjA== - dependencies: - "@math.gl/core" "4.1.0" - -"@math.gl/sun@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/sun/-/sun-4.1.0.tgz#f08f6de402169734af41cc982a5efa44c792deef" - integrity sha512-i3q6OCBLSZ5wgZVhXg+X7gsjY/TUtuFW/2KBiq/U1ypLso3S4sEykoU/MGjxUv1xiiGtr+v8TeMbO1OBIh/HmA== - -"@math.gl/types@4.1.0", "@math.gl/types@^4.0.0", "@math.gl/types@^4.0.1": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/types/-/types-4.1.0.tgz#ce28c06bcfe07d21311e00aeb25de82fecf7f393" - integrity sha512-clYZdHcmRvMzVK5fjeDkQlHUzXQSNdZ7s4xOqC3nJPgz4C/TZkUecTo9YS4PruZqtDda/ag4erndP0MIn40dGA== - -"@math.gl/web-mercator@^4.0.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@math.gl/web-mercator/-/web-mercator-4.1.0.tgz#b244112b2805ba68cdecc76f3d12578d05271a1d" - integrity sha512-HZo3vO5GCMkXJThxRJ5/QYUYRr3XumfT8CzNNCwoJfinxy5NtKUd7dusNTXn7yJ40UoB8FMIwkVwNlqaiRZZAw== - dependencies: - "@math.gl/core" "4.1.0" - "@mischnic/json-sourcemap@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" @@ -3103,23 +2624,6 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@probe.gl/env@4.0.9", "@probe.gl/env@^4.0.2", "@probe.gl/env@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@probe.gl/env/-/env-4.0.9.tgz#cd0ed5214ed68021f3facc82cd885faebad21642" - integrity sha512-AOmVMD0/j78mX+k4+qX7ZhE0sY9H+EaJgIO6trik0BwV6VcrwxTGCGFAeuRsIGhETDnye06tkLXccYatYxAYwQ== - -"@probe.gl/log@^4.0.2", "@probe.gl/log@^4.0.4", "@probe.gl/log@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@probe.gl/log/-/log-4.0.9.tgz#5971bb12558c470634f7e30b490252965af22c2a" - integrity sha512-ebuZaodSRE9aC+3bVC7cKRHT8garXeT1jTbj1R5tQRqQYc9iGeT3iemVOHx5bN9Q6gAs/0j54iPI+1DvWMAW4A== - dependencies: - "@probe.gl/env" "4.0.9" - -"@probe.gl/stats@^4.0.2", "@probe.gl/stats@^4.0.9": - version "4.0.9" - resolved "https://registry.yarnpkg.com/@probe.gl/stats/-/stats-4.0.9.tgz#3a175c1a0207d54bf911bd01f4f5414b9f3e6f2a" - integrity sha512-Q9Xt/sJUQaMsbjRKjOscv2t7wXIymTrOEJ4a3da4FTCn7bkKvcdxdyFAQySCrtPxE+YZ5I5lXpWPgv9BwmpE1g== - "@quickbaseoss/babel-plugin-styled-components-css-namespace@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@quickbaseoss/babel-plugin-styled-components-css-namespace/-/babel-plugin-styled-components-css-namespace-1.0.1.tgz#4e96327114b05d09224598727e4637d454db5639" @@ -3427,14 +2931,6 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/boolean-clockwise@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz#3302b7dac62c5e291a0789e29af7283387fa9deb" - integrity sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA== - dependencies: - "@turf/helpers" "^5.1.5" - "@turf/invariant" "^5.1.5" - "@turf/boolean-disjoint@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/boolean-disjoint/-/boolean-disjoint-7.1.0.tgz#2ed06023f369ffc2bccfec463be13d7db2193acf" @@ -3469,13 +2965,6 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/clone@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@turf/clone/-/clone-5.1.5.tgz#253e8d35477181976e33adfab50a0f02a7f0e367" - integrity sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg== - dependencies: - "@turf/helpers" "^5.1.5" - "@turf/envelope@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/envelope/-/envelope-7.1.0.tgz#0c50c62a643eab6329d971898d49c7ef1409cbc3" @@ -3487,11 +2976,6 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/helpers@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-5.1.5.tgz#153405227ab933d004a5bb9641a9ed999fcbe0cf" - integrity sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw== - "@turf/helpers@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-7.1.0.tgz#eb734e291c9c205822acdd289fe20e91c3cb1641" @@ -3500,13 +2984,6 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/invariant@^5.1.5": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-5.2.0.tgz#f0150ff7290b38577b73d088b7932c1ee0aa90a7" - integrity sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA== - dependencies: - "@turf/helpers" "^5.1.5" - "@turf/invariant@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-7.1.0.tgz#c90cffa093291316b597212396d68bf9e465cf2e" @@ -3526,13 +3003,6 @@ sweepline-intersections "^1.5.0" tslib "^2.6.2" -"@turf/meta@^5.1.5": - version "5.2.0" - resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-5.2.0.tgz#3b1ad485ee0c3b0b1775132a32c384d53e4ba53d" - integrity sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q== - dependencies: - "@turf/helpers" "^5.1.5" - "@turf/meta@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-7.1.0.tgz#b2af85afddd0ef08aeae8694a12370a4f06b6d13" @@ -3551,17 +3021,6 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" -"@turf/rewind@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@turf/rewind/-/rewind-5.1.5.tgz#9ea3db4a68b73c1fd1dd11f57631b143cfefa1c9" - integrity sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw== - dependencies: - "@turf/boolean-clockwise" "^5.1.5" - "@turf/clone" "^5.1.5" - "@turf/helpers" "^5.1.5" - "@turf/invariant" "^5.1.5" - "@turf/meta" "^5.1.5" - "@turist/fetch@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.2.0.tgz#57df869df1cd9b299588554eec4b8543effcc714" @@ -3607,13 +3066,6 @@ dependencies: "@babel/types" "^7.20.7" -"@types/brotli@^1.3.0": - version "1.3.4" - resolved "https://registry.yarnpkg.com/@types/brotli/-/brotli-1.3.4.tgz#3eefc5493218a99141771f351142dd640efde5d8" - integrity sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw== - dependencies: - "@types/node" "*" - "@types/cacheable-request@^6.0.1": version "6.0.3" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" @@ -3646,33 +3098,6 @@ dependencies: "@types/node" "*" -"@types/crypto-js@^4.0.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" - integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== - -"@types/d3-array@^3.0.2": - version "3.2.1" - resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" - integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== - -"@types/d3-color@^1.4.2": - version "1.4.5" - resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.5.tgz#23bb1afda325549c6314ab60aa2aa28c4c6b1c37" - integrity sha512-5sNP3DmtSnSozxcjqmzQKsDOuVJXZkceo1KJScDc1982kk/TS9mTPc6lpli1gTu1MIBF1YWutpHpjucNWcIj5g== - -"@types/d3-scale@^3.0.0": - version "3.3.5" - resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-3.3.5.tgz#c89ff1550a4246f717e3c2e35deb35e183a338ba" - integrity sha512-YOpKj0kIEusRf7ofeJcSZQsvKbnTwpe1DUF+P2qsotqG53kEsjm7EzzliqQxMkAWdkZcHrg5rRhB4JiDOQPX+A== - dependencies: - "@types/d3-time" "^2" - -"@types/d3-time@^2": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-2.1.4.tgz#43587aa57d565ab60a1d2201edeebc497d5c1252" - integrity sha512-BTfLsxTeo7yFxI/haOOf1ZwJ6xKgQLT9dCp+EcmQv87Gox6X+oKl4mLKfO6fnWm3P22+A6DknMNEZany8ql2Rw== - "@types/debug@^0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" @@ -3707,7 +3132,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/geojson@^7946.0.10", "@types/geojson@^7946.0.7", "@types/geojson@^7946.0.8": +"@types/geojson@^7946.0.10": version "7946.0.14" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== @@ -3733,11 +3158,6 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/google.maps@^3.48.6": - version "3.58.1" - resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.58.1.tgz#71ce3dec44de1452f56641d2c87c7dd8ea964b4d" - integrity sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ== - "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -3745,11 +3165,6 @@ dependencies: "@types/node" "*" -"@types/hammerjs@^2.0.41": - version "2.0.45" - resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.45.tgz#ffa764bb68a66c08db6efb9c816eb7be850577b1" - integrity sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ== - "@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" @@ -3844,16 +3259,6 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== -"@types/offscreencanvas@^2019.6.4": - version "2019.7.3" - resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz#90267db13f64d6e9ccb5ae3eac92786a7c77a516" - integrity sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A== - -"@types/pako@^1.0.1": - version "1.0.7" - resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.7.tgz#aa0e4af9855d81153a29ff84cc44cce25298eda9" - integrity sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A== - "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" @@ -4401,7 +3806,7 @@ arg@^5.0.2: resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.10, argparse@^1.0.7: +argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -4956,7 +4361,7 @@ base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base64-js@^1.1.2, base64-js@^1.3.1: +base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -5077,13 +4482,6 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" -brotli@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.3.tgz#7365d8cc00f12cf765d2b2c898716bcf4b604d48" - integrity sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg== - dependencies: - base64-js "^1.1.2" - browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.6.6: version "4.23.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" @@ -5101,11 +4499,6 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" -buf-compare@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" - integrity sha512-Bvx4xH00qweepGc43xFvMs5BKASXTbHaHm6+kDYIK9p/4iFwjATQkmPKHQSgJZzKbAymhztRbXUf1Nqhzl73/Q== - buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -5244,13 +4637,6 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" -cartocolor@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/cartocolor/-/cartocolor-5.0.2.tgz#182050da45abe7f14e075df9e3a732ea4489c153" - integrity sha512-Ihb/wU5V6BVbHwapd8l/zg7bnhZ4YPFVfa7quSpL86lfkPJSf4YuNBT+EvesPRP5vSqhl6vZVsQJwCR8alBooQ== - dependencies: - colorbrewer "1.5.6" - chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -5339,11 +4725,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -charenc@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" - integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== - check-more-types@2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" @@ -5539,11 +4920,6 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" -colorbrewer@1.5.6: - version "1.5.6" - resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.5.6.tgz#5b6c81bcf2ee584642375143b210a9049d9e5ab5" - integrity sha512-fONg2pGXyID8zNgKHBlagW8sb/AMShGzj4rRJfz5biZ7iuHQZYquSCLE/Co1oSQFmt/vvwjyezJCejQl7FG/tg== - colord@^2.9.1: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -5735,14 +5111,6 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" -core-assert@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" - integrity sha512-IG97qShIP+nrJCXMCgkNZgH7jZQ4n8RpPyPeXX++T6avR/KhLhgLiHKoEn5Rc1KjfycSfA9DMa6m+4C4eguHhw== - dependencies: - buf-compare "^1.0.0" - is-error "^2.2.0" - core-js-compat@3.31.0: version "3.31.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.0.tgz#4030847c0766cc0e803dcdfb30055d7ef2064bf1" @@ -5853,11 +5221,6 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -crypt@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" - integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== - crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -6079,7 +5442,7 @@ d3-chord@3: dependencies: d3-path "1 - 3" -"d3-color@1 - 3", d3-color@3, d3-color@^3.1.0: +"d3-color@1 - 3", d3-color@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== @@ -6146,7 +5509,7 @@ d3-force@3: d3-quadtree "1 - 3" d3-timer "1 - 3" -"d3-format@1 - 3", d3-format@3, d3-format@^3.1.0: +"d3-format@1 - 3", d3-format@3: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== @@ -6158,11 +5521,6 @@ d3-geo@3: dependencies: d3-array "2.5.0 - 3" -d3-hexbin@^0.2.1: - version "0.2.2" - resolved "https://registry.yarnpkg.com/d3-hexbin/-/d3-hexbin-0.2.2.tgz#9c5837dacfd471ab05337a9e91ef10bfc4f98831" - integrity sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w== - d3-hierarchy@3: version "3.1.2" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" @@ -6203,7 +5561,7 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@4, d3-scale@^4.0.0: +d3-scale@4: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -6407,28 +5765,6 @@ decimal.js@^10.4.2: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== -deck.gl@^9.0.33: - version "9.0.33" - resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.33.tgz#4bee04859dcb2bcaeb44a6341a9e115ba4c54d1b" - integrity sha512-XQK40kkJOBXvPweALtR9dt+BoEkpnVjYtwLsrLLihVsuX0ZrN32lA41k+wzBS2lJpkMvCIFzeYQJgncJHARWSg== - dependencies: - "@deck.gl/aggregation-layers" "9.0.33" - "@deck.gl/arcgis" "9.0.33" - "@deck.gl/carto" "9.0.33" - "@deck.gl/core" "9.0.33" - "@deck.gl/extensions" "9.0.33" - "@deck.gl/geo-layers" "9.0.33" - "@deck.gl/google-maps" "9.0.33" - "@deck.gl/json" "9.0.33" - "@deck.gl/layers" "9.0.33" - "@deck.gl/mapbox" "9.0.33" - "@deck.gl/mesh-layers" "9.0.33" - "@deck.gl/react" "9.0.33" - "@deck.gl/widgets" "9.0.33" - "@loaders.gl/core" "^4.2.0" - "@luma.gl/core" "~9.0.27" - "@luma.gl/engine" "~9.0.27" - decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -6480,13 +5816,6 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deep-strict-equal@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4" - integrity sha512-3daSWyvZ/zwJvuMGlzG1O+Ow0YSadGfb3jsh9xoCutv2tWyB9dA4YvR9L9/fSdDZa2dByYQe+TqapSGUrjnkoA== - dependencies: - core-assert "^0.2.0" - deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -6737,17 +6066,12 @@ dotenv@^8.6.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -draco3d@1.5.7: - version "1.5.7" - resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.7.tgz#94f9bce293eb8920c159dc91a4ce9124a9e899e0" - integrity sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ== - duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -earcut@^2.2.2, earcut@^2.2.4: +earcut@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== @@ -7467,11 +6791,6 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" -esri-loader@^3.7.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/esri-loader/-/esri-loader-3.7.0.tgz#be2432664f53d4878b34ab903499248bbca3e087" - integrity sha512-cB1Sw9EQjtW4mtT7eFBjn/6VaaIWNTjmTd2asnnEyuZk1xVSFRMCfLZSBSjZM7ZarDcVu5WIjOP0t0MYVu4hVQ== - estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -7682,13 +7001,6 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== -fast-xml-parser@^4.2.5: - version "4.5.0" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" - integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== - dependencies: - strnum "^1.0.5" - fastest-levenshtein@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -7726,11 +7038,6 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^1.0.35" -fflate@0.7.4: - version "0.7.4" - resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" - integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== - figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -8667,7 +7974,7 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== -gl-matrix@^3.0.0, gl-matrix@^3.2.1: +gl-matrix@^3.2.1: version "3.4.3" resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== @@ -8861,16 +8168,6 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" -h3-js@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-4.1.0.tgz#f8c4a8ad36612489a954f1a0bb3f4b7657d364e5" - integrity sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ== - -hammerjs@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" - integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== - harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -9131,21 +8428,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== -image-size@^0.7.4: - version "0.7.5" - resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" - integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== - image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== -immediate@~3.0.5: - version "3.0.6" - resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" - integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== - immer@^9.0.7: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -9323,11 +8610,6 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" -is-buffer@~1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -9371,11 +8653,6 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== -is-error@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843" - integrity sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg== - is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" @@ -10224,11 +9501,6 @@ jsdom@^20.0.0: ws "^8.11.0" xml-name-validator "^4.0.0" -jsep@^0.3.0: - version "0.3.5" - resolved "https://registry.yarnpkg.com/jsep/-/jsep-0.3.5.tgz#3fd79ebd92f6f434e4857d5272aaeef7d948264d" - integrity sha512-AoRLBDc6JNnKjNcmonituEABS5bcfqDhQAWWXNTFrqu6nVXBpBAGfcoTGZMFlIrh9FjmE1CQyX9CTNwZrXMMDA== - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -10307,16 +9579,6 @@ jsonfile@^6.0.1: object.assign "^4.1.4" object.values "^1.1.6" -jszip@^3.1.5: - version "3.10.1" - resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" - integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== - dependencies: - lie "~3.3.0" - pako "~1.0.2" - readable-stream "~2.3.6" - setimmediate "^1.0.5" - kapellmeister@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/kapellmeister/-/kapellmeister-3.0.1.tgz#419b715cd221acda3db79892caedf63e1c9f7d25" @@ -10351,11 +9613,6 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== -ktx-parse@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.0.4.tgz#6fd3eca82490de8a1e48cb8367a9980451fa1ac4" - integrity sha512-LY3nrmfXl+wZZdPxgJ3ZmLvG+wkOZZP3/dr4RbQj1Pk3Qwz44esOOSFFVQJcNWpXAtiNIC66WgXufX/SYgYz6A== - language-subtag-registry@^0.3.20: version "0.3.23" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" @@ -10426,13 +9683,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -lie@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" - integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== - dependencies: - immediate "~3.0.5" - lilconfig@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -10630,16 +9880,6 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -long@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" - integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== - -long@^5.2.1: - version "5.2.3" - resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" - integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -10700,16 +9940,6 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" -lz4js@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/lz4js/-/lz4js-0.2.0.tgz#09f1a397cb2158f675146c3351dde85058cb322f" - integrity sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg== - -lzo-wasm@^0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/lzo-wasm/-/lzo-wasm-0.0.4.tgz#49152521a0b67a1da3a3e113dd38f150f303230a" - integrity sha512-VKlnoJRFrB8SdJhlVKvW5vI1gGwcZ+mvChEXcSX6r2xDNc/Q2FD9esfBmGCuPZdrJ1feO+YcVFd2PTk0c137Gw== - make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -10785,15 +10015,6 @@ mapbox-gl@1.13.1: tinyqueue "^2.0.3" vt-pbf "^3.1.1" -md5@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" - integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== - dependencies: - charenc "0.0.2" - crypt "0.0.2" - is-buffer "~1.1.6" - mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -10949,14 +10170,6 @@ mitt@^1.2.0: resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== -mjolnir.js@^2.7.0: - version "2.7.3" - resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.7.3.tgz#b71902edaa387f14c7fe6e9b1f611c0ce814240a" - integrity sha512-Z5z/+FzZqOSO3juSVKV3zcm4R2eAlWwlKMcqHmyFEJAaLILNcDKnIbnb4/kbcGyIuhtdWrzu8WOIR7uM6I34aw== - dependencies: - "@types/hammerjs" "^2.0.41" - hammerjs "^2.0.8" - mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -10976,13 +10189,6 @@ modularscale@^1.0.2: dependencies: lodash.isnumber "^3.0.0" -moment-timezone@^0.5.33: - version "0.5.45" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.45.tgz#cb685acd56bac10e69d93c536366eb65aa6bcf5c" - integrity sha512-HIWmqA86KcmCAhnMAN0wuDOARV/525R2+lOLotuGFzn4HO+FH+/645z2wx0Dt3iDv6/p61SIvKnDstISainhLQ== - dependencies: - moment "^2.29.4" - moment@^2.29.4: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" @@ -11483,11 +10689,6 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" -pako@1.0.11, pako@~1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" - integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== - param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -12061,11 +11262,6 @@ potpack@^1.0.1: resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== -preact@^10.17.0: - version "10.24.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.1.tgz#501e206d0a46667b6d0d8b780c7a65172239b2d0" - integrity sha512-PnBAwFI3Yjxxcxw75n6VId/5TFxNW/81zexzWD9jn1+eSrOP84NdsS38H5IkF/UH3frqRPT+MvuCoVHjTDTnDw== - prebuild-install@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" @@ -12250,13 +11446,6 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" -quadbin@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/quadbin/-/quadbin-0.2.0.tgz#ee962448bc009967a85c463790269af136d1cccb" - integrity sha512-bPgyRreIsFVwKxHRY+GFdaXatNmfQ1LzaQZj7aKEz07/gL893uWREhmRZpG6UuvlGHdTOPw/NGvqLsJica2goA== - dependencies: - "@mapbox/tile-cover" "3.0.1" - query-string@^6.14.1: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -12519,7 +11708,7 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.2.2: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -13228,11 +12417,6 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" -snappyjs@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/snappyjs/-/snappyjs-0.6.1.tgz#9bca9ff8c54b133a9cc84a71d22779e97fc51878" - integrity sha512-YIK6I2lsH072UE0aOFxxY1dPDCS43I5ktqHpeAsuLNYWkE5pGxRGWfDM4/vSUfNzXjC1Ivzt3qx31PCLmc9yqg== - socket.io-adapter@~2.5.2: version "2.5.5" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" @@ -13609,11 +12793,6 @@ strip-outer@^1.0.1: dependencies: escape-string-regexp "^1.0.2" -strnum@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" - integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== - strtok3@^6.2.4: version "6.3.0" resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" @@ -13857,24 +13036,11 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -texture-compressor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/texture-compressor/-/texture-compressor-1.0.2.tgz#b5a54a9e5f9eb884d7c33b149f1f23a429465cd4" - integrity sha512-dStVgoaQ11mA5htJ+RzZ51ZxIZqNOgWKAIvtjLrW1AliQQLCmrDqNzQZ8Jh91YealQ95DXt4MEduLzJmbs6lig== - dependencies: - argparse "^1.0.10" - image-size "^0.7.4" - through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -tilebelt@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tilebelt/-/tilebelt-1.0.1.tgz#3bbf7113b3fec468efb0d9148f4bb71ef126a21a" - integrity sha512-cxHzpa5JgsugY9NUVRH43gPaGJw/29LecAn4X7UGOP64+kB8pU4VQ3bIhSyfb5Mk4jDxwl3yk330L/EIhbJ5aw== - timers-ext@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" @@ -14531,11 +13697,6 @@ wgs84@0.0.0: resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" integrity sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ== -wgsl_reflect@^1.0.1: - version "1.0.12" - resolved "https://registry.yarnpkg.com/wgsl_reflect/-/wgsl_reflect-1.0.12.tgz#b6ee24abb94b67501f1a4e5fff92004a12ebe28d" - integrity sha512-hqORu1l+ed+tylMmcP/G78+rulEpq7TMKIxX/ktEgQzyYXcZL3FMkL8/c7xLMziy6+MXfjlOFWXqIal4KHilzg== - whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" @@ -14988,8 +14149,3 @@ yurnalist@^2.1.0: is-ci "^2.0.0" read "^1.0.7" strip-ansi "^5.2.0" - -zstd-codec@^0.1: - version "0.1.5" - resolved "https://registry.yarnpkg.com/zstd-codec/-/zstd-codec-0.1.5.tgz#c180193e4603ef74ddf704bcc835397d30a60e42" - integrity sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g== From a13d1f98b9e769206ef299269e48454e73e5ed00 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 24 Oct 2024 11:53:11 +0700 Subject: [PATCH 16/36] Update yarn.lock after globe-view PR merge --- yarn.lock | 864 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 855 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 60549a00..dcdd8dab 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1176,6 +1176,162 @@ resolved "https://registry.yarnpkg.com/@builder.io/partytown/-/partytown-0.7.6.tgz#697acea6b552167a4dd43ddd4827018aa42e0364" integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== +"@deck.gl/aggregation-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.33.tgz#e676907ada185157be49c75c2a4a97474d2cf421" + integrity sha512-h0YCvdY4nZctkW1/1zFuwyL3o3o1HwZamRRdImpi74ug0GiLayt0kc4jLBbId4Tlxm5q/N2lggrZkFa9TPytWA== + dependencies: + "@luma.gl/constants" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + "@math.gl/web-mercator" "^4.0.0" + d3-hexbin "^0.2.1" + +"@deck.gl/arcgis@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/arcgis/-/arcgis-9.0.33.tgz#421b654194103513bf9cb1957da38b697f992423" + integrity sha512-EFtDynelO4QhsAlBUNmrkfnx03YzLPJlxDbaeiABF08dWt8fztMvmEFAIseGLbh8/7O8mnqmRuBBo5tWeDgs5Q== + dependencies: + "@luma.gl/constants" "~9.0.27" + esri-loader "^3.7.0" + +"@deck.gl/carto@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/carto/-/carto-9.0.33.tgz#5ba027e133d0eafbd28cd9ff757258f22f16ee14" + integrity sha512-6eGWIWnVo/JPLhziVlcDEjTbTi1YF0NSHhJTkb8NjdE+lJ4cBzFxCfEaFXBACbLjqJwa6F1Mo+9VoDZVQcbkig== + dependencies: + "@loaders.gl/gis" "^4.2.0" + "@loaders.gl/loader-utils" "^4.2.0" + "@loaders.gl/mvt" "^4.2.0" + "@loaders.gl/schema" "^4.2.0" + "@loaders.gl/tiles" "^4.2.0" + "@luma.gl/core" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + "@math.gl/web-mercator" "^4.0.0" + "@types/d3-array" "^3.0.2" + "@types/d3-color" "^1.4.2" + "@types/d3-scale" "^3.0.0" + cartocolor "^5.0.2" + d3-array "^3.2.0" + d3-color "^3.1.0" + d3-format "^3.1.0" + d3-scale "^4.0.0" + earcut "^2.2.4" + h3-js "^4.1.0" + moment-timezone "^0.5.33" + pbf "^3.2.1" + quadbin "^0.2.0" + +"@deck.gl/core@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/core/-/core-9.0.33.tgz#e172cb94a92a8d71338c11bb306ddcc815fefc30" + integrity sha512-KTfanNfb0b/JKV6BFSzQ8uMC07Yy5zvzLnnfHLV4l4ostHdEaPHdBEr5IDhsSRMBgcYSfsML3NpTFncVom+IyA== + dependencies: + "@loaders.gl/core" "^4.2.0" + "@loaders.gl/images" "^4.2.0" + "@luma.gl/constants" "~9.0.27" + "@luma.gl/core" "~9.0.27" + "@luma.gl/engine" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + "@luma.gl/webgl" "~9.0.27" + "@math.gl/core" "^4.0.0" + "@math.gl/sun" "^4.0.0" + "@math.gl/web-mercator" "^4.0.0" + "@probe.gl/env" "^4.0.9" + "@probe.gl/log" "^4.0.9" + "@probe.gl/stats" "^4.0.9" + "@types/offscreencanvas" "^2019.6.4" + gl-matrix "^3.0.0" + mjolnir.js "^2.7.0" + +"@deck.gl/extensions@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/extensions/-/extensions-9.0.33.tgz#aec00910d6c570aa603d3331c482d0defb5c91b0" + integrity sha512-rxfz3/I4mf0WKW6EvntMmsn9F7rkkWYUweadUZSw12FQ50fm8GVDJ7k/2Mkzn1WJEocJW2Pv5mBRqsSWtUdyQQ== + dependencies: + "@luma.gl/constants" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + "@math.gl/core" "^4.0.0" + +"@deck.gl/geo-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/geo-layers/-/geo-layers-9.0.33.tgz#8a2a42f2db98530813ac401d7fb4a5ee3b779c0d" + integrity sha512-OmKfeliZclDIi24EfX/1geNR4gADKzRrF7M10oesREvTygkHdUxzeyEPpWqp0XS38qn80qfd3zttUN63+Vc0Bg== + dependencies: + "@loaders.gl/3d-tiles" "^4.2.0" + "@loaders.gl/gis" "^4.2.0" + "@loaders.gl/loader-utils" "^4.2.0" + "@loaders.gl/mvt" "^4.2.0" + "@loaders.gl/schema" "^4.2.0" + "@loaders.gl/terrain" "^4.2.0" + "@loaders.gl/tiles" "^4.2.0" + "@loaders.gl/wms" "^4.2.0" + "@luma.gl/gltf" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + "@math.gl/core" "^4.0.0" + "@math.gl/culling" "^4.0.0" + "@math.gl/web-mercator" "^4.0.0" + "@types/geojson" "^7946.0.8" + h3-js "^4.1.0" + long "^3.2.0" + +"@deck.gl/google-maps@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/google-maps/-/google-maps-9.0.33.tgz#98e940645ba84ba3d7fe19e5d9721a597876c558" + integrity sha512-/iKzWat4HozegCkYYStHTbFybiThsg0xVJRMLuNPy/ea5QlIZJoHsQv9ON3q7lJHrz8qOVYgyEYc+u6EzaP0rA== + dependencies: + "@luma.gl/constants" "~9.0.27" + "@math.gl/core" "^4.0.0" + "@types/google.maps" "^3.48.6" + +"@deck.gl/json@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/json/-/json-9.0.33.tgz#99578717b99cdfad2edefd7579411e3c055a1125" + integrity sha512-ZxIxWyVYyh1RJcZ1UwA1jH/cqv+KcSL39nJ6r24z9twuIgtWO3ezeEtHTwT/mnQGMfdHWcFwMTaDXUG8pOO2Iw== + dependencies: + jsep "^0.3.0" + +"@deck.gl/layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/layers/-/layers-9.0.33.tgz#57a57460a8fe5ef3c569ce0df24dd119dac467bf" + integrity sha512-PBtxOuSq5QmlQ1N27FUIC3sC5iLFqAsdyEXUkjzWMPdLGjeow5xx32j3E0iag//ShgW4jiffS1dqgYywbjwYhg== + dependencies: + "@loaders.gl/images" "^4.2.0" + "@loaders.gl/schema" "^4.2.0" + "@mapbox/tiny-sdf" "^2.0.5" + "@math.gl/core" "^4.0.0" + "@math.gl/polygon" "^4.0.0" + "@math.gl/web-mercator" "^4.0.0" + earcut "^2.2.4" + +"@deck.gl/mapbox@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/mapbox/-/mapbox-9.0.33.tgz#366b0d92c0c61197dc9e6b3b95d40ad030aad07b" + integrity sha512-8C4xOghijVnH0nHEAmt/QK8JUOIE5fg6rN/dmYuVe/QyLFsgh27l3MxY6EgWv1nnSTRCCnyX1i3tjxsdCKRPmw== + dependencies: + "@luma.gl/constants" "~9.0.27" + "@math.gl/web-mercator" "^4.0.0" + +"@deck.gl/mesh-layers@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/mesh-layers/-/mesh-layers-9.0.33.tgz#b64411c1ec688b04516f805bc23ebdfd24fe88f6" + integrity sha512-iN57iZ4Vq+/8polkVuJ7PsIOUpJbUVrRYywTGQgm8PaJ4WrN3wigo0fcrKfDzts7O2fluh37qg8aGNRBLuqMFQ== + dependencies: + "@loaders.gl/gltf" "^4.2.0" + "@luma.gl/gltf" "~9.0.27" + "@luma.gl/shadertools" "~9.0.27" + +"@deck.gl/react@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/react/-/react-9.0.33.tgz#e38268db0f2785828224723959f17298441f0339" + integrity sha512-ka9QAfv3GxqQJtXjyGcIjMFR8d24dEaaQ53qSjjWgb8gLjb+RQSKZ7YB18VMX1g3iq7xyDRJ3LobcRA14m0SEA== + +"@deck.gl/widgets@9.0.33": + version "9.0.33" + resolved "https://registry.yarnpkg.com/@deck.gl/widgets/-/widgets-9.0.33.tgz#33cb004bb78759955a52a2dc9b60c3f1fe2406ee" + integrity sha512-Uxwk4xx1Q17/j/nvythVBC/nRRr75lsTOuQl1+208ELUI6tpNCKlgFlZdKWjgXA/8KLPYhrx6y9apEfrHk4HEQ== + dependencies: + preact "^10.17.0" + "@discoveryjs/json-ext@0.5.7": version "0.5.7" resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" @@ -2017,6 +2173,267 @@ resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-2.5.3.tgz#c72e8b6faae31d925d23a6db0379cc3fe0216fdd" integrity sha512-cK+Elf3RjEzrm3SerAhrFWL5oQAsZSJ/LmjL1joIpTfEP1etJJ9CTRvdaV6XLYAxaEkfdhk/9hOvHLbR9yIhCA== +"@loaders.gl/3d-tiles@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/3d-tiles/-/3d-tiles-4.3.1.tgz#0db81612bdf44cfa80d83e0fb63505e722cf9140" + integrity sha512-ijAMFK92PCyp/eFpWazX05EMO0a2snT7yBeaHI+wKbp50XqTGAAvOZxM79wnXbdp4pgngOtPLKHc+BNMjnJ1pw== + dependencies: + "@loaders.gl/compression" "4.3.1" + "@loaders.gl/crypto" "4.3.1" + "@loaders.gl/draco" "4.3.1" + "@loaders.gl/gltf" "4.3.1" + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/math" "4.3.1" + "@loaders.gl/tiles" "4.3.1" + "@loaders.gl/zip" "4.3.1" + "@math.gl/core" "^4.1.0" + "@math.gl/culling" "^4.1.0" + "@math.gl/geospatial" "^4.1.0" + "@probe.gl/log" "^4.0.4" + long "^5.2.1" + +"@loaders.gl/compression@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/compression/-/compression-4.3.1.tgz#219ecb73e012e8dadae5ee6e8eb49bab946f8fae" + integrity sha512-ZKAfo7VUuvgxlqZFEYJIsY+jJ876i+ubUTryWqzDl60BXOf+oYr5i5bzeQwWa6UJusffnNKFakyDveTMzuwWkg== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + "@types/brotli" "^1.3.0" + "@types/pako" "^1.0.1" + fflate "0.7.4" + lzo-wasm "^0.0.4" + pako "1.0.11" + snappyjs "^0.6.1" + optionalDependencies: + brotli "^1.3.2" + lz4js "^0.2.0" + zstd-codec "^0.1" + +"@loaders.gl/core@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/core/-/core-4.3.1.tgz#08970197fbb271675cf3deeef9c014b0d9aa87bf" + integrity sha512-kFJQKpNmpYFdZdwPG1enZz18yUaUV9Mrr87KPb4hjf69p1UJuLQ2+wPxL/Ws9Di/aekAPoG9eCeSjyva8EIH0g== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + "@probe.gl/log" "^4.0.2" + +"@loaders.gl/crypto@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/crypto/-/crypto-4.3.1.tgz#cd60c127ce2f32d6fe93864703b5132d3a8ef421" + integrity sha512-+2WIIXP7p1usFHexA7EZzlmDFV0hkLQYBabkWzo43WYmG7JultqLzyzHxCdGnEEGzFesfpuv+BF9//TtGHTwxw== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + "@types/crypto-js" "^4.0.2" + +"@loaders.gl/draco@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/draco/-/draco-4.3.1.tgz#8ed52606157553d06a60afd262be03010a6e7993" + integrity sha512-PQjeiuYf2h0rorHVqYjs5VD7DX3yZHQok1p/RQMU915TejRRxRetP+ES90fdecnJ2Z13tiaLfI2aM6jI0qwEbg== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + draco3d "1.5.7" + +"@loaders.gl/gis@4.3.1", "@loaders.gl/gis@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/gis/-/gis-4.3.1.tgz#40f76300939a0ed0b4ed0a274eeb9df491bc7ab2" + integrity sha512-P3STq7efVFd7EoKPkeo8XoFrQ7XW+uvVZC8fousOhhicgxQJPYYFl3Hd64jpliXPW0MM3wQMmQ4J+VD8HEt1rQ== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@mapbox/vector-tile" "^1.3.1" + "@math.gl/polygon" "^4.1.0" + pbf "^3.2.1" + +"@loaders.gl/gltf@4.3.1", "@loaders.gl/gltf@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/gltf/-/gltf-4.3.1.tgz#8e742bac52c9333577ea6c9f2854d99e002c8fa1" + integrity sha512-pYGqo9HFWICMemoly7XgTbnLE7zMiKEp3VTSQiGZzXHadjMx7kv5cN91O5fqIeP6U7L4ZyGhqGHB/OK12TQQ7Q== + dependencies: + "@loaders.gl/draco" "4.3.1" + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/textures" "4.3.1" + "@math.gl/core" "^4.1.0" + +"@loaders.gl/images@4.3.1", "@loaders.gl/images@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/images/-/images-4.3.1.tgz#be419e2adb2a5d9f823069bc683adae6b0af2924" + integrity sha512-Epd64AtEo3oWrhZlftzMYNSC9b3fOfNXpKqw0itIJcSP3eC63JnUsBoYGNZ//vYMVXOCuMGJAAjCdMlNtez20Q== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + +"@loaders.gl/loader-utils@4.3.1", "@loaders.gl/loader-utils@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/loader-utils/-/loader-utils-4.3.1.tgz#050b517e52f6de54c57e4c0104e2e3492f3c2c21" + integrity sha512-+IGK18EHJCfw2N+x8Fqln7hea4HJ5U8ZLxOUyRDS455ActvB5FPaQox1ko2B9/kPHhVFynglS+xoWczHHzwJlQ== + dependencies: + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + "@probe.gl/log" "^4.0.2" + "@probe.gl/stats" "^4.0.2" + +"@loaders.gl/math@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/math/-/math-4.3.1.tgz#8fcd706ac8c8cadb5008f3557b857d24da6119c3" + integrity sha512-BDTtXq7y3z/sbuVQfVSyVcjJVXPnD++e22CHwMgyw7PxkKDC7CX8G+p04W/Mx9heNoszsCwLxoZGsjiQruOD3g== + dependencies: + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@math.gl/core" "^4.1.0" + +"@loaders.gl/mvt@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/mvt/-/mvt-4.3.1.tgz#f3643a2165d43f5ec7a502b1292669be8850d944" + integrity sha512-lzFVJ5E2lkWZTfKe88xPuTogVdjhHa0Ey39bIbxAPKmWf/5Cyf3RIAbgkAGoSxytc8OGYrB6rIO9+MuHOmPMag== + dependencies: + "@loaders.gl/gis" "4.3.1" + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@math.gl/polygon" "^4.1.0" + "@probe.gl/stats" "^4.0.0" + pbf "^3.2.1" + +"@loaders.gl/schema@4.3.1", "@loaders.gl/schema@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/schema/-/schema-4.3.1.tgz#41e02a27529392ddbf518c05f0ca37d9fc59f4f5" + integrity sha512-sKhP4rL4JMMVHrZWdYL8KxO7nbbjNIbzreL7ymwNV7zCAS8JW+QjCoV1hEicl5Ma8OP5Lte/cTxpOz8MiOmMXQ== + dependencies: + "@types/geojson" "^7946.0.7" + +"@loaders.gl/terrain@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/terrain/-/terrain-4.3.1.tgz#4db5461a1032d997f7895050c9be896c487f9cc6" + integrity sha512-6UyVYoyae4tajXe5dIncQ6gczZ91axYKpWoHbGvx38xr4qOQNZnGsmKnPe3m8RRdqwvJMRNveyyMfpoOMxHGEQ== + dependencies: + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@mapbox/martini" "^0.2.0" + +"@loaders.gl/textures@4.3.1", "@loaders.gl/textures@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/textures/-/textures-4.3.1.tgz#faff39c89904b3c1f70284c74a412fc3cf4e5c8c" + integrity sha512-efOg/7VTwYb5li6//6LTELhy70OpuzX8GV/Rlip8CW2pF0lr2NKqvZDwFb2Z+HvKJ0p+ZMSP+R0iNmgZynJgyA== + dependencies: + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/worker-utils" "4.3.1" + "@math.gl/types" "^4.1.0" + ktx-parse "^0.7.0" + texture-compressor "^1.0.2" + +"@loaders.gl/tiles@4.3.1", "@loaders.gl/tiles@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/tiles/-/tiles-4.3.1.tgz#3ab4e8df6bfba1ac0a70046b64e36f99d91ac561" + integrity sha512-/1lM/5y6zdPKUH9xdhCURHfHhk9nDk0eBAlKiHZPe/WFWGlNLaaDqbElMhuwUE91r6qZfYdkMeN+/ROEVmRqNw== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/math" "4.3.1" + "@math.gl/core" "^4.1.0" + "@math.gl/culling" "^4.1.0" + "@math.gl/geospatial" "^4.1.0" + "@math.gl/web-mercator" "^4.1.0" + "@probe.gl/stats" "^4.0.2" + +"@loaders.gl/wms@^4.2.0": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/wms/-/wms-4.3.1.tgz#82a7a068adaaea55e587e1dd546ef27da4e00d07" + integrity sha512-+bHHfdtXouSJfniCYtVPJefebrNTKQuwM7Nebq5Uas0G/e/lEiFu9KMDv9Ey2HZL7xCa7SI8mbKpSb10Dj6hGQ== + dependencies: + "@loaders.gl/images" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + "@loaders.gl/xml" "4.3.1" + "@turf/rewind" "^5.1.5" + deep-strict-equal "^0.2.0" + +"@loaders.gl/worker-utils@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/worker-utils/-/worker-utils-4.3.1.tgz#cf0f6762d22fff71591f41ba13da035e98f253d9" + integrity sha512-WpJ5N9jMI/ZDefVjqAMBWHux8tKUTW5jtj7espddKW1Q2DQIrdXywVQO0SouUiRJlcVot5s5BlHD0JZwKfAlZw== + +"@loaders.gl/xml@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/xml/-/xml-4.3.1.tgz#7c0979675ceeba783dfe1031c61b5357b636f1f6" + integrity sha512-y05TWJA/KoU+BNjBLMVgwxwy3pvACHkJKDiqop3jcm6nHz+tfy8FotscXY5MynKvW9S7OQ0IPl4OBWWYmS87bA== + dependencies: + "@loaders.gl/loader-utils" "4.3.1" + "@loaders.gl/schema" "4.3.1" + fast-xml-parser "^4.2.5" + +"@loaders.gl/zip@4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@loaders.gl/zip/-/zip-4.3.1.tgz#f863f4d6d380b562580b52256d8ac049d47a9bbf" + integrity sha512-P2OYeg6u3ZgBCrUbUuG7x7PzNCR7QZlA9y5JtE49eWZtc4e30VJFPuzwck77U04/TAK5g7LfkUlMBQ+uhN2UNg== + dependencies: + "@loaders.gl/compression" "4.3.1" + "@loaders.gl/crypto" "4.3.1" + "@loaders.gl/loader-utils" "4.3.1" + jszip "^3.1.5" + md5 "^2.3.0" + +"@luma.gl/constants@9.0.27", "@luma.gl/constants@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/constants/-/constants-9.0.27.tgz#65d65fa1ea407fd5f74bfa92dfba43261be33763" + integrity sha512-NBkMim3u0xt4UDe4e69L6E/pq5XNxfX60GrggJDzfilVRfIbx5XwKhBXTyNjjtNEk4oc6uYLHWd/05jGRHcfLg== + +"@luma.gl/core@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/core/-/core-9.0.27.tgz#dc90b75d5715f3e0a2b25e165a4ad46994b0cf7a" + integrity sha512-7OXM8ZknTuqt10nL8XHg3YzaHESzU2pSh+6BknLJbLM+UjNWOkDHArF6pRYu96Om0QsnOMK/RXKqXBr+Ni0gvw== + dependencies: + "@math.gl/types" "^4.0.0" + "@probe.gl/env" "^4.0.2" + "@probe.gl/log" "^4.0.2" + "@probe.gl/stats" "^4.0.2" + "@types/offscreencanvas" "^2019.6.4" + +"@luma.gl/engine@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/engine/-/engine-9.0.27.tgz#d59c718d83cffbb9315e9ae8e53544a701960078" + integrity sha512-O4e7RbIjBJX5WLs8HJLjpccYEkcans4pz8+TI8Y7BO7gDq9ZbEASbVd5CT53jFLfTjnRuqAOpElfaXwQ/B7oWg== + dependencies: + "@luma.gl/shadertools" "9.0.27" + "@math.gl/core" "^4.0.0" + "@probe.gl/log" "^4.0.2" + "@probe.gl/stats" "^4.0.2" + +"@luma.gl/gltf@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/gltf/-/gltf-9.0.27.tgz#505f5a107bd39a6ecdf50be36cdaa84923676ef3" + integrity sha512-AeYdX25G35KKGnGVzIkrKl8ni9SWVo0VP/9lfMyEom3syIBYlWtkPLwJ2Gm6SU4ZZfcpWK/17UgK2r2TSWFIJw== + dependencies: + "@loaders.gl/textures" "^4.2.0" + "@luma.gl/shadertools" "9.0.27" + "@math.gl/core" "^4.0.0" + +"@luma.gl/shadertools@9.0.27", "@luma.gl/shadertools@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/shadertools/-/shadertools-9.0.27.tgz#96ccb105afd79dbe93fad0ca763537635a5e666e" + integrity sha512-JcOuYH2Fh4uljinXKbR04en1dqEthlJNdqV5efQ0fE9NetJul7Pkq+N1v/Oo8/vmJn9ZqEC49dgZHwtbzY8UnQ== + dependencies: + "@math.gl/core" "^4.0.0" + "@math.gl/types" "^4.0.0" + wgsl_reflect "^1.0.1" + +"@luma.gl/webgl@~9.0.27": + version "9.0.27" + resolved "https://registry.yarnpkg.com/@luma.gl/webgl/-/webgl-9.0.27.tgz#cdf2bc4292ecc35e95846b0dd17eaea0af684c85" + integrity sha512-GOzOiDfTFgT4If1XSeCqXswKrgXVwTyuf/1W21Vv7fs5inub5p3LISmZglrt/RcdaGyXQQ5zEqf/+x67dGTeYw== + dependencies: + "@luma.gl/constants" "9.0.27" + "@probe.gl/env" "^4.0.2" + "@mapbox/extent@0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@mapbox/extent/-/extent-0.4.0.tgz#3e591f32e1f0c3981c864239f7b0ac06e610f8a9" @@ -2095,6 +2512,11 @@ resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz#f60b6a55a5d8e5ee908347d2ce4250b15103dc8e" integrity sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg== +"@mapbox/martini@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@mapbox/martini/-/martini-0.2.0.tgz#1af70211fbe994abf26e37f1388ca69c02cd43b4" + integrity sha512-7hFhtkb0KTLEls+TRw/rWayq5EeHtTaErgm/NskVoXmtgAQu/9D299aeyj6mzAR/6XUnYRp2lU+4IcrYRFjVsQ== + "@mapbox/point-geometry@0.1.0", "@mapbox/point-geometry@^0.1.0", "@mapbox/point-geometry@~0.1.0": version "0.1.0" resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" @@ -2105,11 +2527,23 @@ resolved "https://registry.yarnpkg.com/@mapbox/sphericalmercator/-/sphericalmercator-1.2.0.tgz#55d4896be906bfff859e22a1d72267329a0fff90" integrity sha512-ZTOuuwGuMOJN+HEmG/68bSEw15HHaMWmQ5gdTsWdWsjDe56K1kGvLOK6bOSC8gWgIvEO0w6un/2Gvv1q5hJSkQ== +"@mapbox/tile-cover@3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@mapbox/tile-cover/-/tile-cover-3.0.1.tgz#ad0dbe69d02e4e9ff74bf228b3ee8fa533034210" + integrity sha512-R8aoFY/87HWBOL9E2eBqzOY2lpfWYXCcTNgBpIxAv67rqQeD4IfnHD0iPXg/Z1cqXrklegEYZCp/7ZR/RsWqBQ== + dependencies: + tilebelt "^1.0.1" + "@mapbox/tiny-sdf@^1.1.1": version "1.2.5" resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz#424c620a96442b20402552be70a7f62a8407cc59" integrity sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw== +"@mapbox/tiny-sdf@^2.0.5": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz#9a1d33e5018093e88f6a4df2343e886056287282" + integrity sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA== + "@mapbox/unitbezier@^0.0.0": version "0.0.0" resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" @@ -2127,6 +2561,53 @@ resolved "https://registry.yarnpkg.com/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz#497c67a1cef50d1a2459ba60f315e448d2ad87fe" integrity sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q== +"@math.gl/core@4.1.0", "@math.gl/core@^4.0.0", "@math.gl/core@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/core/-/core-4.1.0.tgz#2f4a1644c6f8fb50aacae57a02f1297f933aefbd" + integrity sha512-FrdHBCVG3QdrworwrUSzXIaK+/9OCRLscxI2OUy6sLOHyHgBMyfnEGs99/m3KNvs+95BsnQLWklVfpKfQzfwKA== + dependencies: + "@math.gl/types" "4.1.0" + +"@math.gl/culling@^4.0.0", "@math.gl/culling@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/culling/-/culling-4.1.0.tgz#efab3137c2964a8a307aa54345481100f0b603ab" + integrity sha512-jFmjFEACnP9kVl8qhZxFNhCyd47qPfSVmSvvjR0/dIL6R9oD5zhR1ub2gN16eKDO/UM7JF9OHKU3EBIfeR7gtg== + dependencies: + "@math.gl/core" "4.1.0" + "@math.gl/types" "4.1.0" + +"@math.gl/geospatial@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/geospatial/-/geospatial-4.1.0.tgz#be7c73842f7744b270a7cdb578edf76859d7d153" + integrity sha512-BzsUhpVvnmleyYF6qdqJIip6FtIzJmnWuPTGhlBuPzh7VBHLonCFSPtQpbkRuoyAlbSyaGXcVt6p6lm9eK2vtg== + dependencies: + "@math.gl/core" "4.1.0" + "@math.gl/types" "4.1.0" + +"@math.gl/polygon@^4.0.0", "@math.gl/polygon@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/polygon/-/polygon-4.1.0.tgz#27d8117f82689f59e099957ab68ba26ab35ed100" + integrity sha512-YA/9PzaCRHbIP5/0E9uTYrqe+jsYTQoqoDWhf6/b0Ixz8bPZBaGDEafLg3z7ffBomZLacUty9U3TlPjqMtzPjA== + dependencies: + "@math.gl/core" "4.1.0" + +"@math.gl/sun@^4.0.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/sun/-/sun-4.1.0.tgz#f08f6de402169734af41cc982a5efa44c792deef" + integrity sha512-i3q6OCBLSZ5wgZVhXg+X7gsjY/TUtuFW/2KBiq/U1ypLso3S4sEykoU/MGjxUv1xiiGtr+v8TeMbO1OBIh/HmA== + +"@math.gl/types@4.1.0", "@math.gl/types@^4.0.0", "@math.gl/types@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/types/-/types-4.1.0.tgz#ce28c06bcfe07d21311e00aeb25de82fecf7f393" + integrity sha512-clYZdHcmRvMzVK5fjeDkQlHUzXQSNdZ7s4xOqC3nJPgz4C/TZkUecTo9YS4PruZqtDda/ag4erndP0MIn40dGA== + +"@math.gl/web-mercator@^4.0.0", "@math.gl/web-mercator@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@math.gl/web-mercator/-/web-mercator-4.1.0.tgz#b244112b2805ba68cdecc76f3d12578d05271a1d" + integrity sha512-HZo3vO5GCMkXJThxRJ5/QYUYRr3XumfT8CzNNCwoJfinxy5NtKUd7dusNTXn7yJ40UoB8FMIwkVwNlqaiRZZAw== + dependencies: + "@math.gl/core" "4.1.0" + "@mischnic/json-sourcemap@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.1.tgz#0ef9b015a8f575dd9a8720d9a6b4dbc988425906" @@ -2624,6 +3105,23 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== +"@probe.gl/env@4.0.9", "@probe.gl/env@^4.0.2", "@probe.gl/env@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@probe.gl/env/-/env-4.0.9.tgz#cd0ed5214ed68021f3facc82cd885faebad21642" + integrity sha512-AOmVMD0/j78mX+k4+qX7ZhE0sY9H+EaJgIO6trik0BwV6VcrwxTGCGFAeuRsIGhETDnye06tkLXccYatYxAYwQ== + +"@probe.gl/log@^4.0.2", "@probe.gl/log@^4.0.4", "@probe.gl/log@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@probe.gl/log/-/log-4.0.9.tgz#5971bb12558c470634f7e30b490252965af22c2a" + integrity sha512-ebuZaodSRE9aC+3bVC7cKRHT8garXeT1jTbj1R5tQRqQYc9iGeT3iemVOHx5bN9Q6gAs/0j54iPI+1DvWMAW4A== + dependencies: + "@probe.gl/env" "4.0.9" + +"@probe.gl/stats@^4.0.0", "@probe.gl/stats@^4.0.2", "@probe.gl/stats@^4.0.9": + version "4.0.9" + resolved "https://registry.yarnpkg.com/@probe.gl/stats/-/stats-4.0.9.tgz#3a175c1a0207d54bf911bd01f4f5414b9f3e6f2a" + integrity sha512-Q9Xt/sJUQaMsbjRKjOscv2t7wXIymTrOEJ4a3da4FTCn7bkKvcdxdyFAQySCrtPxE+YZ5I5lXpWPgv9BwmpE1g== + "@quickbaseoss/babel-plugin-styled-components-css-namespace@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@quickbaseoss/babel-plugin-styled-components-css-namespace/-/babel-plugin-styled-components-css-namespace-1.0.1.tgz#4e96327114b05d09224598727e4637d454db5639" @@ -2931,6 +3429,14 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" +"@turf/boolean-clockwise@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@turf/boolean-clockwise/-/boolean-clockwise-5.1.5.tgz#3302b7dac62c5e291a0789e29af7283387fa9deb" + integrity sha512-FqbmEEOJ4rU4/2t7FKx0HUWmjFEVqR+NJrFP7ymGSjja2SQ7Q91nnBihGuT+yuHHl6ElMjQ3ttsB/eTmyCycxA== + dependencies: + "@turf/helpers" "^5.1.5" + "@turf/invariant" "^5.1.5" + "@turf/boolean-disjoint@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/boolean-disjoint/-/boolean-disjoint-7.1.0.tgz#2ed06023f369ffc2bccfec463be13d7db2193acf" @@ -2965,6 +3471,13 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" +"@turf/clone@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@turf/clone/-/clone-5.1.5.tgz#253e8d35477181976e33adfab50a0f02a7f0e367" + integrity sha512-//pITsQ8xUdcQ9pVb4JqXiSqG4dos5Q9N4sYFoWghX21tfOV2dhc5TGqYOhnHrQS7RiKQL1vQ48kIK34gQ5oRg== + dependencies: + "@turf/helpers" "^5.1.5" + "@turf/envelope@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/envelope/-/envelope-7.1.0.tgz#0c50c62a643eab6329d971898d49c7ef1409cbc3" @@ -2976,6 +3489,11 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" +"@turf/helpers@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-5.1.5.tgz#153405227ab933d004a5bb9641a9ed999fcbe0cf" + integrity sha512-/lF+JR+qNDHZ8bF9d+Cp58nxtZWJ3sqFe6n3u3Vpj+/0cqkjk4nXKYBSY0azm+GIYB5mWKxUXvuP/m0ZnKj1bw== + "@turf/helpers@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/helpers/-/helpers-7.1.0.tgz#eb734e291c9c205822acdd289fe20e91c3cb1641" @@ -2984,6 +3502,13 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" +"@turf/invariant@^5.1.5": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-5.2.0.tgz#f0150ff7290b38577b73d088b7932c1ee0aa90a7" + integrity sha512-28RCBGvCYsajVkw2EydpzLdcYyhSA77LovuOvgCJplJWaNVyJYH6BOR3HR9w50MEkPqb/Vc/jdo6I6ermlRtQA== + dependencies: + "@turf/helpers" "^5.1.5" + "@turf/invariant@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/invariant/-/invariant-7.1.0.tgz#c90cffa093291316b597212396d68bf9e465cf2e" @@ -3003,6 +3528,13 @@ sweepline-intersections "^1.5.0" tslib "^2.6.2" +"@turf/meta@^5.1.5": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-5.2.0.tgz#3b1ad485ee0c3b0b1775132a32c384d53e4ba53d" + integrity sha512-ZjQ3Ii62X9FjnK4hhdsbT+64AYRpaI8XMBMcyftEOGSmPMUVnkbvuv3C9geuElAXfQU7Zk1oWGOcrGOD9zr78Q== + dependencies: + "@turf/helpers" "^5.1.5" + "@turf/meta@^7.1.0": version "7.1.0" resolved "https://registry.yarnpkg.com/@turf/meta/-/meta-7.1.0.tgz#b2af85afddd0ef08aeae8694a12370a4f06b6d13" @@ -3021,6 +3553,17 @@ "@types/geojson" "^7946.0.10" tslib "^2.6.2" +"@turf/rewind@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@turf/rewind/-/rewind-5.1.5.tgz#9ea3db4a68b73c1fd1dd11f57631b143cfefa1c9" + integrity sha512-Gdem7JXNu+G4hMllQHXRFRihJl3+pNl7qY+l4qhQFxq+hiU1cQoVFnyoleIqWKIrdK/i2YubaSwc3SCM7N5mMw== + dependencies: + "@turf/boolean-clockwise" "^5.1.5" + "@turf/clone" "^5.1.5" + "@turf/helpers" "^5.1.5" + "@turf/invariant" "^5.1.5" + "@turf/meta" "^5.1.5" + "@turist/fetch@^7.2.0": version "7.2.0" resolved "https://registry.yarnpkg.com/@turist/fetch/-/fetch-7.2.0.tgz#57df869df1cd9b299588554eec4b8543effcc714" @@ -3066,6 +3609,13 @@ dependencies: "@babel/types" "^7.20.7" +"@types/brotli@^1.3.0": + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/brotli/-/brotli-1.3.4.tgz#3eefc5493218a99141771f351142dd640efde5d8" + integrity sha512-cKYjgaS2DMdCKF7R0F5cgx1nfBYObN2ihIuPGQ4/dlIY6RpV7OWNwe9L8V4tTVKL2eZqOkNM9FM/rgTvLf4oXw== + dependencies: + "@types/node" "*" + "@types/cacheable-request@^6.0.1": version "6.0.3" resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.3.tgz#a430b3260466ca7b5ca5bfd735693b36e7a9d183" @@ -3098,6 +3648,33 @@ dependencies: "@types/node" "*" +"@types/crypto-js@^4.0.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@types/crypto-js/-/crypto-js-4.2.2.tgz#771c4a768d94eb5922cc202a3009558204df0cea" + integrity sha512-sDOLlVbHhXpAUAL0YHDUUwDZf3iN4Bwi4W6a0W0b+QcAezUbRtH4FVb+9J4h+XFPW7l/gQ9F8qC7P+Ec4k8QVQ== + +"@types/d3-array@^3.0.2": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@types/d3-array/-/d3-array-3.2.1.tgz#1f6658e3d2006c4fceac53fde464166859f8b8c5" + integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== + +"@types/d3-color@^1.4.2": + version "1.4.5" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.5.tgz#23bb1afda325549c6314ab60aa2aa28c4c6b1c37" + integrity sha512-5sNP3DmtSnSozxcjqmzQKsDOuVJXZkceo1KJScDc1982kk/TS9mTPc6lpli1gTu1MIBF1YWutpHpjucNWcIj5g== + +"@types/d3-scale@^3.0.0": + version "3.3.5" + resolved "https://registry.yarnpkg.com/@types/d3-scale/-/d3-scale-3.3.5.tgz#c89ff1550a4246f717e3c2e35deb35e183a338ba" + integrity sha512-YOpKj0kIEusRf7ofeJcSZQsvKbnTwpe1DUF+P2qsotqG53kEsjm7EzzliqQxMkAWdkZcHrg5rRhB4JiDOQPX+A== + dependencies: + "@types/d3-time" "^2" + +"@types/d3-time@^2": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@types/d3-time/-/d3-time-2.1.4.tgz#43587aa57d565ab60a1d2201edeebc497d5c1252" + integrity sha512-BTfLsxTeo7yFxI/haOOf1ZwJ6xKgQLT9dCp+EcmQv87Gox6X+oKl4mLKfO6fnWm3P22+A6DknMNEZany8ql2Rw== + "@types/debug@^0.0.30": version "0.0.30" resolved "https://registry.yarnpkg.com/@types/debug/-/debug-0.0.30.tgz#dc1e40f7af3b9c815013a7860e6252f6352a84df" @@ -3132,7 +3709,7 @@ resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== -"@types/geojson@^7946.0.10": +"@types/geojson@^7946.0.10", "@types/geojson@^7946.0.7", "@types/geojson@^7946.0.8": version "7946.0.14" resolved "https://registry.yarnpkg.com/@types/geojson/-/geojson-7946.0.14.tgz#319b63ad6df705ee2a65a73ef042c8271e696613" integrity sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg== @@ -3158,6 +3735,11 @@ "@types/minimatch" "*" "@types/node" "*" +"@types/google.maps@^3.48.6": + version "3.58.1" + resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.58.1.tgz#71ce3dec44de1452f56641d2c87c7dd8ea964b4d" + integrity sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ== + "@types/graceful-fs@^4.1.3": version "4.1.9" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" @@ -3165,6 +3747,11 @@ dependencies: "@types/node" "*" +"@types/hammerjs@^2.0.41": + version "2.0.46" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.46.tgz#381daaca1360ff8a7c8dff63f32e69745b9fb1e1" + integrity sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw== + "@types/http-cache-semantics@*", "@types/http-cache-semantics@^4.0.2": version "4.0.4" resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz#b979ebad3919799c979b17c72621c0bc0a31c6c4" @@ -3259,6 +3846,16 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== +"@types/offscreencanvas@^2019.6.4": + version "2019.7.3" + resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz#90267db13f64d6e9ccb5ae3eac92786a7c77a516" + integrity sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A== + +"@types/pako@^1.0.1": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@types/pako/-/pako-1.0.7.tgz#aa0e4af9855d81153a29ff84cc44cce25298eda9" + integrity sha512-YBtzT2ztNF6R/9+UXj2wTGFnC9NklAnASt3sC0h2m1bbH7G6FyBIkt4AN8ThZpNfxUo1b2iMVO0UawiJymEt8A== + "@types/parse-json@^4.0.0": version "4.0.2" resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" @@ -3806,7 +4403,7 @@ arg@^5.0.2: resolved "https://registry.yarnpkg.com/arg/-/arg-5.0.2.tgz#c81433cc427c92c4dcf4865142dbca6f15acd59c" integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== -argparse@^1.0.7: +argparse@^1.0.10, argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== @@ -4361,7 +4958,7 @@ base-x@^3.0.8: dependencies: safe-buffer "^5.0.1" -base64-js@^1.3.1: +base64-js@^1.1.2, base64-js@^1.3.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -4482,6 +5079,13 @@ braces@^3.0.3, braces@~3.0.2: dependencies: fill-range "^7.1.1" +brotli@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/brotli/-/brotli-1.3.3.tgz#7365d8cc00f12cf765d2b2c898716bcf4b604d48" + integrity sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg== + dependencies: + base64-js "^1.1.2" + browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.21.5, browserslist@^4.21.9, browserslist@^4.23.0, browserslist@^4.23.1, browserslist@^4.6.6: version "4.23.3" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" @@ -4499,6 +5103,11 @@ bser@2.1.1: dependencies: node-int64 "^0.4.0" +buf-compare@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buf-compare/-/buf-compare-1.0.1.tgz#fef28da8b8113a0a0db4430b0b6467b69730b34a" + integrity sha512-Bvx4xH00qweepGc43xFvMs5BKASXTbHaHm6+kDYIK9p/4iFwjATQkmPKHQSgJZzKbAymhztRbXUf1Nqhzl73/Q== + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" @@ -4637,6 +5246,13 @@ capital-case@^1.0.4: tslib "^2.0.3" upper-case-first "^2.0.2" +cartocolor@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/cartocolor/-/cartocolor-5.0.2.tgz#182050da45abe7f14e075df9e3a732ea4489c153" + integrity sha512-Ihb/wU5V6BVbHwapd8l/zg7bnhZ4YPFVfa7quSpL86lfkPJSf4YuNBT+EvesPRP5vSqhl6vZVsQJwCR8alBooQ== + dependencies: + colorbrewer "1.5.6" + chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" @@ -4725,6 +5341,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + check-more-types@2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" @@ -4920,6 +5541,11 @@ color@^4.2.3: color-convert "^2.0.1" color-string "^1.9.0" +colorbrewer@1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/colorbrewer/-/colorbrewer-1.5.6.tgz#5b6c81bcf2ee584642375143b210a9049d9e5ab5" + integrity sha512-fONg2pGXyID8zNgKHBlagW8sb/AMShGzj4rRJfz5biZ7iuHQZYquSCLE/Co1oSQFmt/vvwjyezJCejQl7FG/tg== + colord@^2.9.1: version "2.9.3" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.3.tgz#4f8ce919de456f1d5c1c368c307fe20f3e59fb43" @@ -5111,6 +5737,14 @@ copy-anything@^2.0.1: dependencies: is-what "^3.14.1" +core-assert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/core-assert/-/core-assert-0.2.1.tgz#f85e2cf9bfed28f773cc8b3fa5c5b69bdc02fe3f" + integrity sha512-IG97qShIP+nrJCXMCgkNZgH7jZQ4n8RpPyPeXX++T6avR/KhLhgLiHKoEn5Rc1KjfycSfA9DMa6m+4C4eguHhw== + dependencies: + buf-compare "^1.0.0" + is-error "^2.2.0" + core-js-compat@3.31.0: version "3.31.0" resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.31.0.tgz#4030847c0766cc0e803dcdfb30055d7ef2064bf1" @@ -5221,6 +5855,11 @@ cross-spawn@^7.0.2, cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + crypto-random-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" @@ -5442,7 +6081,7 @@ d3-chord@3: dependencies: d3-path "1 - 3" -"d3-color@1 - 3", d3-color@3: +"d3-color@1 - 3", d3-color@3, d3-color@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== @@ -5509,7 +6148,7 @@ d3-force@3: d3-quadtree "1 - 3" d3-timer "1 - 3" -"d3-format@1 - 3", d3-format@3: +"d3-format@1 - 3", d3-format@3, d3-format@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== @@ -5521,6 +6160,11 @@ d3-geo@3: dependencies: d3-array "2.5.0 - 3" +d3-hexbin@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/d3-hexbin/-/d3-hexbin-0.2.2.tgz#9c5837dacfd471ab05337a9e91ef10bfc4f98831" + integrity sha512-KS3fUT2ReD4RlGCjvCEm1RgMtp2NFZumdMu4DBzQK8AZv3fXRM6Xm8I4fSU07UXvH4xxg03NwWKWdvxfS/yc4w== + d3-hierarchy@3: version "3.1.2" resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz#b01cd42c1eed3d46db77a5966cf726f8c09160c6" @@ -5561,7 +6205,7 @@ d3-scale-chromatic@3: d3-color "1 - 3" d3-interpolate "1 - 3" -d3-scale@4: +d3-scale@4, d3-scale@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== @@ -5765,6 +6409,28 @@ decimal.js@^10.4.2: resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== +deck.gl@^9.0.33: + version "9.0.33" + resolved "https://registry.yarnpkg.com/deck.gl/-/deck.gl-9.0.33.tgz#4bee04859dcb2bcaeb44a6341a9e115ba4c54d1b" + integrity sha512-XQK40kkJOBXvPweALtR9dt+BoEkpnVjYtwLsrLLihVsuX0ZrN32lA41k+wzBS2lJpkMvCIFzeYQJgncJHARWSg== + dependencies: + "@deck.gl/aggregation-layers" "9.0.33" + "@deck.gl/arcgis" "9.0.33" + "@deck.gl/carto" "9.0.33" + "@deck.gl/core" "9.0.33" + "@deck.gl/extensions" "9.0.33" + "@deck.gl/geo-layers" "9.0.33" + "@deck.gl/google-maps" "9.0.33" + "@deck.gl/json" "9.0.33" + "@deck.gl/layers" "9.0.33" + "@deck.gl/mapbox" "9.0.33" + "@deck.gl/mesh-layers" "9.0.33" + "@deck.gl/react" "9.0.33" + "@deck.gl/widgets" "9.0.33" + "@loaders.gl/core" "^4.2.0" + "@luma.gl/core" "~9.0.27" + "@luma.gl/engine" "~9.0.27" + decode-uri-component@^0.2.0: version "0.2.2" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" @@ -5816,6 +6482,13 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +deep-strict-equal@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/deep-strict-equal/-/deep-strict-equal-0.2.0.tgz#4a078147a8ab57f6a0d4f5547243cd22f44eb4e4" + integrity sha512-3daSWyvZ/zwJvuMGlzG1O+Ow0YSadGfb3jsh9xoCutv2tWyB9dA4YvR9L9/fSdDZa2dByYQe+TqapSGUrjnkoA== + dependencies: + core-assert "^0.2.0" + deepmerge@^4.2.2, deepmerge@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" @@ -6066,12 +6739,17 @@ dotenv@^8.6.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +draco3d@1.5.7: + version "1.5.7" + resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.7.tgz#94f9bce293eb8920c159dc91a4ce9124a9e899e0" + integrity sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ== + duplexer@^0.1.1, duplexer@^0.1.2, duplexer@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== -earcut@^2.2.2: +earcut@^2.2.2, earcut@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.4.tgz#6d02fd4d68160c114825d06890a92ecaae60343a" integrity sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ== @@ -6791,6 +7469,11 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" +esri-loader@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/esri-loader/-/esri-loader-3.7.0.tgz#be2432664f53d4878b34ab903499248bbca3e087" + integrity sha512-cB1Sw9EQjtW4mtT7eFBjn/6VaaIWNTjmTd2asnnEyuZk1xVSFRMCfLZSBSjZM7ZarDcVu5WIjOP0t0MYVu4hVQ== + estraverse@^4.1.1: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" @@ -7001,6 +7684,13 @@ fast-uri@^3.0.1: resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.1.tgz#cddd2eecfc83a71c1be2cc2ef2061331be8a7134" integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw== +fast-xml-parser@^4.2.5: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== + dependencies: + strnum "^1.0.5" + fastest-levenshtein@^1.0.16: version "1.0.16" resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" @@ -7038,6 +7728,11 @@ fbjs@^3.0.0: setimmediate "^1.0.5" ua-parser-js "^1.0.35" +fflate@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.7.4.tgz#61587e5d958fdabb5a9368a302c25363f4f69f50" + integrity sha512-5u2V/CDW15QM1XbbgS+0DfPxVB+jUKhWEKuuFuHncbk3tEEqzmoXL+2KyOFuKGqOnmdIy0/davWF1CkuwtibCw== + figures@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -7974,7 +8669,7 @@ github-from-package@0.0.0: resolved "https://registry.yarnpkg.com/github-from-package/-/github-from-package-0.0.0.tgz#97fb5d96bfde8973313f20e8288ef9a167fa64ce" integrity sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw== -gl-matrix@^3.2.1: +gl-matrix@^3.0.0, gl-matrix@^3.2.1: version "3.4.3" resolved "https://registry.yarnpkg.com/gl-matrix/-/gl-matrix-3.4.3.tgz#fc1191e8320009fd4d20e9339595c6041ddc22c9" integrity sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA== @@ -8168,6 +8863,16 @@ gzip-size@^6.0.0: dependencies: duplexer "^0.1.2" +h3-js@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/h3-js/-/h3-js-4.1.0.tgz#f8c4a8ad36612489a954f1a0bb3f4b7657d364e5" + integrity sha512-LQhmMl1dRQQjMXPzJc7MpZ/CqPOWWuAvVEoVJM9n/s7vHypj+c3Pd5rLQCkAsOgAoAYKbNCsYFE++LF7MvSfCQ== + +hammerjs@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== + harmony-reflect@^1.4.6: version "1.6.2" resolved "https://registry.yarnpkg.com/harmony-reflect/-/harmony-reflect-1.6.2.tgz#31ecbd32e648a34d030d86adb67d4d47547fe710" @@ -8428,11 +9133,21 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== +image-size@^0.7.4: + version "0.7.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.7.5.tgz#269f357cf5797cb44683dfa99790e54c705ead04" + integrity sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + immer@^9.0.7: version "9.0.21" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.21.tgz#1e025ea31a40f24fb064f1fef23e931496330176" @@ -8610,6 +9325,11 @@ is-boolean-object@^1.1.0: call-bind "^1.0.2" has-tostringtag "^1.0.0" +is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" @@ -8653,6 +9373,11 @@ is-docker@^3.0.0: resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-3.0.0.tgz#90093aa3106277d8a77a5910dbae71747e15a200" integrity sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ== +is-error@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-error/-/is-error-2.2.2.tgz#c10ade187b3c93510c5470a5567833ee25649843" + integrity sha512-IOQqts/aHWbiisY5DuPJQ0gcbvaLFCa7fBa9xoLfxBZvQ+ZI/Zh9xoI7Gk+G64N0FdK4AbibytHht2tWgpJWLg== + is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" @@ -9501,6 +10226,11 @@ jsdom@^20.0.0: ws "^8.11.0" xml-name-validator "^4.0.0" +jsep@^0.3.0: + version "0.3.5" + resolved "https://registry.yarnpkg.com/jsep/-/jsep-0.3.5.tgz#3fd79ebd92f6f434e4857d5272aaeef7d948264d" + integrity sha512-AoRLBDc6JNnKjNcmonituEABS5bcfqDhQAWWXNTFrqu6nVXBpBAGfcoTGZMFlIrh9FjmE1CQyX9CTNwZrXMMDA== + jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -9579,6 +10309,16 @@ jsonfile@^6.0.1: object.assign "^4.1.4" object.values "^1.1.6" +jszip@^3.1.5: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + kapellmeister@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/kapellmeister/-/kapellmeister-3.0.1.tgz#419b715cd221acda3db79892caedf63e1c9f7d25" @@ -9613,6 +10353,11 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== +ktx-parse@^0.7.0: + version "0.7.1" + resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.7.1.tgz#d41514256d7d63acb8ef6ae62dc66f16efc1c39c" + integrity sha512-FeA3g56ksdFNwjXJJsc1CCc7co+AJYDp6ipIp878zZ2bU8kWROatLYf39TQEd4/XRSUvBXovQ8gaVKWPXsCLEQ== + language-subtag-registry@^0.3.20: version "0.3.23" resolved "https://registry.yarnpkg.com/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz#23529e04d9e3b74679d70142df3fd2eb6ec572e7" @@ -9683,6 +10428,13 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + lilconfig@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.1.0.tgz#78e23ac89ebb7e1bfbf25b18043de756548e7f52" @@ -9880,6 +10632,16 @@ lodash@^4.13.1, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17. resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== +long@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha512-ZYvPPOMqUwPoDsbJaR10iQJYnMuZhRTvHYl62ErLIEX7RgFlziSBUUvrt3OVfc47QlHHpzPZYP17g3Fv7oeJkg== + +long@^5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/long/-/long-5.2.3.tgz#a3ba97f3877cf1d778eccbcb048525ebb77499e1" + integrity sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -9940,6 +10702,16 @@ lru-queue@^0.1.0: dependencies: es5-ext "~0.10.2" +lz4js@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/lz4js/-/lz4js-0.2.0.tgz#09f1a397cb2158f675146c3351dde85058cb322f" + integrity sha512-gY2Ia9Lm7Ep8qMiuGRhvUq0Q7qUereeldZPP1PMEJxPtEWHJLqw9pgX68oHajBH0nzJK4MaZEA/YNV3jT8u8Bg== + +lzo-wasm@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/lzo-wasm/-/lzo-wasm-0.0.4.tgz#49152521a0b67a1da3a3e113dd38f150f303230a" + integrity sha512-VKlnoJRFrB8SdJhlVKvW5vI1gGwcZ+mvChEXcSX6r2xDNc/Q2FD9esfBmGCuPZdrJ1feO+YcVFd2PTk0c137Gw== + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" @@ -10015,6 +10787,15 @@ mapbox-gl@1.13.1: tinyqueue "^2.0.3" vt-pbf "^3.1.1" +md5@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== + dependencies: + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -10170,6 +10951,14 @@ mitt@^1.2.0: resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.2.0.tgz#cb24e6569c806e31bd4e3995787fe38a04fdf90d" integrity sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw== +mjolnir.js@^2.7.0: + version "2.7.3" + resolved "https://registry.yarnpkg.com/mjolnir.js/-/mjolnir.js-2.7.3.tgz#b71902edaa387f14c7fe6e9b1f611c0ce814240a" + integrity sha512-Z5z/+FzZqOSO3juSVKV3zcm4R2eAlWwlKMcqHmyFEJAaLILNcDKnIbnb4/kbcGyIuhtdWrzu8WOIR7uM6I34aw== + dependencies: + "@types/hammerjs" "^2.0.41" + hammerjs "^2.0.8" + mkdirp-classic@^0.5.2, mkdirp-classic@^0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" @@ -10189,6 +10978,13 @@ modularscale@^1.0.2: dependencies: lodash.isnumber "^3.0.0" +moment-timezone@^0.5.33: + version "0.5.46" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.46.tgz#a21aa6392b3c6b3ed916cd5e95858a28d893704a" + integrity sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw== + dependencies: + moment "^2.29.4" + moment@^2.29.4: version "2.30.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" @@ -10689,6 +11485,11 @@ package-json@^8.1.0: registry-url "^6.0.0" semver "^7.3.7" +pako@1.0.11, pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -11262,6 +12063,11 @@ potpack@^1.0.1: resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== +preact@^10.17.0: + version "10.24.3" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.24.3.tgz#086386bd47071e3b45410ef20844c21e23828f64" + integrity sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA== + prebuild-install@^7.1.1: version "7.1.2" resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-7.1.2.tgz#a5fd9986f5a6251fbc47e1e5c65de71e68c0a056" @@ -11446,6 +12252,13 @@ qs@6.11.0: dependencies: side-channel "^1.0.4" +quadbin@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/quadbin/-/quadbin-0.2.0.tgz#ee962448bc009967a85c463790269af136d1cccb" + integrity sha512-bPgyRreIsFVwKxHRY+GFdaXatNmfQ1LzaQZj7aKEz07/gL893uWREhmRZpG6UuvlGHdTOPw/NGvqLsJica2goA== + dependencies: + "@mapbox/tile-cover" "3.0.1" + query-string@^6.14.1: version "6.14.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" @@ -11708,7 +12521,7 @@ read@^1.0.7: dependencies: mute-stream "~0.0.4" -readable-stream@^2.2.2: +readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== @@ -12417,6 +13230,11 @@ snake-case@^3.0.4: dot-case "^3.0.4" tslib "^2.0.3" +snappyjs@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/snappyjs/-/snappyjs-0.6.1.tgz#9bca9ff8c54b133a9cc84a71d22779e97fc51878" + integrity sha512-YIK6I2lsH072UE0aOFxxY1dPDCS43I5ktqHpeAsuLNYWkE5pGxRGWfDM4/vSUfNzXjC1Ivzt3qx31PCLmc9yqg== + socket.io-adapter@~2.5.2: version "2.5.5" resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" @@ -12793,6 +13611,11 @@ strip-outer@^1.0.1: dependencies: escape-string-regexp "^1.0.2" +strnum@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" + integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== + strtok3@^6.2.4: version "6.3.0" resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" @@ -13036,11 +13859,24 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== +texture-compressor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/texture-compressor/-/texture-compressor-1.0.2.tgz#b5a54a9e5f9eb884d7c33b149f1f23a429465cd4" + integrity sha512-dStVgoaQ11mA5htJ+RzZ51ZxIZqNOgWKAIvtjLrW1AliQQLCmrDqNzQZ8Jh91YealQ95DXt4MEduLzJmbs6lig== + dependencies: + argparse "^1.0.10" + image-size "^0.7.4" + through@2, through@^2.3.6, through@~2.3, through@~2.3.1: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== +tilebelt@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/tilebelt/-/tilebelt-1.0.1.tgz#3bbf7113b3fec468efb0d9148f4bb71ef126a21a" + integrity sha512-cxHzpa5JgsugY9NUVRH43gPaGJw/29LecAn4X7UGOP64+kB8pU4VQ3bIhSyfb5Mk4jDxwl3yk330L/EIhbJ5aw== + timers-ext@^0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/timers-ext/-/timers-ext-0.1.8.tgz#b4e442f10b7624a29dd2aa42c295e257150cf16c" @@ -13697,6 +14533,11 @@ wgs84@0.0.0: resolved "https://registry.yarnpkg.com/wgs84/-/wgs84-0.0.0.tgz#34fdc555917b6e57cf2a282ed043710c049cdc76" integrity sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ== +wgsl_reflect@^1.0.1: + version "1.0.14" + resolved "https://registry.yarnpkg.com/wgsl_reflect/-/wgsl_reflect-1.0.14.tgz#2f5ddd8fa06167d0592e7b61f956c3bf4c0589dd" + integrity sha512-VYY1+5pNm3GE2I4ADNnlNBFTiLOsh3Cq/eeiwfMhjMzUwnlJOqJrzKUd/3owxL69txUfvgcQaB8M6ElVaBaAOA== + whatwg-encoding@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" @@ -14149,3 +14990,8 @@ yurnalist@^2.1.0: is-ci "^2.0.0" read "^1.0.7" strip-ansi "^5.2.0" + +zstd-codec@^0.1: + version "0.1.5" + resolved "https://registry.yarnpkg.com/zstd-codec/-/zstd-codec-0.1.5.tgz#c180193e4603ef74ddf704bcc835397d30a60e42" + integrity sha512-v3fyjpK8S/dpY/X5WxqTK3IoCnp/ZOLxn144GZVlNUjtwAchzrVo03h+oMATFhCIiJ5KTr4V3vDQQYz4RU684g== From aea0b75af644b93566fe2e4372e9ad96d02b715f Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 13:57:48 -0400 Subject: [PATCH 17/36] Move external link icon, reduce size --- src/components/external-link.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/external-link.js b/src/components/external-link.js index f4da8c4b..a60a39ca 100644 --- a/src/components/external-link.js +++ b/src/components/external-link.js @@ -23,14 +23,18 @@ export default function ExternalLink({ display: inline-flex; flex-flow: row nowrap; gap: 0.25rem; - align-items: baseline; + align-items: center; + svg { + width: 12px; + height: 12px; + flex-shrink: 0; + } @media screen and (min-width: ${breakpoints["sm"]}) { - flex-flow: row wrap; + /* flex-flow: row wrap; */ } `} data-cy={`${id}-link`} > - {label || children} + ) } From e6a13a3c90d7c5ab670f123b60d87411805d70d9 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 13:58:00 -0400 Subject: [PATCH 18/36] Update external link column in products table --- src/components/explore/products-table.js | 25 ++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/components/explore/products-table.js b/src/components/explore/products-table.js index 0163c840..7d0014bd 100644 --- a/src/components/explore/products-table.js +++ b/src/components/explore/products-table.js @@ -15,17 +15,14 @@ export function ProductsTable({ dois }) { css={` background: rgba(255, 255, 255, 0.06); border-spacing: 30px; + th:first-child { + padding-left: 1.25rem; + } `} > - - DATA PRODUCT - + DATA PRODUCT PLATFORMS INSTRUMENTS @@ -46,16 +43,24 @@ export function ProductsTable({ dois }) { href={`http://dx.doi.org/${doi.doi}`} css={` color: ${colors[NEGATIVE].linkText}; - display: block; + display: inline-flex; + flex-flow: row nowrap; + gap: 0.25rem; + align-items: center; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; - padding-left: 30px; + padding-left: 1.5rem; + svg { + width: 12px; + height: 12px; + flex-shrink: 0; + } `} data-cy={`doi-link`} > - {" "} {doi.shortname} + {" "} From 283bdcf5c726b02cb3d498283cb432c545a03596 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 14:00:22 -0400 Subject: [PATCH 19/36] Lint, update snapshots --- .../__snapshots__/data-section.test.js.snap | 12 ++-- .../__snapshots__/footer.test.js.snap | 48 +++++++-------- src/components/external-link.js | 5 +- .../overview-section.test.js.snap | 60 +++++++++---------- 4 files changed, 61 insertions(+), 64 deletions(-) diff --git a/src/components/__tests__/__snapshots__/data-section.test.js.snap b/src/components/__tests__/__snapshots__/data-section.test.js.snap index 43064e82..3db2951a 100644 --- a/src/components/__tests__/__snapshots__/data-section.test.js.snap +++ b/src/components/__tests__/__snapshots__/data-section.test.js.snap @@ -210,12 +210,17 @@ exports[`Data Section matches snapshot 1`] = ` CAMP2Ex P-3 Remotely Sensed Aerosol Data + + 10.5067/Airborne/CAMP2Ex_Aerosol_AircraftRemoteSensing_P3_Data_1 + - - 10.5067/Airborne/CAMP2Ex_Aerosol_AircraftRemoteSensing_P3_Data_1 -
  • + + API Documentation + - - API Documentation -
  • @@ -165,12 +165,17 @@ exports[`Footer renders correctly 1`] = ` >
  • + + ADMG Website + - - ADMG Website -
  • + + IMPACT Website + - - IMPACT Website -
  • @@ -514,12 +514,17 @@ exports[`Footer renders correctly 1`] = ` , Built by + + Development Seed + - - Development Seed - .
    diff --git a/src/components/external-link.js b/src/components/external-link.js index a60a39ca..5286164d 100644 --- a/src/components/external-link.js +++ b/src/components/external-link.js @@ -3,7 +3,7 @@ import PropTypes from "prop-types" import { POSITIVE, NEGATIVE } from "../utils/constants" import { PropTypeIsUrl } from "../utils/helpers" -import { colors, breakpoints } from "../theme" +import { colors } from "../theme" import { ExternalLinkIcon } from "../icons" export default function ExternalLink({ @@ -29,9 +29,6 @@ export default function ExternalLink({ height: 12px; flex-shrink: 0; } - @media screen and (min-width: ${breakpoints["sm"]}) { - /* flex-flow: row wrap; */ - } `} data-cy={`${id}-link`} > diff --git a/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap b/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap index 5a36ff51..1abccea5 100644 --- a/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap +++ b/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap @@ -134,12 +134,17 @@ exports[`Overview Section displays content 1`] = `
    + + http://dx.doi.org/10.5067/calibration + - - http://dx.doi.org/10.5067/calibration -
    @@ -183,12 +183,17 @@ exports[`Overview Section displays content 1`] = ` className="overview-section___StyledLi3-sc-1oemh85-0 hwjFCf" > + + http://www.example.com + - - http://www.example.com - @@ -291,12 +291,17 @@ exports[`Overview Section displays content 1`] = ` DOI: + + http://dx.doi.org/10.5067/instrument + - - http://dx.doi.org/10.5067/instrument -

    @@ -356,12 +356,17 @@ exports[`Overview Section displays content 1`] = ` className="list-link___StyledLi-sc-xxtxki-0 hZlwud" > + + test + - - test -
  • + + test2 + - - test2 -
  • From 321269f5e9f8cf41aebbf1e8786ea442c2c48319 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 29 Oct 2024 13:21:11 +0700 Subject: [PATCH 20/36] =?UTF-8?q?Enable=203D=20view=20if=20geojson=20data?= =?UTF-8?q?=20crosses=2080/-80=C2=BA=20latitude?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/timeline/map.js | 7 ++++++- src/components/timeline/timeline-chart.js | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index 73f560a0..da93f159 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -15,6 +15,7 @@ import { import { GlobeMap } from "../map/globe-map" import { MapLegend } from "./map-legend" import { MapViewControl } from "./map-view-control" +import bbox from "@turf/bbox" export function DeploymentMap({ geojson, @@ -23,7 +24,11 @@ export function DeploymentMap({ selectedDeployment, }) { const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" - const [enable3DView, setEnable3DView] = useState(false) + const geojsonBbox = bbox(geojson) + const [enable3DView, setEnable3DView] = useState( + // if the geojson crosses the 80º or -80º latitude, enables 3D view by default + geojsonBbox[1] < -80 || geojsonBbox[3] > 80 + ) const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 43709592..0dae09e0 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -106,8 +106,8 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { }, } ) - const vals = await response.json() - setGeojson(vals) + const geojsonData = await response.json() + setGeojson(geojsonData) } catch (error) { console.log("catch error", error) } From d9c1eef63fabef1d9b914e2bcffe37cdb1a32e0e Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 31 Oct 2024 17:36:59 +0700 Subject: [PATCH 21/36] Add loading state and error message to Deployment map --- package.json | 1 + src/components/explore/products-table.js | 2 +- src/components/global.css | 20 ++++++++ src/components/timeline/timeline-chart.js | 61 ++++++++++++++--------- yarn.lock | 5 ++ 5 files changed, 65 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index bfc209d4..c3e07a62 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "Matt Robinson " ], "dependencies": { + "@custom-react-hooks/use-fetch": "^1.5.1", "@fontsource/titillium-web": "^4.5.2", "@gatsbyjs/reach-router": "^1.3.4", "@juggle/resize-observer": "^3.3.1", diff --git a/src/components/explore/products-table.js b/src/components/explore/products-table.js index 0163c840..eaefdc02 100644 --- a/src/components/explore/products-table.js +++ b/src/components/explore/products-table.js @@ -21,7 +21,7 @@ export function ProductsTable({ dois }) { DATA PRODUCT diff --git a/src/components/global.css b/src/components/global.css index 8ba208e5..1b4ec07b 100644 --- a/src/components/global.css +++ b/src/components/global.css @@ -7,4 +7,24 @@ body { .bottom-right { margin-bottom: 10px; +} + +.loader { + width: 80px; + height: 80px; + border: 5px solid #294060; + border-bottom-color: transparent; + border-radius: 50%; + display: inline-block; + box-sizing: border-box; + animation: rotation 1s linear infinite; + } + + @keyframes rotation { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } } \ No newline at end of file diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 0dae09e0..1a39cd76 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -4,6 +4,7 @@ import * as d3 from "d3" import styled from "styled-components" import { Axis } from "./axis" +import { useFetch } from "@custom-react-hooks/use-fetch" import { NEGATIVE, POSITIVE } from "../../utils/constants" import { colors } from "../../theme" import { useChartDimensions } from "../../utils/use-chart-dimensions" @@ -13,6 +14,7 @@ import { Disclosure } from "@reach/disclosure" import { DeploymentPanel } from "./deployment-panel" import { DeploymentMap } from "./map" import { replaceSlashes } from "../../utils/helpers" +import { ExclamationIcon } from "../../icons" const chartSettings = { marginTop: 1, @@ -85,7 +87,11 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { const [hoveredDeployment, setHoveredDeployment] = useState(null) const [count, setCount] = useState(1) const [priority, setPriority] = useState({}) - const [geojson, setGeojson] = useState({}) + const { + data: geojson, + error: geojsonError, + loading: geojsonLoading, + } = useFetch(`/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`) const [tooltip, setTooltip] = useState({ x: null, y: null }) const [tooltipContent, setTooltipContent] = useState(null) @@ -94,27 +100,6 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { type: "deployment", }) - useEffect(() => { - const fetchData = async () => { - try { - const response = await fetch( - `/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`, - { - method: "GET", - headers: { - "Content-Type": "application/json", - }, - } - ) - const geojsonData = await response.json() - setGeojson(geojsonData) - } catch (error) { - console.log("catch error", error) - } - } - fetchData() - }, []) - useEffect(() => { //wait for first render to get correct measures if (isFirstRun.current) { @@ -145,7 +130,18 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { return ( - {geojson?.features?.length && ( + {geojsonError && ( + + +

    It was not possible to load the map data for this campaign.

    +
    + )} + {geojsonLoading && ( + + + + )} + {geojson && !geojsonError && !geojsonLoading && ( h4 { + display: inline; + font-size: 1.2rem; + padding-left: 0.5rem; + } +` + +const MapLoading = styled.div` + background-color: #111; + height: 500px; + text-align: center; + align-content: center; +` diff --git a/yarn.lock b/yarn.lock index dcdd8dab..2888f54e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1176,6 +1176,11 @@ resolved "https://registry.yarnpkg.com/@builder.io/partytown/-/partytown-0.7.6.tgz#697acea6b552167a4dd43ddd4827018aa42e0364" integrity sha512-snXIGNiZpqjno3XYQN2lbBB+05hsQR/LSttbtIW1c0gmZ7Kh/DIo0YrxlDxCDulAMFPFM8J+4voLwvYepSj3sw== +"@custom-react-hooks/use-fetch@^1.5.1": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@custom-react-hooks/use-fetch/-/use-fetch-1.5.1.tgz#ad72ba6625d9bccf7c306df144187ec26ac8d164" + integrity sha512-lSzUn+4B1o63h+IfsWuceabVnKr0WiJn1jZg52XheboevuYrn7KZB/5rtjCDBTQcOlDYR5Umt0oKqBQbnnpOxg== + "@deck.gl/aggregation-layers@9.0.33": version "9.0.33" resolved "https://registry.yarnpkg.com/@deck.gl/aggregation-layers/-/aggregation-layers-9.0.33.tgz#e676907ada185157be49c75c2a4a97474d2cf421" From 61acbdf3a789834d4dcdfbd8144f2deb9e8c8009 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 1 Nov 2024 11:59:30 -0400 Subject: [PATCH 22/36] Add Rocket Launch Icon --- src/icons/static-platform-icons.js | 14 ++++++++++++++ src/utils/platform-colors.js | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/src/icons/static-platform-icons.js b/src/icons/static-platform-icons.js index 2d55610a..0c5e51d8 100644 --- a/src/icons/static-platform-icons.js +++ b/src/icons/static-platform-icons.js @@ -116,3 +116,17 @@ export const ShipIcon = ({ size = "extra-tiny" }) => ( /> ) + +export const RocketIcon = ({ size = "extra-tiny" }) => ( + + + +) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index f84f61d9..de744e88 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -9,6 +9,7 @@ import { PermanentWaterSiteIcon, VehicleIcon, ShipIcon, + RocketIcon, } from "../icons/static-platform-icons" export const MOVING_PLATFORMS_COLORS = [ @@ -73,6 +74,12 @@ export const STATIC_PLATFORMS = [ icon: , mapIcon: "ShipIcon", }, + { + name: "Rocket Launch Site", + color: "#FF1F19", + icon: , + mapIcon: "RocketIcon", + }, ] export const flightPathColors = platforms => From 81d83f56eb23d2a0ee3fcf49674876abee9baa88 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 1 Nov 2024 12:02:42 -0400 Subject: [PATCH 23/36] Update platform icons test --- src/utils/__tests__/platform-colors.test.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/utils/__tests__/platform-colors.test.js b/src/utils/__tests__/platform-colors.test.js index 789f4246..73ee013e 100644 --- a/src/utils/__tests__/platform-colors.test.js +++ b/src/utils/__tests__/platform-colors.test.js @@ -49,6 +49,8 @@ describe("getStaticIcons", () => { STATIC_PLATFORMS[6].mapIcon, STATIC_PLATFORMS[7].name, STATIC_PLATFORMS[7].mapIcon, + STATIC_PLATFORMS[8].name, + STATIC_PLATFORMS[8].mapIcon, "BalloonIcon", ] expect(getStaticIcons()).toEqual(result) From 4156b325896b4d3e0cde4c5851881b891cfbd62d Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 4 Nov 2024 11:17:23 +0700 Subject: [PATCH 24/36] Improve GlobeView flight tracks color selection --- src/components/map/globe-map.js | 6 +++++- .../timeline/__tests__/map-legend.test.js | 16 ++++++++++++++-- src/components/timeline/map-legend.js | 6 +----- src/utils/__tests__/platform-colors.test.js | 9 ++++++++- src/utils/platform-colors.js | 2 +- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 9f5923f2..fcfb31a2 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -139,7 +139,11 @@ export function GlobeMap({ lineWidthMinPixels: 0.5, getLineWidth: 1, getLineColor: f => - getLineColorAsRGB(movingPlatforms.indexOf(f.properties.platform_name)), + getLineColorAsRGB( + movingPlatforms + .filter((i, index) => movingPlatforms.indexOf(i) === index) // remove duplicates + .indexOf(f.properties.platform_name) + ), }) const staticLocations = new IconLayer({ diff --git a/src/components/timeline/__tests__/map-legend.test.js b/src/components/timeline/__tests__/map-legend.test.js index cb51c5a3..8805d66a 100644 --- a/src/components/timeline/__tests__/map-legend.test.js +++ b/src/components/timeline/__tests__/map-legend.test.js @@ -19,6 +19,14 @@ describe("MapLegend", () => { { /> ) const instance = element.root - expect(instance.findAllByType("input").length).toBe(2) + expect(instance.findAllByType("input").length).toBe(10) const b1 = instance.findAllByType("input")[0] expect( instance.findAllByType("input").every(i => !i.props.checked) ).toBeTruthy() act(() => b1.props.onClick()) expect(fn).toHaveBeenCalledTimes(1) - expect(instance.findByType(LineIcon).props.size).toBe("text") + expect(instance.findAllByType(LineIcon)[0].props.size).toBe("text") + expect(instance.findAllByType(LineIcon)[0].props.color).toBe("#b2df8a") + expect(instance.findAllByType(LineIcon)[7].props.color).toBe("#e31a1c") + // test fallback color to the 9º moving platform + expect(instance.findAllByType(LineIcon)[8].props.color).toBe("#1a9b8c") expect(instance.findByType(FieldSiteIcon)).toBeTruthy() }) it("render with one option selected", () => { diff --git a/src/components/timeline/map-legend.js b/src/components/timeline/map-legend.js index 55f65d21..87ea274e 100644 --- a/src/components/timeline/map-legend.js +++ b/src/components/timeline/map-legend.js @@ -86,11 +86,7 @@ export const MapLegend = ({ key={platform.name} type="moving" name={platform.name} - color={ - index <= MOVING_PLATFORMS_COLORS.length - ? MOVING_PLATFORMS_COLORS[index] - : FALLBACK_COLOR - } + color={MOVING_PLATFORMS_COLORS[index] || FALLBACK_COLOR} checked={selectedPlatforms.includes(platform.name)} disabled={ (selectedPlatforms.length === 1 && diff --git a/src/utils/__tests__/platform-colors.test.js b/src/utils/__tests__/platform-colors.test.js index 789f4246..20084f8d 100644 --- a/src/utils/__tests__/platform-colors.test.js +++ b/src/utils/__tests__/platform-colors.test.js @@ -56,12 +56,19 @@ describe("getStaticIcons", () => { }) describe("getLineColorAsRGB", () => { + const platforms = ["DC-8", "ER-2", "GH", "Learjet"] it("returns the color in RGB format", () => { - const platforms = ["DC-8", "ER-2", "GH", "Learjet"] expect(getLineColorAsRGB(platforms.indexOf("DC-8"))).toEqual([ 178, 223, 138, ]) expect(getLineColorAsRGB(platforms.indexOf("GH"))).toEqual([253, 191, 111]) + expect(getLineColorAsRGB(platforms.indexOf("GH"))).toEqual([253, 191, 111]) + expect(getLineColorAsRGB(7)).toEqual([227, 26, 28]) + }) + it("returns the fallback color in RGB format if index is -1 or greater than 7", () => { + expect(getLineColorAsRGB(platforms.indexOf("ABC"))).toEqual([26, 155, 140]) + expect(getLineColorAsRGB(8)).toEqual([26, 155, 140]) + expect(getLineColorAsRGB(9)).toEqual([26, 155, 140]) }) }) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index f84f61d9..2c75297d 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -81,8 +81,8 @@ export const flightPathColors = platforms => const hex2rgb = hex => hex.match(/[0-9a-f]{2}/g).map(x => parseInt(x, 16)) export const getLineColorAsRGB = index => { - if (index === -1) return hex2rgb(FALLBACK_COLOR) const color = MOVING_PLATFORMS_COLORS[index] + if (color === undefined) return hex2rgb(FALLBACK_COLOR) // converts from HEX to RGB return hex2rgb(color) } From 4a2a4669894f6df1359925c097a4af1b577d067d Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 8 Nov 2024 13:35:36 -0500 Subject: [PATCH 25/36] Refactor deployment map, with new empty state/error message --- src/components/timeline/map.js | 73 ++++++++++++++++++---- src/components/timeline/timeline-chart.js | 58 +++-------------- src/templates/campaign/index.js | 4 +- src/templates/campaign/timeline-section.js | 20 ++++-- 4 files changed, 84 insertions(+), 71 deletions(-) diff --git a/src/components/timeline/map.js b/src/components/timeline/map.js index da93f159..484d962e 100644 --- a/src/components/timeline/map.js +++ b/src/components/timeline/map.js @@ -1,5 +1,6 @@ import React, { useEffect, useState } from "react" import PropTypes from "prop-types" +import styled from "styled-components" import Map from "../map" import Source from "../map/source" @@ -12,19 +13,47 @@ import { getStaticIcons, getIconColors, } from "../../utils/platform-colors" +import { useFetch } from "@custom-react-hooks/use-fetch" +import { CaseiLogoIcon } from "../../icons" import { GlobeMap } from "../map/globe-map" import { MapLegend } from "./map-legend" import { MapViewControl } from "./map-view-control" import bbox from "@turf/bbox" +const MapErrorMsg = styled.div` + background: rgba(255, 255, 255, 0.1); + padding: 1rem; + margin-bottom: 2rem; + text-align: center; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + > h4 { + font-size: 1.2rem; + margin: 0; + } +` + +const MapLoading = styled.div` + background-color: #111; + height: 500px; + text-align: center; + align-content: center; +` + export function DeploymentMap({ - geojson, + campaignName, deployments, bounds, selectedDeployment, }) { - const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" - const geojsonBbox = bbox(geojson) + const { + data: geojson, + error: geojsonError, + loading: geojsonLoading, + } = useFetch(`/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`) + const geojsonBbox = !!geojson && bbox(geojson) const [enable3DView, setEnable3DView] = useState( // if the geojson crosses the 80º or -80º latitude, enables 3D view by default geojsonBbox[1] < -80 || geojsonBbox[3] > 80 @@ -33,6 +62,18 @@ export function DeploymentMap({ deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) const names = platforms.map(i => i.name) + const platformsWithData = geojsonError + ? null + : geojson?.features.map(f => f.properties.platform_name) + const [selectedPlatforms, setSelectedPlatforms] = useState( + geojsonError + ? null + : names + .filter((name, index) => names.indexOf(name) === index) + .filter(name => platformsWithData?.includes(name)) + ) + + const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" const activeDeploymentPlatforms = getUniquePlatforms( deployments .filter(d => @@ -42,9 +83,6 @@ export function DeploymentMap({ ) .map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) .map(i => i.name) - const platformsWithData = geojson.features.map( - f => f.properties.platform_name - ) let movingPlatforms = platforms .filter(platform => ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) @@ -55,11 +93,22 @@ export function DeploymentMap({ movingPlatforms.filter((i, index) => movingPlatforms.indexOf(i) === index) ) - const [selectedPlatforms, setSelectedPlatforms] = useState( - names - .filter((name, index) => names.indexOf(name) === index) - .filter(name => platformsWithData.includes(name)) - ) + if (geojsonError) { + return ( + + +

    Flight path data is not yet available for this campaign.

    +
    + ) + } + + if (geojsonLoading) { + return ( + + + + ) + } return ( <> @@ -113,7 +162,7 @@ export function DeploymentMap({ } DeploymentMap.propTypes = { - geojson: PropTypes.object, + campaignName: PropTypes.string, deployments: PropTypes.array, bounds: PropTypes.array, selectedDeployment: PropTypes.object, diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 1a39cd76..69cb31fb 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -4,7 +4,6 @@ import * as d3 from "d3" import styled from "styled-components" import { Axis } from "./axis" -import { useFetch } from "@custom-react-hooks/use-fetch" import { NEGATIVE, POSITIVE } from "../../utils/constants" import { colors } from "../../theme" import { useChartDimensions } from "../../utils/use-chart-dimensions" @@ -12,9 +11,6 @@ import { occlusion } from "./occlusion" import { Deployment } from "./deployment" import { Disclosure } from "@reach/disclosure" import { DeploymentPanel } from "./deployment-panel" -import { DeploymentMap } from "./map" -import { replaceSlashes } from "../../utils/helpers" -import { ExclamationIcon } from "../../icons" const chartSettings = { marginTop: 1, @@ -40,7 +36,11 @@ export const Swatch = styled.div` background-color: ${({ color }) => color}; ` -export const TimelineChart = ({ deployments, bounds, campaignName }) => { +export const TimelineChart = ({ + deployments, + selectedDeployment, + setSelectedDeployment, +}) => { const [containerRef, dms] = useChartDimensions(chartSettings) const minDateString = d3 @@ -83,15 +83,9 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { const isFirstRun = useRef(true) const tooltipRef = useRef(null) - const [selectedDeployment, setSelectedDeployment] = useState(null) const [hoveredDeployment, setHoveredDeployment] = useState(null) const [count, setCount] = useState(1) const [priority, setPriority] = useState({}) - const { - data: geojson, - error: geojsonError, - loading: geojsonLoading, - } = useFetch(`/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`) const [tooltip, setTooltip] = useState({ x: null, y: null }) const [tooltipContent, setTooltipContent] = useState(null) @@ -130,25 +124,6 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { return ( - {geojsonError && ( - - -

    It was not possible to load the map data for this campaign.

    -
    - )} - {geojsonLoading && ( - - - - )} - {geojson && !geojsonError && !geojsonLoading && ( - - )}
    h4 { - display: inline; - font-size: 1.2rem; - padding-left: 0.5rem; - } -` - -const MapLoading = styled.div` - background-color: #111; - height: 500px; - text-align: center; - align-content: center; -` diff --git a/src/templates/campaign/index.js b/src/templates/campaign/index.js index d1375607..202992e1 100644 --- a/src/templates/campaign/index.js +++ b/src/templates/campaign/index.js @@ -11,7 +11,7 @@ import InpageNav from "../../components/inpage-nav" import OverviewSection from "./overview-section" import FocusSection from "./focus-section" import PlatformSection from "./platform-section" -import TimelineSection from "./timeline-section" +import DeploymentEventsSection from "./timeline-section" import DataSection from "../../components/data-section" import ProgramInfoSection from "./program-info-section" // import OtherResourcesSection from "./other-resources-section" @@ -89,7 +89,7 @@ const CampaignTemplate = ({ data: { campaign }, path }) => { }, deployment: { nav: "Deployment & Events", - component: TimelineSection, + component: DeploymentEventsSection, props: { campaignName: campaign.shortname, deployments: campaign.deployments, diff --git a/src/templates/campaign/timeline-section.js b/src/templates/campaign/timeline-section.js index b0c02df5..da2b84be 100644 --- a/src/templates/campaign/timeline-section.js +++ b/src/templates/campaign/timeline-section.js @@ -1,20 +1,28 @@ /* eslint-disable react/prop-types */ -import React from "react" +import React, { useState } from "react" import PropTypes from "prop-types" import { graphql } from "gatsby" +import { DeploymentMap } from "../../components/timeline/map" import { Section, SectionHeader, SectionContent } from "../../components/layout" import { TimelineChart } from "../../components/timeline" -const TimelineSection = ({ id, deployments, bounds, campaignName }) => { +const DeploymentEventsSection = ({ id, deployments, bounds, campaignName }) => { + const [selectedDeployment, setSelectedDeployment] = useState(null) return (
    +
    @@ -49,7 +57,7 @@ export const deploymentFields = graphql` } ` -TimelineSection.propTypes = { +DeploymentEventsSection.propTypes = { id: PropTypes.string.isRequired, campaignName: PropTypes.string.isRequired, deployments: PropTypes.arrayOf( @@ -77,4 +85,4 @@ TimelineSection.propTypes = { bounds: PropTypes.array, } -export default TimelineSection +export default DeploymentEventsSection From 45a99679488e9ba1ec243f116b96bd813e047f9e Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 8 Nov 2024 13:39:16 -0500 Subject: [PATCH 26/36] Rename timelines directory to deployments --- .../{timeline => deployments}/__tests__/map-legend.test.js | 0 src/components/{timeline => deployments}/axis.js | 0 src/components/{timeline => deployments}/deployment-detail.js | 0 src/components/{timeline => deployments}/deployment-panel.js | 0 src/components/{timeline => deployments}/deployment.js | 0 src/components/{timeline => deployments}/details.js | 0 src/components/{timeline => deployments}/event-detail.js | 0 src/components/{timeline => deployments}/event-panel.js | 0 src/components/{timeline => deployments}/events.js | 0 src/components/{timeline => deployments}/index.js | 1 + src/components/{timeline => deployments}/iop-detail.js | 0 src/components/{timeline => deployments}/iops.js | 0 src/components/{timeline => deployments}/label.js | 0 src/components/{timeline => deployments}/map-legend.js | 0 src/components/{timeline => deployments}/map-view-control.js | 0 src/components/{timeline => deployments}/map.js | 4 ++-- src/components/{timeline => deployments}/minor-timeline.js | 0 src/components/{timeline => deployments}/occlusion.js | 0 src/components/{timeline => deployments}/scroll-shadow.js | 0 src/components/{timeline => deployments}/timeline-chart.js | 0 src/templates/campaign/timeline-section.js | 3 +-- 21 files changed, 4 insertions(+), 4 deletions(-) rename src/components/{timeline => deployments}/__tests__/map-legend.test.js (100%) rename src/components/{timeline => deployments}/axis.js (100%) rename src/components/{timeline => deployments}/deployment-detail.js (100%) rename src/components/{timeline => deployments}/deployment-panel.js (100%) rename src/components/{timeline => deployments}/deployment.js (100%) rename src/components/{timeline => deployments}/details.js (100%) rename src/components/{timeline => deployments}/event-detail.js (100%) rename src/components/{timeline => deployments}/event-panel.js (100%) rename src/components/{timeline => deployments}/events.js (100%) rename src/components/{timeline => deployments}/index.js (56%) rename src/components/{timeline => deployments}/iop-detail.js (100%) rename src/components/{timeline => deployments}/iops.js (100%) rename src/components/{timeline => deployments}/label.js (100%) rename src/components/{timeline => deployments}/map-legend.js (100%) rename src/components/{timeline => deployments}/map-view-control.js (100%) rename src/components/{timeline => deployments}/map.js (99%) rename src/components/{timeline => deployments}/minor-timeline.js (100%) rename src/components/{timeline => deployments}/occlusion.js (100%) rename src/components/{timeline => deployments}/scroll-shadow.js (100%) rename src/components/{timeline => deployments}/timeline-chart.js (100%) diff --git a/src/components/timeline/__tests__/map-legend.test.js b/src/components/deployments/__tests__/map-legend.test.js similarity index 100% rename from src/components/timeline/__tests__/map-legend.test.js rename to src/components/deployments/__tests__/map-legend.test.js diff --git a/src/components/timeline/axis.js b/src/components/deployments/axis.js similarity index 100% rename from src/components/timeline/axis.js rename to src/components/deployments/axis.js diff --git a/src/components/timeline/deployment-detail.js b/src/components/deployments/deployment-detail.js similarity index 100% rename from src/components/timeline/deployment-detail.js rename to src/components/deployments/deployment-detail.js diff --git a/src/components/timeline/deployment-panel.js b/src/components/deployments/deployment-panel.js similarity index 100% rename from src/components/timeline/deployment-panel.js rename to src/components/deployments/deployment-panel.js diff --git a/src/components/timeline/deployment.js b/src/components/deployments/deployment.js similarity index 100% rename from src/components/timeline/deployment.js rename to src/components/deployments/deployment.js diff --git a/src/components/timeline/details.js b/src/components/deployments/details.js similarity index 100% rename from src/components/timeline/details.js rename to src/components/deployments/details.js diff --git a/src/components/timeline/event-detail.js b/src/components/deployments/event-detail.js similarity index 100% rename from src/components/timeline/event-detail.js rename to src/components/deployments/event-detail.js diff --git a/src/components/timeline/event-panel.js b/src/components/deployments/event-panel.js similarity index 100% rename from src/components/timeline/event-panel.js rename to src/components/deployments/event-panel.js diff --git a/src/components/timeline/events.js b/src/components/deployments/events.js similarity index 100% rename from src/components/timeline/events.js rename to src/components/deployments/events.js diff --git a/src/components/timeline/index.js b/src/components/deployments/index.js similarity index 56% rename from src/components/timeline/index.js rename to src/components/deployments/index.js index b08880df..54607a2a 100644 --- a/src/components/timeline/index.js +++ b/src/components/deployments/index.js @@ -1 +1,2 @@ export { TimelineChart } from "./timeline-chart" +export { DeploymentMap } from "./map" diff --git a/src/components/timeline/iop-detail.js b/src/components/deployments/iop-detail.js similarity index 100% rename from src/components/timeline/iop-detail.js rename to src/components/deployments/iop-detail.js diff --git a/src/components/timeline/iops.js b/src/components/deployments/iops.js similarity index 100% rename from src/components/timeline/iops.js rename to src/components/deployments/iops.js diff --git a/src/components/timeline/label.js b/src/components/deployments/label.js similarity index 100% rename from src/components/timeline/label.js rename to src/components/deployments/label.js diff --git a/src/components/timeline/map-legend.js b/src/components/deployments/map-legend.js similarity index 100% rename from src/components/timeline/map-legend.js rename to src/components/deployments/map-legend.js diff --git a/src/components/timeline/map-view-control.js b/src/components/deployments/map-view-control.js similarity index 100% rename from src/components/timeline/map-view-control.js rename to src/components/deployments/map-view-control.js diff --git a/src/components/timeline/map.js b/src/components/deployments/map.js similarity index 99% rename from src/components/timeline/map.js rename to src/components/deployments/map.js index 484d962e..5b385e1c 100644 --- a/src/components/timeline/map.js +++ b/src/components/deployments/map.js @@ -42,12 +42,12 @@ const MapLoading = styled.div` align-content: center; ` -export function DeploymentMap({ +export const DeploymentMap = ({ campaignName, deployments, bounds, selectedDeployment, -}) { +}) => { const { data: geojson, error: geojsonError, diff --git a/src/components/timeline/minor-timeline.js b/src/components/deployments/minor-timeline.js similarity index 100% rename from src/components/timeline/minor-timeline.js rename to src/components/deployments/minor-timeline.js diff --git a/src/components/timeline/occlusion.js b/src/components/deployments/occlusion.js similarity index 100% rename from src/components/timeline/occlusion.js rename to src/components/deployments/occlusion.js diff --git a/src/components/timeline/scroll-shadow.js b/src/components/deployments/scroll-shadow.js similarity index 100% rename from src/components/timeline/scroll-shadow.js rename to src/components/deployments/scroll-shadow.js diff --git a/src/components/timeline/timeline-chart.js b/src/components/deployments/timeline-chart.js similarity index 100% rename from src/components/timeline/timeline-chart.js rename to src/components/deployments/timeline-chart.js diff --git a/src/templates/campaign/timeline-section.js b/src/templates/campaign/timeline-section.js index da2b84be..fbe68755 100644 --- a/src/templates/campaign/timeline-section.js +++ b/src/templates/campaign/timeline-section.js @@ -2,10 +2,9 @@ import React, { useState } from "react" import PropTypes from "prop-types" import { graphql } from "gatsby" -import { DeploymentMap } from "../../components/timeline/map" import { Section, SectionHeader, SectionContent } from "../../components/layout" -import { TimelineChart } from "../../components/timeline" +import { DeploymentMap, TimelineChart } from "../../components/deployments" const DeploymentEventsSection = ({ id, deployments, bounds, campaignName }) => { const [selectedDeployment, setSelectedDeployment] = useState(null) From a1420ec40003fcccb8e90de1f087c36514e9e4db Mon Sep 17 00:00:00 2001 From: LanesGood Date: Fri, 8 Nov 2024 13:44:34 -0500 Subject: [PATCH 27/36] Update error/empty state message and icon --- src/components/timeline/timeline-chart.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/timeline/timeline-chart.js b/src/components/timeline/timeline-chart.js index 1a39cd76..87ed8f0c 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/timeline/timeline-chart.js @@ -14,7 +14,7 @@ import { Disclosure } from "@reach/disclosure" import { DeploymentPanel } from "./deployment-panel" import { DeploymentMap } from "./map" import { replaceSlashes } from "../../utils/helpers" -import { ExclamationIcon } from "../../icons" +import { CaseiLogoIcon } from "../../icons" const chartSettings = { marginTop: 1, @@ -132,8 +132,8 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { {geojsonError && ( - -

    It was not possible to load the map data for this campaign.

    + +

    Flight path data is not yet available for this campaign.

    )} {geojsonLoading && ( @@ -349,10 +349,13 @@ const MapErrorMsg = styled.div` padding: 1rem; margin-bottom: 2rem; text-align: center; + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; > h4 { - display: inline; font-size: 1.2rem; - padding-left: 0.5rem; + margin: 0; } ` From 4dccc4dbe2ea1080e52d8dbcce940590ea70e07b Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 13:57:48 -0400 Subject: [PATCH 28/36] Move external link icon, reduce size --- src/components/external-link.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/external-link.js b/src/components/external-link.js index f4da8c4b..a60a39ca 100644 --- a/src/components/external-link.js +++ b/src/components/external-link.js @@ -23,14 +23,18 @@ export default function ExternalLink({ display: inline-flex; flex-flow: row nowrap; gap: 0.25rem; - align-items: baseline; + align-items: center; + svg { + width: 12px; + height: 12px; + flex-shrink: 0; + } @media screen and (min-width: ${breakpoints["sm"]}) { - flex-flow: row wrap; + /* flex-flow: row wrap; */ } `} data-cy={`${id}-link`} > - {label || children} + ) } From 367a9906b2126da3cc8901be156cc9a75b698aa6 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 13:58:00 -0400 Subject: [PATCH 29/36] Update external link column in products table --- src/components/explore/products-table.js | 25 ++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/components/explore/products-table.js b/src/components/explore/products-table.js index 0163c840..7d0014bd 100644 --- a/src/components/explore/products-table.js +++ b/src/components/explore/products-table.js @@ -15,17 +15,14 @@ export function ProductsTable({ dois }) { css={` background: rgba(255, 255, 255, 0.06); border-spacing: 30px; + th:first-child { + padding-left: 1.25rem; + } `} > - - DATA PRODUCT - + DATA PRODUCT PLATFORMS INSTRUMENTS @@ -46,16 +43,24 @@ export function ProductsTable({ dois }) { href={`http://dx.doi.org/${doi.doi}`} css={` color: ${colors[NEGATIVE].linkText}; - display: block; + display: inline-flex; + flex-flow: row nowrap; + gap: 0.25rem; + align-items: center; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; - padding-left: 30px; + padding-left: 1.5rem; + svg { + width: 12px; + height: 12px; + flex-shrink: 0; + } `} data-cy={`doi-link`} > - {" "} {doi.shortname} + {" "} From bfeb0c84a50107703dfb5592f01b7c57ff7fb2b8 Mon Sep 17 00:00:00 2001 From: LanesGood Date: Mon, 28 Oct 2024 14:00:22 -0400 Subject: [PATCH 30/36] Lint, update snapshots --- .../__snapshots__/data-section.test.js.snap | 12 ++-- .../__snapshots__/footer.test.js.snap | 48 +++++++-------- src/components/external-link.js | 5 +- .../overview-section.test.js.snap | 60 +++++++++---------- 4 files changed, 61 insertions(+), 64 deletions(-) diff --git a/src/components/__tests__/__snapshots__/data-section.test.js.snap b/src/components/__tests__/__snapshots__/data-section.test.js.snap index 43064e82..3db2951a 100644 --- a/src/components/__tests__/__snapshots__/data-section.test.js.snap +++ b/src/components/__tests__/__snapshots__/data-section.test.js.snap @@ -210,12 +210,17 @@ exports[`Data Section matches snapshot 1`] = ` CAMP2Ex P-3 Remotely Sensed Aerosol Data + + 10.5067/Airborne/CAMP2Ex_Aerosol_AircraftRemoteSensing_P3_Data_1 + - - 10.5067/Airborne/CAMP2Ex_Aerosol_AircraftRemoteSensing_P3_Data_1 -
  • + + API Documentation + - - API Documentation -
  • @@ -165,12 +165,17 @@ exports[`Footer renders correctly 1`] = ` >
  • + + ADMG Website + - - ADMG Website -
  • + + IMPACT Website + - - IMPACT Website -
  • @@ -514,12 +514,17 @@ exports[`Footer renders correctly 1`] = ` , Built by + + Development Seed + - - Development Seed - .
    diff --git a/src/components/external-link.js b/src/components/external-link.js index a60a39ca..5286164d 100644 --- a/src/components/external-link.js +++ b/src/components/external-link.js @@ -3,7 +3,7 @@ import PropTypes from "prop-types" import { POSITIVE, NEGATIVE } from "../utils/constants" import { PropTypeIsUrl } from "../utils/helpers" -import { colors, breakpoints } from "../theme" +import { colors } from "../theme" import { ExternalLinkIcon } from "../icons" export default function ExternalLink({ @@ -29,9 +29,6 @@ export default function ExternalLink({ height: 12px; flex-shrink: 0; } - @media screen and (min-width: ${breakpoints["sm"]}) { - /* flex-flow: row wrap; */ - } `} data-cy={`${id}-link`} > diff --git a/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap b/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap index 5a36ff51..1abccea5 100644 --- a/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap +++ b/src/templates/instrument/__tests__/__snapshots__/overview-section.test.js.snap @@ -134,12 +134,17 @@ exports[`Overview Section displays content 1`] = `
    + + http://dx.doi.org/10.5067/calibration + - - http://dx.doi.org/10.5067/calibration -
    @@ -183,12 +183,17 @@ exports[`Overview Section displays content 1`] = ` className="overview-section___StyledLi3-sc-1oemh85-0 hwjFCf" > + + http://www.example.com + - - http://www.example.com - @@ -291,12 +291,17 @@ exports[`Overview Section displays content 1`] = ` DOI: + + http://dx.doi.org/10.5067/instrument + - - http://dx.doi.org/10.5067/instrument -

    @@ -356,12 +356,17 @@ exports[`Overview Section displays content 1`] = ` className="list-link___StyledLi-sc-xxtxki-0 hZlwud" > + + test + - - test -
  • + + test2 + - - test2 -
  • From 75012f804205f2cd7b58d1bcefa20e66acbf121f Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 4 Nov 2024 11:17:23 +0700 Subject: [PATCH 31/36] Improve GlobeView flight tracks color selection --- src/components/map/globe-map.js | 6 +++++- .../timeline/__tests__/map-legend.test.js | 16 ++++++++++++++-- src/components/timeline/map-legend.js | 6 +----- src/utils/__tests__/platform-colors.test.js | 9 ++++++++- src/utils/platform-colors.js | 2 +- 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 9f5923f2..fcfb31a2 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -139,7 +139,11 @@ export function GlobeMap({ lineWidthMinPixels: 0.5, getLineWidth: 1, getLineColor: f => - getLineColorAsRGB(movingPlatforms.indexOf(f.properties.platform_name)), + getLineColorAsRGB( + movingPlatforms + .filter((i, index) => movingPlatforms.indexOf(i) === index) // remove duplicates + .indexOf(f.properties.platform_name) + ), }) const staticLocations = new IconLayer({ diff --git a/src/components/timeline/__tests__/map-legend.test.js b/src/components/timeline/__tests__/map-legend.test.js index cb51c5a3..8805d66a 100644 --- a/src/components/timeline/__tests__/map-legend.test.js +++ b/src/components/timeline/__tests__/map-legend.test.js @@ -19,6 +19,14 @@ describe("MapLegend", () => { { /> ) const instance = element.root - expect(instance.findAllByType("input").length).toBe(2) + expect(instance.findAllByType("input").length).toBe(10) const b1 = instance.findAllByType("input")[0] expect( instance.findAllByType("input").every(i => !i.props.checked) ).toBeTruthy() act(() => b1.props.onClick()) expect(fn).toHaveBeenCalledTimes(1) - expect(instance.findByType(LineIcon).props.size).toBe("text") + expect(instance.findAllByType(LineIcon)[0].props.size).toBe("text") + expect(instance.findAllByType(LineIcon)[0].props.color).toBe("#b2df8a") + expect(instance.findAllByType(LineIcon)[7].props.color).toBe("#e31a1c") + // test fallback color to the 9º moving platform + expect(instance.findAllByType(LineIcon)[8].props.color).toBe("#1a9b8c") expect(instance.findByType(FieldSiteIcon)).toBeTruthy() }) it("render with one option selected", () => { diff --git a/src/components/timeline/map-legend.js b/src/components/timeline/map-legend.js index 55f65d21..87ea274e 100644 --- a/src/components/timeline/map-legend.js +++ b/src/components/timeline/map-legend.js @@ -86,11 +86,7 @@ export const MapLegend = ({ key={platform.name} type="moving" name={platform.name} - color={ - index <= MOVING_PLATFORMS_COLORS.length - ? MOVING_PLATFORMS_COLORS[index] - : FALLBACK_COLOR - } + color={MOVING_PLATFORMS_COLORS[index] || FALLBACK_COLOR} checked={selectedPlatforms.includes(platform.name)} disabled={ (selectedPlatforms.length === 1 && diff --git a/src/utils/__tests__/platform-colors.test.js b/src/utils/__tests__/platform-colors.test.js index 73ee013e..5275b616 100644 --- a/src/utils/__tests__/platform-colors.test.js +++ b/src/utils/__tests__/platform-colors.test.js @@ -58,12 +58,19 @@ describe("getStaticIcons", () => { }) describe("getLineColorAsRGB", () => { + const platforms = ["DC-8", "ER-2", "GH", "Learjet"] it("returns the color in RGB format", () => { - const platforms = ["DC-8", "ER-2", "GH", "Learjet"] expect(getLineColorAsRGB(platforms.indexOf("DC-8"))).toEqual([ 178, 223, 138, ]) expect(getLineColorAsRGB(platforms.indexOf("GH"))).toEqual([253, 191, 111]) + expect(getLineColorAsRGB(platforms.indexOf("GH"))).toEqual([253, 191, 111]) + expect(getLineColorAsRGB(7)).toEqual([227, 26, 28]) + }) + it("returns the fallback color in RGB format if index is -1 or greater than 7", () => { + expect(getLineColorAsRGB(platforms.indexOf("ABC"))).toEqual([26, 155, 140]) + expect(getLineColorAsRGB(8)).toEqual([26, 155, 140]) + expect(getLineColorAsRGB(9)).toEqual([26, 155, 140]) }) }) diff --git a/src/utils/platform-colors.js b/src/utils/platform-colors.js index de744e88..2210405b 100644 --- a/src/utils/platform-colors.js +++ b/src/utils/platform-colors.js @@ -88,8 +88,8 @@ export const flightPathColors = platforms => const hex2rgb = hex => hex.match(/[0-9a-f]{2}/g).map(x => parseInt(x, 16)) export const getLineColorAsRGB = index => { - if (index === -1) return hex2rgb(FALLBACK_COLOR) const color = MOVING_PLATFORMS_COLORS[index] + if (color === undefined) return hex2rgb(FALLBACK_COLOR) // converts from HEX to RGB return hex2rgb(color) } From 71c44b3045e1f82c341ba1009ae3e8f414828e42 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Thu, 14 Nov 2024 14:43:58 +0530 Subject: [PATCH 32/36] Update map style version id --- src/components/map/globe-map.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index fcfb31a2..15d2edde 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -51,8 +51,10 @@ export function GlobeMap({ useEffect(() => { const fetchData = async () => { try { + // We need to update this variable each time we have a new version of the mapbox map style published + const mapStyleVersion = "6914ry1z9mxpu0srgeii55c8s" const response = await fetch( - `https://api.mapbox.com/styles/v1/${mapStyleID}/48lhibiqllsww17zqo5nw6pga/sprite@2x.json?access_token=${MAPBOX_TOKEN}`, + `https://api.mapbox.com/styles/v1/${mapStyleID}/${mapStyleVersion}/sprite@2x.json?access_token=${MAPBOX_TOKEN}`, { method: "GET", headers: { From c45419286c98fe152e97d74ef3741baef54aa533 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Mon, 18 Nov 2024 16:58:03 -0300 Subject: [PATCH 33/36] Fix selectedPlatforms initialization --- src/components/deployments/map.js | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/components/deployments/map.js b/src/components/deployments/map.js index 5b385e1c..28113f41 100644 --- a/src/components/deployments/map.js +++ b/src/components/deployments/map.js @@ -62,16 +62,23 @@ export const DeploymentMap = ({ deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) const names = platforms.map(i => i.name) - const platformsWithData = geojsonError - ? null - : geojson?.features.map(f => f.properties.platform_name) + const platformsWithData = geojson?.features.map( + f => f.properties.platform_name + ) const [selectedPlatforms, setSelectedPlatforms] = useState( - geojsonError - ? null - : names + names + .filter((name, index) => names.indexOf(name) === index) + .filter(name => platformsWithData?.includes(name)) + ) + useEffect(() => { + if (!geojsonLoading && !selectedPlatforms.length) { + setSelectedPlatforms( + names .filter((name, index) => names.indexOf(name) === index) .filter(name => platformsWithData?.includes(name)) - ) + ) + } + }, [selectedPlatforms, geojsonLoading]) const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" const activeDeploymentPlatforms = getUniquePlatforms( From 7badf5f209e5068b3d5ba98b37517bfe0ca1f78e Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 19 Nov 2024 08:33:20 -0300 Subject: [PATCH 34/36] Improve variable name and useState initial value --- src/components/deployments/map.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/components/deployments/map.js b/src/components/deployments/map.js index 28113f41..83155fd3 100644 --- a/src/components/deployments/map.js +++ b/src/components/deployments/map.js @@ -61,20 +61,17 @@ export const DeploymentMap = ({ const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) - const names = platforms.map(i => i.name) + const platformNames = platforms.map(i => i.name) const platformsWithData = geojson?.features.map( f => f.properties.platform_name ) - const [selectedPlatforms, setSelectedPlatforms] = useState( - names - .filter((name, index) => names.indexOf(name) === index) - .filter(name => platformsWithData?.includes(name)) - ) + const [selectedPlatforms, setSelectedPlatforms] = useState([]) + // Set all platforms as selected after the geojson is loaded useEffect(() => { if (!geojsonLoading && !selectedPlatforms.length) { setSelectedPlatforms( - names - .filter((name, index) => names.indexOf(name) === index) + platformNames + .filter((name, index) => platformNames.indexOf(name) === index) .filter(name => platformsWithData?.includes(name)) ) } From 44c65804001294ee80b288fa7ead4a589f1921bc Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 19 Nov 2024 18:08:43 -0300 Subject: [PATCH 35/36] Fix initialization of enable3DView state --- src/components/deployments/map.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/deployments/map.js b/src/components/deployments/map.js index 83155fd3..4bab040f 100644 --- a/src/components/deployments/map.js +++ b/src/components/deployments/map.js @@ -54,10 +54,7 @@ export const DeploymentMap = ({ loading: geojsonLoading, } = useFetch(`/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`) const geojsonBbox = !!geojson && bbox(geojson) - const [enable3DView, setEnable3DView] = useState( - // if the geojson crosses the 80º or -80º latitude, enables 3D view by default - geojsonBbox[1] < -80 || geojsonBbox[3] > 80 - ) + const [enable3DView, setEnable3DView] = useState(false) const platforms = getUniquePlatforms( deployments.flatMap(d => d.collectionPeriods) ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) @@ -66,14 +63,16 @@ export const DeploymentMap = ({ f => f.properties.platform_name ) const [selectedPlatforms, setSelectedPlatforms] = useState([]) - // Set all platforms as selected after the geojson is loaded useEffect(() => { if (!geojsonLoading && !selectedPlatforms.length) { + // Set all platforms as selected after the geojson is loaded setSelectedPlatforms( platformNames .filter((name, index) => platformNames.indexOf(name) === index) .filter(name => platformsWithData?.includes(name)) ) + // if the geojson crosses the 80º or -80º latitude, enables 3D view by default + setEnable3DView(geojsonBbox[1] < -80 || geojsonBbox[3] > 80) } }, [selectedPlatforms, geojsonLoading]) From c68845ceb74db2a2ba8f7d3ebc711797cc2564e3 Mon Sep 17 00:00:00 2001 From: Wille Marcel Date: Tue, 19 Nov 2024 18:11:18 -0300 Subject: [PATCH 36/36] Increase size of icons in globe view map --- src/components/map/globe-map.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/map/globe-map.js b/src/components/map/globe-map.js index 15d2edde..f10b868e 100644 --- a/src/components/map/globe-map.js +++ b/src/components/map/globe-map.js @@ -163,7 +163,7 @@ export function GlobeMap({ ? getPlatformIcon(f.properties.platform_name) : null, getPosition: f => f.geometry.coordinates, - getSize: 12, + getSize: 18, }) if (iconMapping && geojson) {