diff --git a/package.json b/package.json index b218cd352..c3e07a62d 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", @@ -31,6 +32,7 @@ "@turf/envelope": "^7.1.0", "d3": "^7.3.0", "date-fns": "^2.28.0", + "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/src/components/__tests__/__snapshots__/data-section.test.js.snap b/src/components/__tests__/__snapshots__/data-section.test.js.snap index 43064e82b..3db2951a3 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/timeline/__tests__/map.test.js b/src/components/deployments/__tests__/map-legend.test.js similarity index 80% rename from src/components/timeline/__tests__/map.test.js rename to src/components/deployments/__tests__/map-legend.test.js index 8e2c4357a..8805d66a9 100644 --- a/src/components/timeline/__tests__/map.test.js +++ b/src/components/deployments/__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, @@ -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/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 b08880df8..54607a2a7 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.js b/src/components/deployments/map-legend.js similarity index 52% rename from src/components/timeline/map.js rename to src/components/deployments/map-legend.js index a93a27d5a..87ea274e9 100644 --- a/src/components/timeline/map.js +++ b/src/components/deployments/map-legend.js @@ -1,243 +1,17 @@ -import React, { useEffect, useState } from "react" +import React 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" -export function DeploymentMap({ - geojson, - deployments, - bounds, - selectedDeployment, -}) { - 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 activeDeploymentPlatforms = getUniquePlatforms( - deployments - .filter(d => - selectedDeployment ? d.longname === selectedDeployment.longname : false - ) - .flatMap(d => d.collectionPeriods) - ) - .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) - ) - .map(platform => platform.name) - - const lineColorsPaint = getLineColors( - movingPlatforms.filter((i, index) => movingPlatforms.indexOf(i) === index) - ) - const iconImage = getStaticIcons() - const iconColors = getIconColors() - - const [selectedPlatforms, setSelectedPlatforms] = useState( - names - .filter((name, index) => names.indexOf(name) === index) - .filter(name => platformsWithData.includes(name)) - ) - - return ( - - {geojson && ( - - map.fitBounds(bounds, { padding: 50 })} - selectedPlatforms={selectedPlatforms} - selectedDeployment={ - selectedDeployment - ? replaceSlashes(selectedDeployment.longname) - : "" - } - /> - - - - )} - - - ) -} - -DeploymentMap.propTypes = { - geojson: PropTypes.object, - deployments: PropTypes.array, - bounds: PropTypes.array, - selectedDeployment: PropTypes.object, -} - -const DeploymentLayer = ({ - map, - config, - selectedDeployment, - selectedPlatforms, - onLoad, -}) => { - const mapHasStarted = map !== undefined - - useEffect(() => { - if (mapHasStarted) { - const newFilter = mapLayerFilter( - map.getFilter(config.id), - "deployment", - selectedDeployment - ) - map.setFilter(config.id, newFilter) - } - }, [selectedDeployment, mapHasStarted]) - - useEffect(() => { - if (mapHasStarted) { - const newFilter = mapLayerFilter( - map.getFilter(config.id), - "platform_name", - selectedPlatforms - ) - map.setFilter(config.id, newFilter) - } - }, [JSON.stringify(selectedPlatforms), mapHasStarted]) - - return -} - -DeploymentLayer.propTypes = { - map: PropTypes.object, - config: PropTypes.object, - selectedDeployment: PropTypes.string, - selectedPlatforms: PropTypes.array, - onLoad: PropTypes.func, -} - export const LegendItem = ({ name, type, @@ -312,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/components/deployments/map-view-control.js b/src/components/deployments/map-view-control.js new file mode 100644 index 000000000..9d4c8755d --- /dev/null +++ b/src/components/deployments/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/deployments/map.js b/src/components/deployments/map.js new file mode 100644 index 000000000..4bab040f7 --- /dev/null +++ b/src/components/deployments/map.js @@ -0,0 +1,356 @@ +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" +import Layer from "../map/layer" +import { getUniquePlatforms } from "../../utils/get-unique-platforms" +import { mapLayerFilter } from "../../utils/filter-utils" +import { replaceSlashes } from "../../utils/helpers" +import { + getLineColors, + 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 const DeploymentMap = ({ + campaignName, + deployments, + bounds, + selectedDeployment, +}) => { + const { + data: geojson, + error: geojsonError, + loading: geojsonLoading, + } = useFetch(`/casei/flight-tracks/${replaceSlashes(campaignName)}.geojson`) + const geojsonBbox = !!geojson && bbox(geojson) + const [enable3DView, setEnable3DView] = useState(false) + const platforms = getUniquePlatforms( + deployments.flatMap(d => d.collectionPeriods) + ).map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) + const platformNames = platforms.map(i => i.name) + const platformsWithData = geojson?.features.map( + f => f.properties.platform_name + ) + const [selectedPlatforms, setSelectedPlatforms] = useState([]) + 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]) + + const MAP_STYLE_ID = "devseed/clx25ggbv076o01ql8k8m03k8" + const activeDeploymentPlatforms = getUniquePlatforms( + deployments + .filter(d => + selectedDeployment ? d.longname === selectedDeployment.longname : false + ) + .flatMap(d => d.collectionPeriods) + ) + .map(i => ({ name: i.item.shortname, type: i.item.platformType.shortname })) + .map(i => i.name) + let movingPlatforms = platforms + .filter(platform => + ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) + ) + .map(platform => platform.name) + + const lineColorsPaint = getLineColors( + movingPlatforms.filter((i, index) => movingPlatforms.indexOf(i) === index) + ) + + if (geojsonError) { + return ( + + +

    Flight path data is not yet available for this campaign.

    +
    + ) + } + + if (geojsonLoading) { + return ( + + + + ) + } + + return ( + <> + {enable3DView ? ( + + + setEnable3DView(!enable3DView)} + is3DViewEnabled={enable3DView} + /> + + ) : ( + + <> + + setEnable3DView(!enable3DView)} + is3DViewEnabled={enable3DView} + /> + + + )} + + ) +} + +DeploymentMap.propTypes = { + campaignName: PropTypes.string, + 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 ( + + + map.fitBounds(bounds, { padding: 50 })} + selectedPlatforms={selectedPlatforms} + selectedDeployment={ + selectedDeployment + ? replaceSlashes(selectedDeployment.longname) + : "" + } + /> + + + + {children} + + ) +} + +MapboxMap.propTypes = { + geojson: PropTypes.object, + children: PropTypes.node, + selectedDeployment: PropTypes.object, + selectedPlatforms: PropTypes.array, + setSelectedPlatforms: PropTypes.func, + lineColorsPaint: PropTypes.array, + bounds: PropTypes.array, + mapStyleID: PropTypes.string.isRequired, +} + +const DeploymentLayer = ({ + map, + config, + selectedDeployment, + selectedPlatforms, + onLoad, +}) => { + const mapHasStarted = map !== undefined + + useEffect(() => { + if (mapHasStarted) { + const newFilter = mapLayerFilter( + map.getFilter(config.id), + "deployment", + selectedDeployment + ) + map.setFilter(config.id, newFilter) + } + }, [selectedDeployment, mapHasStarted]) + + useEffect(() => { + if (mapHasStarted) { + const newFilter = mapLayerFilter( + map.getFilter(config.id), + "platform_name", + selectedPlatforms + ) + map.setFilter(config.id, newFilter) + } + }, [JSON.stringify(selectedPlatforms), mapHasStarted]) + + return +} + +DeploymentLayer.propTypes = { + map: PropTypes.object, + config: PropTypes.object, + selectedDeployment: PropTypes.string, + selectedPlatforms: PropTypes.array, + onLoad: PropTypes.func, +} 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 89% rename from src/components/timeline/timeline-chart.js rename to src/components/deployments/timeline-chart.js index 437095922..69cb31fba 100644 --- a/src/components/timeline/timeline-chart.js +++ b/src/components/deployments/timeline-chart.js @@ -11,8 +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" const chartSettings = { marginTop: 1, @@ -38,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 @@ -81,11 +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 [geojson, setGeojson] = useState({}) const [tooltip, setTooltip] = useState({ x: null, y: null }) const [tooltipContent, setTooltipContent] = useState(null) @@ -94,27 +94,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 vals = await response.json() - setGeojson(vals) - } catch (error) { - console.log("catch error", error) - } - } - fetchData() - }, []) - useEffect(() => { //wait for first render to get correct measures if (isFirstRun.current) { @@ -145,14 +124,6 @@ export const TimelineChart = ({ deployments, bounds, campaignName }) => { return ( - {geojson?.features?.length && ( - - )}
    - - 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} + {" "} diff --git a/src/components/external-link.js b/src/components/external-link.js index f4da8c4be..5286164dd 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({ @@ -23,14 +23,15 @@ export default function ExternalLink({ display: inline-flex; flex-flow: row nowrap; gap: 0.25rem; - align-items: baseline; - @media screen and (min-width: ${breakpoints["sm"]}) { - flex-flow: row wrap; + align-items: center; + svg { + width: 12px; + height: 12px; + flex-shrink: 0; } `} data-cy={`${id}-link`} > - {label || children} + ) } diff --git a/src/components/global.css b/src/components/global.css index 1fe989818..1b4ec07b5 100644 --- a/src/components/global.css +++ b/src/components/global.css @@ -4,3 +4,27 @@ body { -moz-osx-font-smoothing: grayscale; background: #294060; } + +.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/map/deck-gl.css b/src/components/map/deck-gl.css new file mode 100644 index 000000000..cbda66749 --- /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 new file mode 100644 index 000000000..f10b868e3 --- /dev/null +++ b/src/components/map/globe-map.js @@ -0,0 +1,239 @@ +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, 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" +import { getUniquePlatforms } from "../../utils/get-unique-platforms" +import { + getLineColorAsRGB, + getPlatformIcon, + isPlatformVisible, +} from "../../utils/platform-colors" +import "./deck-gl.css" +import { colors } from "../../theme" + +const INITIAL_VIEW_STATE = { + longitude: -98, + latitude: 40, + zoom: 0, +} +const MAPBOX_TOKEN = process.env.GATSBY_MAPBOX_TOKEN + +export function GlobeMap({ + geojson, + deployments, + selectedPlatforms, + selectedDeployment, + mapStyleID, + children, +}) { + 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 })) + const movingPlatforms = platforms + .filter(platform => + ["Jet", "Prop", "UAV", "Ships/Boats"].includes(platform.type) + ) + .map(platform => platform.name) + + 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}/${mapStyleVersion}/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 + 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: [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: 3, + extent: [-180, -90, 180, 90], + 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], + ], + }) + }, + }), + ], + [] + ) + + const flights = new GeoJsonLayer({ + id: "flights", + data: { + ...geojson, + features: geojson.features + .filter(f => f.geometry.type !== "Point") + .filter(f => + isPlatformVisible({ + platformProperties: f.properties, + selectedDeployment, + selectedPlatforms, + }) + ), + }, + lineWidthMinPixels: 0.5, + getLineWidth: 1, + getLineColor: f => + getLineColorAsRGB( + movingPlatforms + .filter((i, index) => movingPlatforms.indexOf(i) === index) // remove duplicates + .indexOf(f.properties.platform_name) + ), + }) + + 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 => + isPlatformVisible({ + platformProperties: f.properties, + selectedDeployment, + selectedPlatforms, + }) + ? getPlatformIcon(f.properties.platform_name) + : null, + getPosition: f => f.geometry.coordinates, + getSize: 18, + }) + + if (iconMapping && geojson) { + return ( + + + {children} + + + © Mapbox + + + © OpenStreetMap + + + + ) + } +} + +GlobeMap.propTypes = { + geojson: PropTypes.object, + deployments: PropTypes.array, + selectedDeployment: PropTypes.array, + selectedPlatforms: PropTypes.array, + mapStyleID: PropTypes.string, + children: PropTypes.node, +} + +const MapContainer = styled.div` + position: relative; + display: block; + height: 500px; + width: 100%; + 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; + } +` diff --git a/src/icons/static-platform-icons.js b/src/icons/static-platform-icons.js index 2d55610a8..0c5e51d82 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/templates/campaign/index.js b/src/templates/campaign/index.js index d1375607f..202992e1c 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 b0c02df50..fbe68755e 100644 --- a/src/templates/campaign/timeline-section.js +++ b/src/templates/campaign/timeline-section.js @@ -1,20 +1,27 @@ /* eslint-disable react/prop-types */ -import React from "react" +import React, { useState } from "react" import PropTypes from "prop-types" import { graphql } from "gatsby" import { Section, SectionHeader, SectionContent } from "../../components/layout" -import { TimelineChart } from "../../components/timeline" +import { DeploymentMap, TimelineChart } from "../../components/deployments" -const TimelineSection = ({ id, deployments, bounds, campaignName }) => { +const DeploymentEventsSection = ({ id, deployments, bounds, campaignName }) => { + const [selectedDeployment, setSelectedDeployment] = useState(null) return (
    +
    @@ -49,7 +56,7 @@ export const deploymentFields = graphql` } ` -TimelineSection.propTypes = { +DeploymentEventsSection.propTypes = { id: PropTypes.string.isRequired, campaignName: PropTypes.string.isRequired, deployments: PropTypes.arrayOf( @@ -77,4 +84,4 @@ TimelineSection.propTypes = { bounds: PropTypes.array, } -export default TimelineSection +export default DeploymentEventsSection 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 5a36ff51c..1abccea59 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 -
  • diff --git a/src/utils/__tests__/platform-colors.test.js b/src/utils/__tests__/platform-colors.test.js index c7057c3e3..5275b616a 100644 --- a/src/utils/__tests__/platform-colors.test.js +++ b/src/utils/__tests__/platform-colors.test.js @@ -1,8 +1,11 @@ import { getLineColors, + getLineColorAsRGB, getStaticIcons, + getPlatformIcon, MOVING_PLATFORMS_COLORS, STATIC_PLATFORMS, + isPlatformVisible, } from "../platform-colors" describe("getLineColor", () => { @@ -46,8 +49,105 @@ 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) }) }) + +describe("getLineColorAsRGB", () => { + const platforms = ["DC-8", "ER-2", "GH", "Learjet"] + it("returns the color in RGB format", () => { + 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]) + }) +}) + +describe("getPlatformIcon", () => { + it("returns the icon id for a platform", () => { + expect(getPlatformIcon("Vehicle")).toEqual("VehicleIcon") + expect(getPlatformIcon("Permanent Land Site")).toEqual( + "PermanentLandSiteIcon" + ) + }) +}) + +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 db2168e40..2210405bd 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,11 +74,26 @@ export const STATIC_PLATFORMS = [ icon: , mapIcon: "ShipIcon", }, + { + name: "Rocket Launch Site", + color: "#FF1F19", + icon: , + mapIcon: "RocketIcon", + }, ] 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 getLineColorAsRGB = index => { + const color = MOVING_PLATFORMS_COLORS[index] + if (color === undefined) return hex2rgb(FALLBACK_COLOR) + // converts from HEX to RGB + return hex2rgb(color) +} + export const getLineColors = platforms => { const colors = flightPathColors(platforms) return [ @@ -107,3 +123,19 @@ export const getIconColors = () => { "#fff", // fallback color ] } + +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)) + ) +} diff --git a/yarn.lock b/yarn.lock index 60549a003..2888f54e0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1176,6 +1176,167 @@ 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" + 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 +2178,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 +2517,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 +2532,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 +2566,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 +3110,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 +3434,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 +3476,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 +3494,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 +3507,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 +3533,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 +3558,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 +3614,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 +3653,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 +3714,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 +3740,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 +3752,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 +3851,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 +4408,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 +4963,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 +5084,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 +5108,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 +5251,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 +5346,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 +5546,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 +5742,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 +5860,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 +6086,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 +6153,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 +6165,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 +6210,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 +6414,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 +6487,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 +6744,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 +7474,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 +7689,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 +7733,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 +8674,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 +8868,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 +9138,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 +9330,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 +9378,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 +10231,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 +10314,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 +10358,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 +10433,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 +10637,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 +10707,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 +10792,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 +10956,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 +10983,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 +11490,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 +12068,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 +12257,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 +12526,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 +13235,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 +13616,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 +13864,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 +14538,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 +14995,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==