diff --git a/app/overview/page.tsx b/app/overview/page.tsx index a4db1b2..88d6452 100644 --- a/app/overview/page.tsx +++ b/app/overview/page.tsx @@ -11,6 +11,7 @@ import ActorsTable from '@/src/components/APITables/ActorsTable/ActorsTable'; import EnclosureTable from '@/src/components/APITables/EnclosureTable/EnclosureTable'; import EphemerisTable from '@/src/components/APITables/EphemerisTable/EphemerisTable'; import SpecTable from '@/src/components/APITables/SpecTable/SpecTable'; +import TelescopesTable from '@/src/components/APITables/TelescopesTable/TelescopesTable'; import WeatherTable from '@/src/components/APITables/WeatherTable/WeatherTable'; import { Box, SimpleGrid, Stack, useMatches } from '@mantine/core'; import React from 'react'; @@ -30,6 +31,7 @@ export default function OverviewPage() { + @@ -39,6 +41,7 @@ export default function OverviewPage() { <> + diff --git a/app/telescopes/[tel]/page.tsx b/app/telescopes/[tel]/page.tsx index b3fcde8..7a0940f 100644 --- a/app/telescopes/[tel]/page.tsx +++ b/app/telescopes/[tel]/page.tsx @@ -7,10 +7,12 @@ 'use client'; +import TelescopePositionPlot from '@/src/components/TelescopePositionPlot/TelescopePositionPlot'; import { Box, Stack, Title } from '@mantine/core'; import React from 'react'; export default function TelescopePage({ params }: { params: { tel: string } }) { + const [valid, setValid] = React.useState(true); const [src, setSrc] = React.useState(undefined); const [title, setTitle] = React.useState(undefined); @@ -41,11 +43,26 @@ export default function TelescopePage({ params }: { params: { tel: string } }) { setTitle('Sky-E telescope'); break; default: - setTitle('Unknown telescope'); + setValid(false); } } }, [tel]); + if (tel == 'position') { + return ( + + Telescope Position + + + + + ); + } + + if (!valid) { + return

404 - Page Not Found

; + } + return ( <> diff --git a/package.json b/package.json index 2979034..c8dab13 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@next/bundle-analyzer": "^14.2.5", "@tabler/icons": "^3.12.0", "@tabler/icons-react": "^3.12.0", + "@visx/visx": "^3.11.0", "next": "14.2.5", "react": "18.3.1", "react-dom": "18.3.1", diff --git a/src/components/APITable/APITable.tsx b/src/components/APITable/APITable.tsx index d050b80..1902733 100644 --- a/src/components/APITable/APITable.tsx +++ b/src/components/APITable/APITable.tsx @@ -25,7 +25,7 @@ import classses from './APITable.module.css'; type Element = { key: string; - label: string; + label: string | undefined; value: any | undefined; unit?: string; valign?: string; @@ -107,14 +107,31 @@ export default function APITable(props: { } }, [noData]); - const rows = elements.map((element) => ( - - - {element.label} - - {getValue(element)} - - )); + const rows = elements.map((element) => { + let value = getValue(element); + let colspan = 1; + let isSpan = false; + + if (!element.label) { + colspan = 2; + isSpan = true; + value = element.value; + } + + return ( + + + {isSpan ? value : element.label} + + {!isSpan && {getValue(element)}} + + ); + }); return ( <> diff --git a/src/components/APITables/TelescopesTable/TelescopesTable.tsx b/src/components/APITables/TelescopesTable/TelescopesTable.tsx new file mode 100644 index 0000000..1203769 --- /dev/null +++ b/src/components/APITables/TelescopesTable/TelescopesTable.tsx @@ -0,0 +1,24 @@ +/* + * @Author: José Sánchez-Gallego (gallegoj@uw.edu) + * @Date: 2024-08-18 + * @Filename: TelescopesTable.tsx + * @License: BSD 3-clause (http://www.opensource.org/licenses/BSD-3-Clause) + */ + +'use client'; + +import { IconTelescope } from '@tabler/icons-react'; +import APITable from '../../APITable/APITable'; +import TelescopePositionPlot from '../../TelescopePositionPlot/TelescopePositionPlot'; + +export default function TelescopesTable() { + const elements = [ + { + key: 'position', + label: undefined, + value: , + }, + ]; + + return } />; +} diff --git a/src/components/LVMWebRoot/LVMAppShell/NavBar/NavBar.tsx b/src/components/LVMWebRoot/LVMAppShell/NavBar/NavBar.tsx index 06b080d..5d3e750 100644 --- a/src/components/LVMWebRoot/LVMAppShell/NavBar/NavBar.tsx +++ b/src/components/LVMWebRoot/LVMAppShell/NavBar/NavBar.tsx @@ -36,6 +36,7 @@ export default function NavBar() { + diff --git a/src/components/TelescopePositionPlot/TelescopePositionPlot.tsx b/src/components/TelescopePositionPlot/TelescopePositionPlot.tsx new file mode 100644 index 0000000..eb32fe1 --- /dev/null +++ b/src/components/TelescopePositionPlot/TelescopePositionPlot.tsx @@ -0,0 +1,218 @@ +/* + * @Author: José Sánchez-Gallego (gallegoj@uw.edu) + * @Date: 2024-08-18 + * @Filename: TelescopePositionPlot.tsx + * @License: BSD 3-clause (http://www.opensource.org/licenses/BSD-3-Clause) + */ + +// Adapted from https://airbnb.io/visx/lineradial + +import useAPICall from '@/src/hooks/use-api-call'; +import { Tooltip } from '@mantine/core'; +import { AxisLeft } from '@visx/axis'; +import { LinearGradient } from '@visx/gradient'; +import { GridAngle, GridRadial } from '@visx/grid'; +import { Group } from '@visx/group'; +import { scaleLinear } from '@visx/scale'; +import React from 'react'; + +const green = '#e5fd3d'; +export const blue = '#aeeef8'; +export const background = '#744cca'; +const strokeColor = '#744cca'; + +type TelescopeCoordinates = { + alt: number; + az: number; + ra: number; + dec: number; +}; + +type Telescopes = 'sci' | 'spec' | 'skye' | 'skyw'; + +export type TelescopesCoordinates = { + [tel in Telescopes]: TelescopeCoordinates; +}; + +// scales (just for the grids) +const xScale = scaleLinear({ + range: [0, Math.PI * 2], + domain: [0, Math.PI * 2], +}); + +const yScale = scaleLinear({ + domain: [90, 30], +}); + +const defaultSizes = { + large: [1000, 1000, 20], + small: [250, 250, 10], +}; + +const telescopeEmojis: { [tel in Telescopes]: string } = { + sci: '🔭', + spec: '⭐️', + skye: '⚫️', + skyw: '⬛️', +}; + +const telescopeToName: { [tel in Telescopes]: string } = { + sci: 'Science', + spec: 'Spec', + skye: 'Sky-E', + skyw: 'Sky-W', +}; + +type TelescopePositionPlotProps = { + size?: 'large' | 'small'; +}; + +export default function TelescopePositionPlot(props: TelescopePositionPlotProps) { + const { size = 'large' } = props; + const [width, height, padding] = defaultSizes[size]; + + const [coordinates, , , refresh] = useAPICall( + '/telescopes/coordinates', + { interval: 30000 } + ); + + const polar_to_cartesian = React.useCallback( + (r: number, theta: number) => { + // r is 0 at 90 deg and 1 at 30 deg + const rr = 3 / 2 - r / 60; + // theta is in degrees, convert to radians and rotate for North up, East left + const tt = -(Math.PI / 180) * theta - Math.PI / 2; + + return { + x: rr * Math.cos(tt) * (width / 2 - padding), + y: rr * Math.sin(tt) * (height / 2 - padding), + }; + }, + [width, height, padding] + ); + + const azTicks = React.useMemo(() => { + const ticks = ['N', 'E', 'S', 'W']; + const values = [0, 90, 180, 270]; + return ticks.map((tick, i) => { + const { x, y } = polar_to_cartesian(28.5, values[i]); + return [x, y, tick]; + }); + }, [padding]); + + const telCoordinates = React.useMemo(() => { + if (!coordinates) return {}; + + const valid = Object.fromEntries( + Object.entries(coordinates).filter(([tel, value]) => value.alt > 30) + ); + + return Object.fromEntries( + Object.entries(valid).map(([tel, value]) => [ + tel, + polar_to_cartesian(value.alt, value.az), + ]) + ); + }, [coordinates]); + + // Set the scale for the figure size and reverse it for the grid. + yScale.range([0, height / 2 - padding]); + const reverseYScale = yScale.copy().range(yScale.range().reverse()); + + return ( + + + + + (i / 4) * Math.PI)} + /> + + + {size === 'large' && + azTicks.map(([x, y, tick]) => ( + + {tick} + + ))} + {Object.entries(telCoordinates).map(([tel, { x, y }]) => ( + + + + {telescopeEmojis[tel as Telescopes]} + + + {size === 'large' && ( + + {telescopeToName[tel as Telescopes]} + + )} + + ))} + + + ); +} diff --git a/yarn.lock b/yarn.lock index 3bee19b..9553f8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4807,6 +4807,142 @@ __metadata: languageName: node linkType: hard +"@types/d3-array@npm:3.0.3": + version: 3.0.3 + resolution: "@types/d3-array@npm:3.0.3" + checksum: 10c0/4dddae293e6e16764f8e465539548454b202a0f325f7d1cd0777690c4598bd593b1fb952501421d771204988b1a10393cf062775d2fc23851b0dec96c92eb3a4 + languageName: node + linkType: hard + +"@types/d3-cloud@npm:1.2.5": + version: 1.2.5 + resolution: "@types/d3-cloud@npm:1.2.5" + dependencies: + "@types/d3": "npm:^3" + checksum: 10c0/786ee176fac9d4f3879c811bfe826fb060153d54f942f11f9e9403fc00ee229b75070eeb345e6c40ac83477e2cb854cfba1c875b9e2eb91e14f63ae38a2399f7 + languageName: node + linkType: hard + +"@types/d3-color@npm:*": + version: 3.1.3 + resolution: "@types/d3-color@npm:3.1.3" + checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae + languageName: node + linkType: hard + +"@types/d3-color@npm:3.1.0": + version: 3.1.0 + resolution: "@types/d3-color@npm:3.1.0" + checksum: 10c0/5b4be21b4b025da9ffd0cef876fb7d82f99116fa26e7ee3449771faf0a953d160246b1ceb2a9bbc7d131e32ab60d7d19013131d098616369a56f9880f25f20ef + languageName: node + linkType: hard + +"@types/d3-delaunay@npm:6.0.1": + version: 6.0.1 + resolution: "@types/d3-delaunay@npm:6.0.1" + checksum: 10c0/b03f84560a98e0d08b96095759484de6ebccc4fc137a9114795ece15898ccb67c5b0897ffe1e939658224fe387dd58090b951a2c3ff31c70ec9fe2dddc0df1f9 + languageName: node + linkType: hard + +"@types/d3-format@npm:3.0.1": + version: 3.0.1 + resolution: "@types/d3-format@npm:3.0.1" + checksum: 10c0/abfb57288fb26899bac98aeb03d652ed73d7074c12c96bb33d2d67ced9869f52f4b3e37579df883fc69a13d970199331a07e67a8bcd9f858efeb4f3a71e36188 + languageName: node + linkType: hard + +"@types/d3-geo@npm:3.1.0": + version: 3.1.0 + resolution: "@types/d3-geo@npm:3.1.0" + dependencies: + "@types/geojson": "npm:*" + checksum: 10c0/3745a93439038bb5b0b38facf435f7079812921d46406f5d38deaee59e90084ff742443c7ea0a8446df81a0d81eaf622fe7068cf4117a544bd4aa3b2dc182f88 + languageName: node + linkType: hard + +"@types/d3-hierarchy@npm:^1.1.6": + version: 1.1.11 + resolution: "@types/d3-hierarchy@npm:1.1.11" + checksum: 10c0/50973998040fbd1e484994770a0329f931e80a00d6b7bccfec88287d291c1b55c71ff99acc11ae7964503cff686494d37412abe1d99f73f365168fc3f09a7d8b + languageName: node + linkType: hard + +"@types/d3-interpolate@npm:3.0.1": + version: 3.0.1 + resolution: "@types/d3-interpolate@npm:3.0.1" + dependencies: + "@types/d3-color": "npm:*" + checksum: 10c0/1c7577045a4a30dc177bca10980c456a28c9b89b1a5406fe7303824dd9cc898f67f8dafd8e22a7702ca5df12a28a5f48f77d92a9b5d8f1fc0939f33831067114 + languageName: node + linkType: hard + +"@types/d3-path@npm:^1, @types/d3-path@npm:^1.0.8": + version: 1.0.11 + resolution: "@types/d3-path@npm:1.0.11" + checksum: 10c0/3353fe6c009b1d9e32aa5442787c0a1816120f83c73d6b4ba24d5d7c51472561e664e8541ac672cdca598f8c91879be14d5f7b66fba16f7c06afa45d992c4660 + languageName: node + linkType: hard + +"@types/d3-random@npm:^2.2.0": + version: 2.2.3 + resolution: "@types/d3-random@npm:2.2.3" + checksum: 10c0/a0f5ef08372bd3f1d48b639477418550c1ce5b8f63152edd2dff6b42431656bc6e1a85ebe7ef6c91aafb13bc032a23bb5a30cf987e55efff90d046a3b5212eae + languageName: node + linkType: hard + +"@types/d3-scale@npm:4.0.2": + version: 4.0.2 + resolution: "@types/d3-scale@npm:4.0.2" + dependencies: + "@types/d3-time": "npm:*" + checksum: 10c0/2c21be0a715f104bbc3cbfe648a7a1f0b1ccfb0ec93aad5df0ba1a342dced0bfa19761f5378a8790e9073bd001df176b814390c555984ce0917744d40e8efd3d + languageName: node + linkType: hard + +"@types/d3-shape@npm:^1.3.1": + version: 1.3.12 + resolution: "@types/d3-shape@npm:1.3.12" + dependencies: + "@types/d3-path": "npm:^1" + checksum: 10c0/e4aa0a0bc200d5a50d7f699da0e848a01b37447e92ecc3484eefbed7fcd2bd90dc0adc7e2b7e437f484f69ee91f3ff57c6f97a9853c5467ac53d3c37e78fbac7 + languageName: node + linkType: hard + +"@types/d3-time-format@npm:2.1.0": + version: 2.1.0 + resolution: "@types/d3-time-format@npm:2.1.0" + checksum: 10c0/46d8c0ce20cfa020e75f5a1a246238b62e5875d15f12419a1e7c3e894139c9aa00d7f45ca31d0776f1163fe75a546cbfdabee65c7ddb9f2571161b3726ad8625 + languageName: node + linkType: hard + +"@types/d3-time@npm:*": + version: 3.0.3 + resolution: "@types/d3-time@npm:3.0.3" + checksum: 10c0/245a8aadca504df27edf730de502e47a68f16ae795c86b5ca35e7afa91c133aa9ef4d08778f8cf1ed2be732f89a4105ba4b437ce2afbdfd17d3d937b6ba5f568 + languageName: node + linkType: hard + +"@types/d3-time@npm:3.0.0": + version: 3.0.0 + resolution: "@types/d3-time@npm:3.0.0" + checksum: 10c0/4f900608d5c557b09b38e4b096723af5eb4508a1b32f9afae253fe77a4bcbbe821a14225bab1c2ea36ddbc5c4154ab3563452c6b6eba7a9f48cefad94276e6b5 + languageName: node + linkType: hard + +"@types/d3-voronoi@npm:^1.1.9": + version: 1.1.12 + resolution: "@types/d3-voronoi@npm:1.1.12" + checksum: 10c0/9cb1d88400ba442edd27b93a0e80bf6c4e88ab1e6ced4a9761b232e26f565c42753f4aa25ca0f9f773f1d13dae1ed10b3282b48b3fe078f3a7a25706f3a482e1 + languageName: node + linkType: hard + +"@types/d3@npm:^3": + version: 3.5.53 + resolution: "@types/d3@npm:3.5.53" + checksum: 10c0/1ffab5a29e9a5eb2fe976b38333a085406b3f1f3d0d1ed07d2947217ad891e61c95b06d74bb7db378b7d6ea51df93bc7c57edfcade45dadd4dff7e0f7c415507 + languageName: node + linkType: hard + "@types/doctrine@npm:^0.0.9": version: 0.0.9 resolution: "@types/doctrine@npm:0.0.9" @@ -4898,6 +5034,13 @@ __metadata: languageName: node linkType: hard +"@types/geojson@npm:*": + version: 7946.0.14 + resolution: "@types/geojson@npm:7946.0.14" + checksum: 10c0/54f3997708fa2970c03eeb31f7e4540a0eb6387b15e9f8a60513a1409c23cafec8d618525404573468b59c6fecbfd053724b3327f7fca416729c26271d799f55 + languageName: node + linkType: hard + "@types/graceful-fs@npm:^4.1.3": version: 4.1.7 resolution: "@types/graceful-fs@npm:4.1.7" @@ -5004,6 +5147,13 @@ __metadata: languageName: node linkType: hard +"@types/lodash@npm:^4.14.172": + version: 4.17.7 + resolution: "@types/lodash@npm:4.17.7" + checksum: 10c0/40c965b5ffdcf7ff5c9105307ee08b782da228c01b5c0529122c554c64f6b7168fc8f11dc79aa7bae4e67e17efafaba685dc3a47e294dbf52a65ed2b67100561 + languageName: node + linkType: hard + "@types/mdx@npm:^2.0.0": version: 2.0.7 resolution: "@types/mdx@npm:2.0.7" @@ -5087,7 +5237,16 @@ __metadata: languageName: node linkType: hard -"@types/react@npm:18.3.3": +"@types/react-dom@npm:*": + version: 18.3.0 + resolution: "@types/react-dom@npm:18.3.0" + dependencies: + "@types/react": "npm:*" + checksum: 10c0/6c90d2ed72c5a0e440d2c75d99287e4b5df3e7b011838cdc03ae5cd518ab52164d86990e73246b9d812eaf02ec351d74e3b4f5bd325bf341e13bf980392fd53b + languageName: node + linkType: hard + +"@types/react@npm:*, @types/react@npm:18.3.3": version: 18.3.3 resolution: "@types/react@npm:18.3.3" dependencies: @@ -5442,6 +5601,582 @@ __metadata: languageName: node linkType: hard +"@use-gesture/core@npm:10.3.1": + version: 10.3.1 + resolution: "@use-gesture/core@npm:10.3.1" + checksum: 10c0/2e3b5c0f7fe26cdb47be3a9c2a58a6a9edafc5b2895b07d2898eda9ab5a2b29fb0098b15597baa0856907b593075cd44cc69bba4785c9cfb7b6fabaa3b52cd3e + languageName: node + linkType: hard + +"@use-gesture/react@npm:^10.0.0-beta.22": + version: 10.3.1 + resolution: "@use-gesture/react@npm:10.3.1" + dependencies: + "@use-gesture/core": "npm:10.3.1" + peerDependencies: + react: ">= 16.8.0" + checksum: 10c0/978da66e4e7c424866ad52eba8fdf0ce93a4c8fc44f8837c7043e68c6a6107cd67e817fffb27f7db2ae871ef2f6addb0c8ddf1586f24c67b7e6aef1646c668cf + languageName: node + linkType: hard + +"@visx/annotation@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/annotation@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/drag": "npm:3.3.0" + "@visx/group": "npm:3.3.0" + "@visx/text": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + react-use-measure: "npm:^2.0.4" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/cf5c505e0ffec1cecc091656e633beba17db6e558701184f8e8257bf65c1e97acd5a0ae2d5ed45a3b5aec7d550f13ac965b01c69a65ed87e23169a3efeadd8fa + languageName: node + linkType: hard + +"@visx/axis@npm:3.10.1": + version: 3.10.1 + resolution: "@visx/axis@npm:3.10.1" + dependencies: + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + "@visx/point": "npm:3.3.0" + "@visx/scale": "npm:3.5.0" + "@visx/shape": "npm:3.5.0" + "@visx/text": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.0" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/163b5c216f52f4a3fa931bb92dc417cc8b184f76ee5095373f1d8026f32ce3530b689d2bd06ae8c1803927cad377f3a814cebcc9d50b48f969e158e2c2fcf0ce + languageName: node + linkType: hard + +"@visx/bounds@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/bounds@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@types/react-dom": "npm:*" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + react-dom: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/4c43a80e5d0fdfb5bb6123b26bb32b43645e04fa16cd1f1c1a5fdb7e9e9cd40c9619d269e151c1276b0fc925ae38e92c8a8f608e7be4b98fdf99dbd18837a265 + languageName: node + linkType: hard + +"@visx/brush@npm:3.10.4": + version: 3.10.4 + resolution: "@visx/brush@npm:3.10.4" + dependencies: + "@visx/drag": "npm:3.3.0" + "@visx/event": "npm:3.3.0" + "@visx/group": "npm:3.3.0" + "@visx/scale": "npm:3.5.0" + "@visx/shape": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/409aee49a8b1cc616df313ce117f266a52ff1bcd1bf6681bfa4c20494257677e1f533146472358b0b1a3238641148b83828ecfb923eea4dc4f40e2217f137a2a + languageName: node + linkType: hard + +"@visx/clip-path@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/clip-path@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/0f84deef9b11dc3b77239362cba75a3d162a36087e56bba9e6db81eea302f88b60a2688fa090935ecb6c1c45230b80e4d81344e3b924f509d7bb5f442a5efb13 + languageName: node + linkType: hard + +"@visx/curve@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/curve@npm:3.3.0" + dependencies: + "@types/d3-shape": "npm:^1.3.1" + d3-shape: "npm:^1.0.6" + checksum: 10c0/35ab8fc7f38182d39da587b159f7df9ed0ea4cb67c9aa84196dec076059b09a0777d35e960f74acb1e26ba8c9272c7a097d84b3b952d03f3791a55c2f7577c85 + languageName: node + linkType: hard + +"@visx/delaunay@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/delaunay@npm:3.5.0" + dependencies: + "@types/react": "npm:*" + "@visx/vendor": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/50c4e3f026ba68c032978394a497a84f98a4d71769d67b1165758080676407c077f550f69b7286f03d06f3e067ac8f5a799bde5c480c64d6fb06e47ac46ca865 + languageName: node + linkType: hard + +"@visx/drag@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/drag@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/event": "npm:3.3.0" + "@visx/point": "npm:3.3.0" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/03679a891ef5e2b92c182d8b407e696832bb7b491b6829b391939cc55f50a97248ed7383dcc48101d755a72711ded7b36051b92b2b6a388653aca41e9197131d + languageName: node + linkType: hard + +"@visx/event@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/event@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/point": "npm:3.3.0" + checksum: 10c0/bcf7eae045e3619d12b69a9324b6f73bfdc0817c8e3e6572cefcf21db5d877926c810aad4a3b481ec2eeca212f7e2711a7d7ad32e8c058ccd65a99b5d45a40b1 + languageName: node + linkType: hard + +"@visx/geo@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/geo@npm:3.5.0" + dependencies: + "@types/geojson": "npm:*" + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + "@visx/vendor": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/8b1b7ddd1da0702ff84e02104bfef17b9f8bd723ae69e243a2fd077538a98634130aec3c26b3dc38a6ac21470f0a741025fe7d85dbd75026d256c7087b25f96c + languageName: node + linkType: hard + +"@visx/glyph@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/glyph@npm:3.3.0" + dependencies: + "@types/d3-shape": "npm:^1.3.1" + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + classnames: "npm:^2.3.1" + d3-shape: "npm:^1.2.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/9ca2f0787a07b3c6d378a05e29f32ebf30c97f0a5e19e20e6a753043a447764820e82a4057e46af58c5785d708e68cb9aeaa5fa83ed2c5202221c0a5d1df4c9a + languageName: node + linkType: hard + +"@visx/gradient@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/gradient@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + prop-types: "npm:^15.5.7" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/6e26b34a986fdbde70f4738317ae5d1ffdc4565a4b14430e89e02771ac28943676723a973d547663f2613f76f7fb43b68c1cd5306082f19d1d7c38779e5fc933 + languageName: node + linkType: hard + +"@visx/grid@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/grid@npm:3.5.0" + dependencies: + "@types/react": "npm:*" + "@visx/curve": "npm:3.3.0" + "@visx/group": "npm:3.3.0" + "@visx/point": "npm:3.3.0" + "@visx/scale": "npm:3.5.0" + "@visx/shape": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/2a7ca10a06725fb6c00a74cd29164bcbbe50022e449f569eed79d5274525bbe5ea5c272ef6c9b1e669e0aa8d033291d5c2c69c5e9ddde0bb8ce34965ee14f31e + languageName: node + linkType: hard + +"@visx/group@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/group@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/43ab4fc285cb1a0f9bae8aa5e1ac906f207163da4bd3104f431141b21e5987fe86dafee70808b074c3644aa2b117768997d35e18fe3e695008599a62759982fc + languageName: node + linkType: hard + +"@visx/heatmap@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/heatmap@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/946e4e43459bcc63c716a9626bc8ab98d610593d69fed49fb76c18d8a82e3fb41d9f87cdbc59548afcaaa1a37a0f87126141789851240ac8fe9f23b8897c3541 + languageName: node + linkType: hard + +"@visx/hierarchy@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/hierarchy@npm:3.3.0" + dependencies: + "@types/d3-hierarchy": "npm:^1.1.6" + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + classnames: "npm:^2.3.1" + d3-hierarchy: "npm:^1.1.4" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/55d8d51afc6bfdfde21625e2b7f56ba67317570390b2b9d05de71cea839be2d6897d2d4368c25900b0064f83806d0f16af2c4920b6e1b713928e8dc8f98a4d38 + languageName: node + linkType: hard + +"@visx/legend@npm:3.10.3": + version: 3.10.3 + resolution: "@visx/legend@npm:3.10.3" + dependencies: + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + "@visx/scale": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/8c7f9f1f5fec1815619f186a1f2bf6f0c30d3975b6611fb9a39ed6f768541ed72a23b9051ac0d5977362cf0b99689f87d45154b0fdf7431b38e3cf17cb4858f9 + languageName: node + linkType: hard + +"@visx/marker@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/marker@npm:3.5.0" + dependencies: + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + "@visx/shape": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/3f50eef7f0b1f927aca0d35e6ff5d1d2597181603d0faa2795fc0d3770487f429fe61bdab321b21bf9f4d149b50ffa60eb9dfb417b4c84c13cab7df0c1ea9bf5 + languageName: node + linkType: hard + +"@visx/mock-data@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/mock-data@npm:3.3.0" + dependencies: + "@types/d3-random": "npm:^2.2.0" + d3-random: "npm:^2.2.2" + checksum: 10c0/dffb891eb888a9e76e21c136b1469e5b2bc5448b83c1338c31d26dda52dcecf95805983bf0c5687b00b785a57228bd6ed252c2a3f54d2e7a83ce3069d3d07c9c + languageName: node + linkType: hard + +"@visx/network@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/network@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/group": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/85f007431946b57703d229f3af9c5bf21635a539986842f11650810a6049afbead132ba7b50db18ea4155ef6e95ae78d0a25c69e007fc377dea5831a248ddf3b + languageName: node + linkType: hard + +"@visx/pattern@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/pattern@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/7808ef575a9e47b16fd987d790dfa7b4188be01b3c5c290936ba5007f1e1d04f81dbb9ffbf700e8fbf6fe8e7f3d9973b90fcc0b93222d1079350071dd7d7be27 + languageName: node + linkType: hard + +"@visx/point@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/point@npm:3.3.0" + checksum: 10c0/cf7b6dc16f9ddedadba7278302ccbcf486412d82b6bcbfb2033f5206b00ae5b22c30015b5927b3b298e74895130745f8ca87a483d935d120e198890fca97f1eb + languageName: node + linkType: hard + +"@visx/react-spring@npm:3.10.1": + version: 3.10.1 + resolution: "@visx/react-spring@npm:3.10.1" + dependencies: + "@types/react": "npm:*" + "@visx/axis": "npm:3.10.1" + "@visx/grid": "npm:3.5.0" + "@visx/scale": "npm:3.5.0" + "@visx/text": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.6.2" + peerDependencies: + "@react-spring/web": ^9.4.5 + react: ^16.3.0-0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/a2eb1bd8fda41f3f95fb1dcc4a3b58ab582daca8023e7056c95c372bda46b63aea2397d0b752d84e17968e73a2157ee3fad5538b9417862b64663fe15c12625f + languageName: node + linkType: hard + +"@visx/responsive@npm:3.10.2": + version: 3.10.2 + resolution: "@visx/responsive@npm:3.10.2" + dependencies: + "@types/lodash": "npm:^4.14.172" + "@types/react": "npm:*" + lodash: "npm:^4.17.21" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/468871fad0aa8b40771d7d506bb1925d9d4cd5f25acd37418bc907b48c89bb01ea50999b48038590643151325781f0c917deac4a934b4cb73398ff2cd2e36073 + languageName: node + linkType: hard + +"@visx/scale@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/scale@npm:3.5.0" + dependencies: + "@visx/vendor": "npm:3.5.0" + checksum: 10c0/c76b9243ad7fe0b4016e6c41d2443395d5c82d39306fe4a605c3b6783067226af3e770489252226ead7a7395d585c1fdf41a40f1e823ec7d661c4af112b61b68 + languageName: node + linkType: hard + +"@visx/shape@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/shape@npm:3.5.0" + dependencies: + "@types/d3-path": "npm:^1.0.8" + "@types/d3-shape": "npm:^1.3.1" + "@types/lodash": "npm:^4.14.172" + "@types/react": "npm:*" + "@visx/curve": "npm:3.3.0" + "@visx/group": "npm:3.3.0" + "@visx/scale": "npm:3.5.0" + classnames: "npm:^2.3.1" + d3-path: "npm:^1.0.5" + d3-shape: "npm:^1.2.0" + lodash: "npm:^4.17.21" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/77c45ac09926c3398aab511b3c8d2cf2f77a86ddad13c171c118a81febb8bcbc9f7061751d483eb4ae9f86f5d935b5532b5b5e6e93dc4056bcc4793ece1e6333 + languageName: node + linkType: hard + +"@visx/text@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/text@npm:3.3.0" + dependencies: + "@types/lodash": "npm:^4.14.172" + "@types/react": "npm:*" + classnames: "npm:^2.3.1" + lodash: "npm:^4.17.21" + prop-types: "npm:^15.7.2" + reduce-css-calc: "npm:^1.3.0" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/78595c535934775c5ce5d2bb8a926608e0119b24cfab9bed12221fcb88a9fbccdd8775339b130b1dbf555c32a356e71db23cb9e0387a320ec5ca9be95f6d9c20 + languageName: node + linkType: hard + +"@visx/threshold@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/threshold@npm:3.5.0" + dependencies: + "@types/react": "npm:*" + "@visx/clip-path": "npm:3.3.0" + "@visx/shape": "npm:3.5.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/a1894ade8fba061bbbde8cead8b6e1573fa9a4c1247d75b5c8e3223ec084faf796d81c80fa9f135bfa0244e6d275a37a512aaff12937c30f9ea7dab9762311d2 + languageName: node + linkType: hard + +"@visx/tooltip@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/tooltip@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@visx/bounds": "npm:3.3.0" + classnames: "npm:^2.3.1" + prop-types: "npm:^15.5.10" + react-use-measure: "npm:^2.0.4" + peerDependencies: + react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + react-dom: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/56b58a8ad8880d66bcf7868dc46dfc259da6e2f85a3fc25b7f97b8020c41bea756b723ca7e966ecb61d8e4bb03350baeaac998f84e4b38764a84967cf42171c7 + languageName: node + linkType: hard + +"@visx/vendor@npm:3.5.0": + version: 3.5.0 + resolution: "@visx/vendor@npm:3.5.0" + dependencies: + "@types/d3-array": "npm:3.0.3" + "@types/d3-color": "npm:3.1.0" + "@types/d3-delaunay": "npm:6.0.1" + "@types/d3-format": "npm:3.0.1" + "@types/d3-geo": "npm:3.1.0" + "@types/d3-interpolate": "npm:3.0.1" + "@types/d3-scale": "npm:4.0.2" + "@types/d3-time": "npm:3.0.0" + "@types/d3-time-format": "npm:2.1.0" + d3-array: "npm:3.2.1" + d3-color: "npm:3.1.0" + d3-delaunay: "npm:6.0.2" + d3-format: "npm:3.1.0" + d3-geo: "npm:3.1.0" + d3-interpolate: "npm:3.0.1" + d3-scale: "npm:4.0.2" + d3-time: "npm:3.1.0" + d3-time-format: "npm:4.1.0" + internmap: "npm:2.0.3" + checksum: 10c0/fe9c9c845e697924bba8e764ee3c55851fc31aea733c3013e315e53fad00c4faff5a1d2a778539887af0f0a0a3a44c7fede35861e42909bbe37d56b0171a53ed + languageName: node + linkType: hard + +"@visx/visx@npm:^3.11.0": + version: 3.11.0 + resolution: "@visx/visx@npm:3.11.0" + dependencies: + "@visx/annotation": "npm:3.3.0" + "@visx/axis": "npm:3.10.1" + "@visx/bounds": "npm:3.3.0" + "@visx/brush": "npm:3.10.4" + "@visx/clip-path": "npm:3.3.0" + "@visx/curve": "npm:3.3.0" + "@visx/delaunay": "npm:3.5.0" + "@visx/drag": "npm:3.3.0" + "@visx/event": "npm:3.3.0" + "@visx/geo": "npm:3.5.0" + "@visx/glyph": "npm:3.3.0" + "@visx/gradient": "npm:3.3.0" + "@visx/grid": "npm:3.5.0" + "@visx/group": "npm:3.3.0" + "@visx/heatmap": "npm:3.3.0" + "@visx/hierarchy": "npm:3.3.0" + "@visx/legend": "npm:3.10.3" + "@visx/marker": "npm:3.5.0" + "@visx/mock-data": "npm:3.3.0" + "@visx/network": "npm:3.3.0" + "@visx/pattern": "npm:3.3.0" + "@visx/point": "npm:3.3.0" + "@visx/responsive": "npm:3.10.2" + "@visx/scale": "npm:3.5.0" + "@visx/shape": "npm:3.5.0" + "@visx/text": "npm:3.3.0" + "@visx/threshold": "npm:3.5.0" + "@visx/tooltip": "npm:3.3.0" + "@visx/voronoi": "npm:3.3.0" + "@visx/wordcloud": "npm:3.3.0" + "@visx/xychart": "npm:3.11.0" + "@visx/zoom": "npm:3.3.0" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/27a786ffe4bebcbf066bfbecf639ba4cf909028683e4ea84998eed5e37e0a68644f3b49bb3957fa691866c6122cc84b1d45de8df76cca71bab46f8de8254307e + languageName: node + linkType: hard + +"@visx/voronoi@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/voronoi@npm:3.3.0" + dependencies: + "@types/d3-voronoi": "npm:^1.1.9" + "@types/react": "npm:*" + classnames: "npm:^2.3.1" + d3-voronoi: "npm:^1.1.2" + prop-types: "npm:^15.6.1" + peerDependencies: + react: ^16.3.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/d10ee0f652dd115ea64997b9f3c93b2e5449bdda0d6dceb66f98ed7e9636f1b364ddfdf38e3a9a3a988fb5be66be793b43fa4b4df81c77cbbffb401b51f8e8fc + languageName: node + linkType: hard + +"@visx/wordcloud@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/wordcloud@npm:3.3.0" + dependencies: + "@types/d3-cloud": "npm:1.2.5" + "@visx/group": "npm:3.3.0" + d3-cloud: "npm:^1.2.5" + peerDependencies: + react: ^16.8.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/7072331ed706de89642b9e2a522a1fe51b38bd3e1c58f94034fc330cbf3eaf7c38781ec07ebb8ea7208b13b86ad2e7cb8516bec89e362f2555e5689838ede3ab + languageName: node + linkType: hard + +"@visx/xychart@npm:3.11.0": + version: 3.11.0 + resolution: "@visx/xychart@npm:3.11.0" + dependencies: + "@types/lodash": "npm:^4.14.172" + "@types/react": "npm:*" + "@visx/annotation": "npm:3.3.0" + "@visx/axis": "npm:3.10.1" + "@visx/event": "npm:3.3.0" + "@visx/glyph": "npm:3.3.0" + "@visx/grid": "npm:3.5.0" + "@visx/react-spring": "npm:3.10.1" + "@visx/responsive": "npm:3.10.2" + "@visx/scale": "npm:3.5.0" + "@visx/shape": "npm:3.5.0" + "@visx/text": "npm:3.3.0" + "@visx/tooltip": "npm:3.3.0" + "@visx/vendor": "npm:3.5.0" + "@visx/voronoi": "npm:3.3.0" + classnames: "npm:^2.3.1" + d3-interpolate-path: "npm:2.2.1" + d3-shape: "npm:^2.0.0" + lodash: "npm:^4.17.21" + mitt: "npm:^2.1.0" + prop-types: "npm:^15.6.2" + peerDependencies: + "@react-spring/web": ^9.4.5 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + checksum: 10c0/4d3b1a9abff636ccf59526db65bcdf7876d22f79f4df7fe794c209c74599dc3ea1815b70bcf44311700781a3776305deb3152d34c3038b07c52ad1d8fe1987df + languageName: node + linkType: hard + +"@visx/zoom@npm:3.3.0": + version: 3.3.0 + resolution: "@visx/zoom@npm:3.3.0" + dependencies: + "@types/react": "npm:*" + "@use-gesture/react": "npm:^10.0.0-beta.22" + "@visx/event": "npm:3.3.0" + prop-types: "npm:^15.6.2" + peerDependencies: + react: ^16.0.0-0 || ^17.0.0-0 || ^18.0.0-0 + checksum: 10c0/49540fdb5f814caad4a1d7fc33cd1a702513744ed36556ce317983c1a159fb846025cfcb71a605fa2bb69ba436310d0ec8af4486a3081aeb546a0c28efb48ca0 + languageName: node + linkType: hard + "@vitest/expect@npm:1.6.0": version: 1.6.0 resolution: "@vitest/expect@npm:1.6.0" @@ -6372,6 +7107,13 @@ __metadata: languageName: node linkType: hard +"balanced-match@npm:^0.4.2": + version: 0.4.2 + resolution: "balanced-match@npm:0.4.2" + checksum: 10c0/cd4e15add0f4ef14c4fe960d9f4a343052d7c0f7939e1b5e54c8f24417a501bde1f17e191b676daebd16ae316955c918f93b8ed0414bb03d038dd0159c9998e5 + languageName: node + linkType: hard + "balanced-match@npm:^1.0.0": version: 1.0.2 resolution: "balanced-match@npm:1.0.2" @@ -6928,6 +7670,13 @@ __metadata: languageName: node linkType: hard +"classnames@npm:^2.3.1": + version: 2.5.1 + resolution: "classnames@npm:2.5.1" + checksum: 10c0/afff4f77e62cea2d79c39962980bf316bacb0d7c49e13a21adaadb9221e1c6b9d3cdb829d8bb1b23c406f4e740507f37e1dcf506f7e3b7113d17c5bab787aa69 + languageName: node + linkType: hard + "clean-css@npm:^5.2.2": version: 5.3.2 resolution: "clean-css@npm:5.3.2" @@ -7490,6 +8239,172 @@ __metadata: languageName: node linkType: hard +"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3": + version: 3.2.4 + resolution: "d3-array@npm:3.2.4" + dependencies: + internmap: "npm:1 - 2" + checksum: 10c0/08b95e91130f98c1375db0e0af718f4371ccacef7d5d257727fe74f79a24383e79aba280b9ffae655483ffbbad4fd1dec4ade0119d88c4749f388641c8bf8c50 + languageName: node + linkType: hard + +"d3-array@npm:3.2.1": + version: 3.2.1 + resolution: "d3-array@npm:3.2.1" + dependencies: + internmap: "npm:1 - 2" + checksum: 10c0/91c6d739c7762ffcd31177b3fffc7aac75921fa9924e713a7048a0153fd95aae19b4dc5b3f72dd5a0ddafac245d66c0adec8c43cb166d5c19d3f61d92a53f733 + languageName: node + linkType: hard + +"d3-cloud@npm:^1.2.5": + version: 1.2.7 + resolution: "d3-cloud@npm:1.2.7" + dependencies: + d3-dispatch: "npm:^1.0.3" + checksum: 10c0/9a1eb9b1854d5f54b9aba9afe1edfeca14f2849e6176aa6fcee51def62fd825c802e9b2cf37d8b3d51868c894558596fbe5a0bd956d9bf065b55decb95892e10 + languageName: node + linkType: hard + +"d3-color@npm:1 - 3, d3-color@npm:3.1.0": + version: 3.1.0 + resolution: "d3-color@npm:3.1.0" + checksum: 10c0/a4e20e1115fa696fce041fbe13fbc80dc4c19150fa72027a7c128ade980bc0eeeba4bcf28c9e21f0bce0e0dbfe7ca5869ef67746541dcfda053e4802ad19783c + languageName: node + linkType: hard + +"d3-delaunay@npm:6.0.2": + version: 6.0.2 + resolution: "d3-delaunay@npm:6.0.2" + dependencies: + delaunator: "npm:5" + checksum: 10c0/57d21902577a63fd9ab732f082e4e45f13f41f01cea8148ef24e7cd9414644f42cd3e0194d7acd8c0209707feb7aaf74688bd2a007f34a4c7b0fd5e877493b79 + languageName: node + linkType: hard + +"d3-dispatch@npm:^1.0.3": + version: 1.0.6 + resolution: "d3-dispatch@npm:1.0.6" + checksum: 10c0/6302554a019e2d75d4e3dc7e8757a00b4b12ac2a2952bccc66e4478ccd170f425e2b6a9443118d5feadcd2439f33582b63c7925e832104ff1978cadea2a30dc2 + languageName: node + linkType: hard + +"d3-format@npm:1 - 3, d3-format@npm:3.1.0": + version: 3.1.0 + resolution: "d3-format@npm:3.1.0" + checksum: 10c0/049f5c0871ebce9859fc5e2f07f336b3c5bfff52a2540e0bac7e703fce567cd9346f4ad1079dd18d6f1e0eaa0599941c1810898926f10ac21a31fd0a34b4aa75 + languageName: node + linkType: hard + +"d3-geo@npm:3.1.0": + version: 3.1.0 + resolution: "d3-geo@npm:3.1.0" + dependencies: + d3-array: "npm:2.5.0 - 3" + checksum: 10c0/5b0a26d232787ca9e824a660827c28626a51004328dde7c76a1bd300d3cad8c7eeb55fea64c8cd6495d5a34fea434fb1418d59926a6cb24e6fb6e2b6f62c6bd9 + languageName: node + linkType: hard + +"d3-hierarchy@npm:^1.1.4": + version: 1.1.9 + resolution: "d3-hierarchy@npm:1.1.9" + checksum: 10c0/63b0ae0953bda076866b8705f8ea6fa1f67ded7ee99d98b20ef4364ce21868c292c9b45e887fde0f0dba1d0202466b2a87e7d5a6cc6388e759aadc5f055142e0 + languageName: node + linkType: hard + +"d3-interpolate-path@npm:2.2.1": + version: 2.2.1 + resolution: "d3-interpolate-path@npm:2.2.1" + checksum: 10c0/3f227dcbbcba009829380289f973ed0e7d29e04a03bf6b020f0e0045347a70033d3903734522eefa25c89856954fe3b625b046565c7fcdea47033aa7a610f677 + languageName: node + linkType: hard + +"d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3.0.1": + version: 3.0.1 + resolution: "d3-interpolate@npm:3.0.1" + dependencies: + d3-color: "npm:1 - 3" + checksum: 10c0/19f4b4daa8d733906671afff7767c19488f51a43d251f8b7f484d5d3cfc36c663f0a66c38fe91eee30f40327443d799be17169f55a293a3ba949e84e57a33e6a + languageName: node + linkType: hard + +"d3-path@npm:1 - 2": + version: 2.0.0 + resolution: "d3-path@npm:2.0.0" + checksum: 10c0/ef206f83c1123d4ad364c23b6fe877a7cd8afa76c30e13bd0588cd9b7c4ed4b577ebfd9499cdcac63268d7ae29c0a53ec38d6623a7c98585f3c118323e8f473f + languageName: node + linkType: hard + +"d3-path@npm:1, d3-path@npm:^1.0.5": + version: 1.0.9 + resolution: "d3-path@npm:1.0.9" + checksum: 10c0/e35e84df5abc18091f585725b8235e1fa97efc287571585427d3a3597301e6c506dea56b11dfb3c06ca5858b3eb7f02c1bf4f6a716aa9eade01c41b92d497eb5 + languageName: node + linkType: hard + +"d3-random@npm:^2.2.2": + version: 2.2.2 + resolution: "d3-random@npm:2.2.2" + checksum: 10c0/2c7413c4c626272cf12945ff14dacffdccc531989b551f8cfdd9c0266ae902cd9ffffc9ff98b693594a5ff342fb0f22e70afcce908cc6c43fb082bd52ace5acf + languageName: node + linkType: hard + +"d3-scale@npm:4.0.2": + version: 4.0.2 + resolution: "d3-scale@npm:4.0.2" + dependencies: + d3-array: "npm:2.10.0 - 3" + d3-format: "npm:1 - 3" + d3-interpolate: "npm:1.2.0 - 3" + d3-time: "npm:2.1.1 - 3" + d3-time-format: "npm:2 - 4" + checksum: 10c0/65d9ad8c2641aec30ed5673a7410feb187a224d6ca8d1a520d68a7d6eac9d04caedbff4713d1e8545be33eb7fec5739983a7ab1d22d4e5ad35368c6729d362f1 + languageName: node + linkType: hard + +"d3-shape@npm:^1.0.6, d3-shape@npm:^1.2.0": + version: 1.3.7 + resolution: "d3-shape@npm:1.3.7" + dependencies: + d3-path: "npm:1" + checksum: 10c0/548057ce59959815decb449f15632b08e2a1bdce208f9a37b5f98ec7629dda986c2356bc7582308405ce68aedae7d47b324df41507404df42afaf352907577ae + languageName: node + linkType: hard + +"d3-shape@npm:^2.0.0": + version: 2.1.0 + resolution: "d3-shape@npm:2.1.0" + dependencies: + d3-path: "npm:1 - 2" + checksum: 10c0/d86c84322b0ccd550df93ec4986359548cb2c25c9fae326984a59d1caeeb40c78f62678bb93951eed65536bc2d8efa446b13386acb79875234dc79dbcf16dbd7 + languageName: node + linkType: hard + +"d3-time-format@npm:2 - 4, d3-time-format@npm:4.1.0": + version: 4.1.0 + resolution: "d3-time-format@npm:4.1.0" + dependencies: + d3-time: "npm:1 - 3" + checksum: 10c0/735e00fb25a7fd5d418fac350018713ae394eefddb0d745fab12bbff0517f9cdb5f807c7bbe87bb6eeb06249662f8ea84fec075f7d0cd68609735b2ceb29d206 + languageName: node + linkType: hard + +"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3.1.0": + version: 3.1.0 + resolution: "d3-time@npm:3.1.0" + dependencies: + d3-array: "npm:2 - 3" + checksum: 10c0/a984f77e1aaeaa182679b46fbf57eceb6ebdb5f67d7578d6f68ef933f8eeb63737c0949991618a8d29472dbf43736c7d7f17c452b2770f8c1271191cba724ca1 + languageName: node + linkType: hard + +"d3-voronoi@npm:^1.1.2": + version: 1.1.4 + resolution: "d3-voronoi@npm:1.1.4" + checksum: 10c0/9fd4689323a8eed547dde44e9cae0b3e6a7333447cf37b069e278b8e899fc16e0251d099fe22d751c900a3a0b7a610a16e747224219538758afaf4561749047a + languageName: node + linkType: hard + "damerau-levenshtein@npm:^1.0.8": version: 1.0.8 resolution: "damerau-levenshtein@npm:1.0.8" @@ -7714,6 +8629,15 @@ __metadata: languageName: node linkType: hard +"delaunator@npm:5": + version: 5.0.1 + resolution: "delaunator@npm:5.0.1" + dependencies: + robust-predicates: "npm:^3.0.2" + checksum: 10c0/3d7ea4d964731c5849af33fec0a271bc6753487b331fd7d43ccb17d77834706e1c383e6ab8fda0032da955e7576d1083b9603cdaf9cbdfd6b3ebd1fb8bb675a5 + languageName: node + linkType: hard + "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -10229,6 +11153,13 @@ __metadata: languageName: node linkType: hard +"internmap@npm:1 - 2, internmap@npm:2.0.3": + version: 2.0.3 + resolution: "internmap@npm:2.0.3" + checksum: 10c0/8cedd57f07bbc22501516fbfc70447f0c6812871d471096fad9ea603516eacc2137b633633daf432c029712df0baefd793686388ddf5737e3ea15074b877f7ed + languageName: node + linkType: hard + "invariant@npm:^2.2.4": version: 2.2.4 resolution: "invariant@npm:2.2.4" @@ -11825,6 +12756,7 @@ __metadata: "@types/react": "npm:18.3.3" "@typescript-eslint/eslint-plugin": "npm:^7.18.0" "@typescript-eslint/parser": "npm:^7.18.0" + "@visx/visx": "npm:^3.11.0" babel-loader: "npm:^9.1.3" eslint: "npm:^8.57.0" eslint-config-airbnb: "npm:19.0.4" @@ -11872,6 +12804,13 @@ __metadata: languageName: node linkType: hard +"math-expression-evaluator@npm:^1.2.14": + version: 1.4.0 + resolution: "math-expression-evaluator@npm:1.4.0" + checksum: 10c0/e90ee90026d53aeb80596046442e562a469b65b9e5f877dd0280d481478615b96d9de0049a7bc9cfbe97cf2147b2619300c54294f0967ca7d9e462ce0a678cc5 + languageName: node + linkType: hard + "mathml-tag-names@npm:^2.1.3": version: 2.1.3 resolution: "mathml-tag-names@npm:2.1.3" @@ -12183,6 +13122,13 @@ __metadata: languageName: node linkType: hard +"mitt@npm:^2.1.0": + version: 2.1.0 + resolution: "mitt@npm:2.1.0" + checksum: 10c0/9236f7fbba86bdf9e9c2298f84ca4ca199e8e6b5f34830ab556f020270804d73e7427b2fc141746631751c2e8a6eac97971677294f0576de83bb78cba9614e8c + languageName: node + linkType: hard + "mkdirp@npm:^1.0.3": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -13421,7 +14367,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:^15.5.10, prop-types@npm:^15.5.7, prop-types@npm:^15.6.0, prop-types@npm:^15.6.1, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -13808,6 +14754,18 @@ __metadata: languageName: node linkType: hard +"react-use-measure@npm:^2.0.4": + version: 2.1.1 + resolution: "react-use-measure@npm:2.1.1" + dependencies: + debounce: "npm:^1.2.1" + peerDependencies: + react: ">=16.13" + react-dom: ">=16.13" + checksum: 10c0/77b035189dbd613f50014ae56cbfc1363a4eba5104f68f3bc09cbdd20719ae7fb42884e53328175c30b238215c5b8064c60098d70b3fa9b8d902db6ffb07c6a3 + languageName: node + linkType: hard + "react-use@npm:^17.5.1": version: 17.5.1 resolution: "react-use@npm:17.5.1" @@ -13907,6 +14865,26 @@ __metadata: languageName: node linkType: hard +"reduce-css-calc@npm:^1.3.0": + version: 1.3.0 + resolution: "reduce-css-calc@npm:1.3.0" + dependencies: + balanced-match: "npm:^0.4.2" + math-expression-evaluator: "npm:^1.2.14" + reduce-function-call: "npm:^1.0.1" + checksum: 10c0/c0b192bbdc7617ee7e3bcd09332f7f810c2b52f1da8521c4eda03879ead00bcca65bcae78d5bc8cd925610f776532a3457e8b2fd8f4bb936bdb40f057590f20d + languageName: node + linkType: hard + +"reduce-function-call@npm:^1.0.1": + version: 1.0.3 + resolution: "reduce-function-call@npm:1.0.3" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/7e844708d8c3d2946d3df5c537ee1e23c3c60c98ac0dbc724828f36d8d309c391a14995f47ce4f5ba84eea2df5c73d58e4ba100ba331af496920932421a322ed + languageName: node + linkType: hard + "reflect.getprototypeof@npm:^1.0.4": version: 1.0.4 resolution: "reflect.getprototypeof@npm:1.0.4" @@ -14260,6 +15238,13 @@ __metadata: languageName: node linkType: hard +"robust-predicates@npm:^3.0.2": + version: 3.0.2 + resolution: "robust-predicates@npm:3.0.2" + checksum: 10c0/4ecd53649f1c2d49529c85518f2fa69ffb2f7a4453f7fd19c042421c7b4d76c3efb48bc1c740c8f7049346d7cb58cf08ee0c9adaae595cc23564d360adb1fde4 + languageName: node + linkType: hard + "rtl-css-js@npm:^1.16.1": version: 1.16.1 resolution: "rtl-css-js@npm:1.16.1"