feat: add rudimentary surface view

feat/type-attributes
Tomáš Mládek 2023-01-10 21:45:03 +01:00
parent 3493a68291
commit ff5a8265fb
9 changed files with 853 additions and 38 deletions

View File

@ -14,6 +14,7 @@
"devDependencies": {
"@sveltejs/vite-plugin-svelte": "^1.0.1",
"@tsconfig/svelte": "^3.0.0",
"@types/d3": "^7.4.0",
"@types/dompurify": "^2.3.3",
"@types/lodash": "^4.14.182",
"@types/lru-cache": "^7.10.10",
@ -36,6 +37,7 @@
"@ibm/plex": "^6.1.1",
"@recogito/annotorious": "^2.7.1",
"boxicons": "^2.1.4",
"d3": "^7.8.0",
"date-fns": "^2.29.3",
"dompurify": "^2.4.1",
"filesize": "^8.0.6",

View File

@ -9,15 +9,16 @@
import DropPasteHandler from "./components/DropPasteHandler.svelte";
import AddModal from "./components/AddModal.svelte";
import Store from "./views/Store.svelte";
import Surface from "./views/Surface.svelte";
import "./styles/main.scss";
const history = createHistory(createHashSource());
</script>
<main>
<Router {history} primary={false}>
<Header />
<Router {history} primary={false}>
<Header />
<main>
<Route path="/">
<Home />
</Route>
@ -30,6 +31,10 @@
<Search query={decodeURIComponent(params.query)} />
</Route>
<Route path="/surface">
<Surface />
</Route>
<Route path="/store">
<Store />
</Route>
@ -37,14 +42,7 @@
<Footer />
<AddModal />
</Router>
</main>
</Router>
<DropPasteHandler />
</main>
<style>
main {
min-height: 100vh;
padding-bottom: 2rem;
}
</style>
<DropPasteHandler />

View File

@ -13,7 +13,7 @@
import type { IValue } from "upend/types";
import IconButton from "./utils/IconButton.svelte";
import type { BrowseContext } from "../util/browse";
import { useParams } from "svelte-navigator";
import { Link, useParams } from "svelte-navigator";
import { GROUP_TYPE_ADDR } from "upend/constants";
import {
deleteEntry,
@ -317,12 +317,25 @@
{/if}
{#if $entityInfo?.t === "Attribute"}
<EntryList
columns="entity,value"
columnWidths={["auto", "33%"]}
entries={attributesUsed}
orderByValue
/>
<div class="buttons">
<div class="button">
<Link to="/surface?x={$entityInfo.c}">
{$i18n.t("Surface view")}
</Link>
</div>
</div>
<section class="labelborder">
<header>
<h3>{$i18n.t("Used")} ({attributesUsed.length})</h3>
</header>
<EntryList
columns="entity,value"
columnWidths={["auto", "33%"]}
entries={attributesUsed}
orderByValue
/>
</section>
{/if}
</div>
@ -429,6 +442,10 @@
flex-grow: 1;
}
.buttons {
display: flex;
}
.error {
color: red;
}

View File

@ -19,6 +19,7 @@
export let labels: string[] | undefined = undefined;
export let link = false;
export let banner = false;
export let point = false;
let entity: Readable<UpObject> = readable(undefined);
let entityInfo: Readable<EntityInfo> = readable(undefined);

View File

@ -75,7 +75,7 @@
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0 0.5rem;
padding: .5rem;
height: 3.5rem;
border-bottom: 1px solid var(--foreground);

View File

@ -2,11 +2,6 @@
@use "colors-app";
@use "fonts";
html,
body {
height: 100%;
}
html {
box-sizing: border-box;
}
@ -15,14 +10,14 @@ html {
box-sizing: inherit;
}
#main {
body {
height: calc(100vh - 2rem);
display: flex;
flex-grow: 1;
flex-direction: column;
}
#main,
#header {
margin: 0 2rem;
main {
flex-grow: 1;
}
.spinner {

View File

@ -88,14 +88,12 @@
<style lang="scss">
.browser {
height: 100%;
padding: 1rem;
display: flex;
overflow-x: auto;
gap: 1rem;
padding: 0 1rem;
// header margin
height: calc(100vh - 3.5rem - 2 * 2rem);
margin-top: 1rem;
}
.column {

View File

@ -0,0 +1,168 @@
<script lang="ts">
import UpObject from "../components/display/UpObject.svelte";
import { queryOnce } from "../lib/api";
import Selector from "../components/utils/Selector.svelte";
import * as d3 from "d3";
import { onMount } from "svelte";
import type { D3ZoomEvent, ZoomTransform } from "d3";
const urlSearch = window.location.href.substring(
window.location.href.indexOf("?")
);
const urlParams = new URLSearchParams(urlSearch);
let x: string = urlParams.get("x");
let y: string = urlParams.get("y");
interface IPoint {
address: string;
x: number;
y: number;
}
let points: IPoint[] = [];
$: {
if (x && y) {
points = [];
queryOnce(`(matches ? (in "${x}" "${y}") ?)`).then((result) => {
points = Object.entries(result.objects)
.map(([address, obj]) => {
let objX = parseInt(String(obj.get(x)));
let objY = parseInt(String(obj.get(y)));
if (objX && objY) {
return {
address,
x: objX,
y: objY,
};
}
})
.filter(Boolean);
});
}
}
onMount(() => {
const view = d3.select(".view");
const { width, height } = (
view.node() as HTMLElement
).getBoundingClientRect();
const svg = view.append("svg");
const xScale = d3
.scaleLinear()
.domain([0, width])
.range([-1, width + 1]);
const xAxis = d3
.axisBottom(xScale)
.ticks(15)
.tickSize(height)
.tickPadding(5 - height);
const yScale = d3
.scaleLinear()
.domain([0, height])
.range([-1, height + 1]);
const yAxis = d3
.axisRight(yScale)
.ticks(height / (width / 15))
.tickSize(width)
.tickPadding(5 - width);
const gX = svg.append("g").attr("class", "axis axis--x").call(xAxis);
const gY = svg.append("g").attr("class", "axis axis--y").call(yAxis);
const zoom = d3
.zoom()
// .scaleExtent([1, 40])
// .translateExtent([
// [-100, -100],
// [width + 90, height + 100],
// ])
.on("zoom", zoomed);
function zoomed({ transform }: { transform: ZoomTransform }) {
const points = d3.select(".points");
points.style(
"transform",
`translate(${transform.x}px, ${transform.y}px) scale(${transform.k})`
);
points.style("transform-origin", "0 0");
const allPoints = d3.selectAll(".point");
allPoints.style("transform", `scale(${1 / transform.k})`);
allPoints.style("transform-origin", "0 0");
gX.call(xAxis.scale(transform.rescaleX(xScale)));
gY.call(yAxis.scale(transform.rescaleY(yScale)));
}
function reset() {
svg.transition().duration(750).call(zoom.transform, d3.zoomIdentity);
}
svg.call(zoom);
});
</script>
<div class="surface">
<div class="header">
<div class="axis-selector">
X: <Selector type="attribute" bind:attribute={x} />
</div>
<div class="axis-selector">
Y: <Selector type="attribute" bind:attribute={y} />
</div>
</div>
<div class="view">
<div class="points">
{#each points as point}
<div class="point" style="left: {point.x}px; top: {point.y}px">
<UpObject point link address={point.address} />
</div>
{/each}
</div>
</div>
</div>
<style lang="scss">
.surface {
display: flex;
flex-direction: column;
height: 100%;
}
.header {
display: flex;
gap: 2em;
padding: 1em;
border-bottom: 1px solid var(--foreground);
.axis-selector {
display: flex;
gap: 1em;
align-items: center;
}
}
.view {
flex-grow: 1;
position: relative;
overflow: hidden;
:global(svg) {
width: 100%;
height: 100%;
}
.point {
position: absolute;
top: var(--y);
left: var(--x);
}
}
</style>

View File

@ -494,6 +494,278 @@ __metadata:
languageName: node
linkType: hard
"@types/d3-array@npm:*":
version: 3.0.4
resolution: "@types/d3-array@npm:3.0.4"
checksum: b0e398365fc1f638d48442e865e036d671c731b2b18f7a92e5172db1f60f5a38d4cd992693a29ad64b38e7ba981eb8c63a2aef95fbdcfbc4bf8926a9cb9ca978
languageName: node
linkType: hard
"@types/d3-axis@npm:*":
version: 3.0.2
resolution: "@types/d3-axis@npm:3.0.2"
dependencies:
"@types/d3-selection": "*"
checksum: 3067a949572da14050c1ee1dc6a4e9ceb32e9a1bdd99e4029cdf1f541b86a843294d12f911fb9faa32a75107d36d925efcc66116f8341573cba4bb780f42ca00
languageName: node
linkType: hard
"@types/d3-brush@npm:*":
version: 3.0.2
resolution: "@types/d3-brush@npm:3.0.2"
dependencies:
"@types/d3-selection": "*"
checksum: 5a539f94ff8f397a1ca874b1cf4e641a9b26cb965904f13b1b566a6505685124c37fecf45bd88b0527727b3ffcfadf53613e90aceb5cd774fa3b62f5960db019
languageName: node
linkType: hard
"@types/d3-chord@npm:*":
version: 3.0.2
resolution: "@types/d3-chord@npm:3.0.2"
checksum: 7ea3398d826a0a6affe4bafb96340f74baf6126c11547af37962f486e31d4dd48d85ade8a357585bbc7616e46e43f82d2d2435e8bfe4c2d57977fd75dd53d1e5
languageName: node
linkType: hard
"@types/d3-color@npm:*":
version: 3.1.0
resolution: "@types/d3-color@npm:3.1.0"
checksum: b1856f17d6366559a68eaba0164f30727e9dc5eaf1b3a6c8844354da228860240423d19fa4de65bff9da26b4ead8843eab14b1566962665412e8fd82c3810554
languageName: node
linkType: hard
"@types/d3-contour@npm:*":
version: 3.0.2
resolution: "@types/d3-contour@npm:3.0.2"
dependencies:
"@types/d3-array": "*"
"@types/geojson": "*"
checksum: 7b0f7ccf33dbad8124bd96736adf64b3630087fa0bda355685bcde43e13d51109a30de738785dd33d627bd2672d78d0210b7997403358974ac87b57fcf5e2752
languageName: node
linkType: hard
"@types/d3-delaunay@npm:*":
version: 6.0.1
resolution: "@types/d3-delaunay@npm:6.0.1"
checksum: c46fd6f399ed604e9f40841851c432c936c4408af9e61b235a7f6030e93faa9b5c4f6c33a62be221e1d33f48a9162e9c4bbfa173746c0e4787483310da9a03b2
languageName: node
linkType: hard
"@types/d3-dispatch@npm:*":
version: 3.0.2
resolution: "@types/d3-dispatch@npm:3.0.2"
checksum: 716f21bdc4e0057ecc2989f8c3b69ba18244b40ba42e6029aad30cbd254a42ce113ec775f40ca300e02fb23823a5ebf378dae3008614d7e591b7759607fde68a
languageName: node
linkType: hard
"@types/d3-drag@npm:*":
version: 3.0.2
resolution: "@types/d3-drag@npm:3.0.2"
dependencies:
"@types/d3-selection": "*"
checksum: cd2fd6a628c097c0c4fbd1ebe647f846d7bcc7819879882e48fd64fd743b5328efe715d002e9cbf47faa2ce3fabaec9795659cb0849c326576e98cd2bf95cbf1
languageName: node
linkType: hard
"@types/d3-dsv@npm:*":
version: 3.0.1
resolution: "@types/d3-dsv@npm:3.0.1"
checksum: f3dbb3c994b1564b5cbeb2991fa9a0e0cee82e93e2d304f2e643b1808818493c6bb11da5503562e21ba6f6cced0faccc8d9cd5005e9065af8e4b6b4477cc8982
languageName: node
linkType: hard
"@types/d3-ease@npm:*":
version: 3.0.0
resolution: "@types/d3-ease@npm:3.0.0"
checksum: 1be7c993643b5a08332e0ee146375a3845545d8deb423db5d152e0b061524385d2345ceccf968f75f605247b940dd3f9a144335fee2e7d935cddaf187afb7095
languageName: node
linkType: hard
"@types/d3-fetch@npm:*":
version: 3.0.2
resolution: "@types/d3-fetch@npm:3.0.2"
dependencies:
"@types/d3-dsv": "*"
checksum: 10fad5c1d4d8c225f2381772fe85e92cfab6575d85069e7a6361eb4d8c0030e1cde7e9db484be7db2b2f075e8e0043dae827b72396a20b94b97e58cedc50f7a5
languageName: node
linkType: hard
"@types/d3-force@npm:*":
version: 3.0.4
resolution: "@types/d3-force@npm:3.0.4"
checksum: 779fb597fb41e7bc6a5e1b8969d500deb95c4a73428c7c268bf0ca6f3ed668dd2ed6aa652de7af14d2f9c192dad4f6e7badf2c5bc330624bd8405ac88440b278
languageName: node
linkType: hard
"@types/d3-format@npm:*":
version: 3.0.1
resolution: "@types/d3-format@npm:3.0.1"
checksum: 6819fae7e7c3fce1e44cd56e9b6d8ea5508f708cb7a42793edf82ff914b120bf6cddc35208b1b33ec82615ab82b843c284709f9cea5c3fe1ea5f012106b3d32c
languageName: node
linkType: hard
"@types/d3-geo@npm:*":
version: 3.0.3
resolution: "@types/d3-geo@npm:3.0.3"
dependencies:
"@types/geojson": "*"
checksum: d2f0d386024efb97a0829488cf31d574669ff37f452bb4bb58ba62b03e705e583e166ba30844beffb51119909bf1a168a1efc91885c55ab72da9a52a46c114e2
languageName: node
linkType: hard
"@types/d3-hierarchy@npm:*":
version: 3.1.1
resolution: "@types/d3-hierarchy@npm:3.1.1"
checksum: 92b46ae0de5e149e16c869c4b9c0b6779d636d794c14e910c5263dd4f15fa4701d44139ffcfb9bf83d6bd0a207ba012e9aad15eaefbab219cae3fd24d9112e10
languageName: node
linkType: hard
"@types/d3-interpolate@npm:*":
version: 3.0.1
resolution: "@types/d3-interpolate@npm:3.0.1"
dependencies:
"@types/d3-color": "*"
checksum: 29ce472968b9e6611bdf0eeedaf89e8d6066190b52ced011d16d8183b8b9f8e6dd6516ca2b85242594942896299b42f37504d44e635f8fba3090c2c58594e21b
languageName: node
linkType: hard
"@types/d3-path@npm:*":
version: 3.0.0
resolution: "@types/d3-path@npm:3.0.0"
checksum: af7f45ea912cddd794c03384baba856f11e1f9b57a49d05a66a61968dafaeb86e0e42394883118b9b8ccadce21a5f25b1f9a88ad05235e1dc6d24c3e34a379ff
languageName: node
linkType: hard
"@types/d3-polygon@npm:*":
version: 3.0.0
resolution: "@types/d3-polygon@npm:3.0.0"
checksum: 2b4fbd864e6e40c8f63c56c46ed27f63c18d4b9b8c6f03c48bda048bc29e0d77c01763122a3cf85cce89acb12c4a65f3cd7b1d87b53ced8bf6ce341831b30190
languageName: node
linkType: hard
"@types/d3-quadtree@npm:*":
version: 3.0.2
resolution: "@types/d3-quadtree@npm:3.0.2"
checksum: 2a831a80590df125b07bc573c081449823e85159bb8fafbfee9f211dbe402840aeb01f4b04b4b47b0f28394daee29c8a10185f9acf17b6a8be649a377aff006b
languageName: node
linkType: hard
"@types/d3-random@npm:*":
version: 3.0.1
resolution: "@types/d3-random@npm:3.0.1"
checksum: 7ed9f83ee3c0b02510767bf15551984c229491d694c3c9a45a8eb80b27f7eb5f9096a48011c8cae6787b3e36321a6aaf2fe0efed8685a669481927a3d08e6b8a
languageName: node
linkType: hard
"@types/d3-scale-chromatic@npm:*":
version: 3.0.0
resolution: "@types/d3-scale-chromatic@npm:3.0.0"
checksum: e06afffd2725570aa90cb3050eb96a94727264948d9256e56807ab582aba379168d84d1d98bcaa275bf38375148b35dfe13697e06fc7565dd17ac7e2acb11980
languageName: node
linkType: hard
"@types/d3-scale@npm:*":
version: 4.0.3
resolution: "@types/d3-scale@npm:4.0.3"
dependencies:
"@types/d3-time": "*"
checksum: 76684da8519ab5f2210e647f74f96ece9c6816dea4ad5d76131121703a5268cc65687a8bc9ebbf4a44039482247336d98811ecc3fbfeb7f0122fdce4bb295547
languageName: node
linkType: hard
"@types/d3-selection@npm:*":
version: 3.0.4
resolution: "@types/d3-selection@npm:3.0.4"
checksum: b1e486db7f020610c854996a96b2f59a43b89d48bc7ac2ef9479f6f6e6324d3b21d7dfc8031a0b6d049a84b769b14eca65d73fc42613ab0044ef67973a9fe6ca
languageName: node
linkType: hard
"@types/d3-shape@npm:*":
version: 3.1.1
resolution: "@types/d3-shape@npm:3.1.1"
dependencies:
"@types/d3-path": "*"
checksum: 8f1762ecdeb4833a3802be1c65363cbc7cca753d0b836a3855fde4ba12f8e6fc142dba3c5f6d669a9e89374cc6dc414464e4f2d04e72fafd4bc64819ce30bb63
languageName: node
linkType: hard
"@types/d3-time-format@npm:*":
version: 4.0.0
resolution: "@types/d3-time-format@npm:4.0.0"
checksum: ac3a841b0cd6e7f4d4c6c2cd09a2662facea6993c16b10f40fdf84f55adf7be59a6d08fd6ac1c42c27c7340f3b5eeafef968b45b052a5476a580c78a991668db
languageName: node
linkType: hard
"@types/d3-time@npm:*":
version: 3.0.0
resolution: "@types/d3-time@npm:3.0.0"
checksum: e76adb056daccf80107f4db190ac6deb77e8774f00362bb6c76f178e67f2f217422fe502b654edbc9ac6451f6619045b9f6f5fe0db1ec5520e2ada377af7c72e
languageName: node
linkType: hard
"@types/d3-timer@npm:*":
version: 3.0.0
resolution: "@types/d3-timer@npm:3.0.0"
checksum: 1ec86b3808de6ecfa93cfdf34254761069658af0cc1d9540e8353dbcba161cdf1296a0724187bd17433b2ff16563115fd20b85fc89d5e809ff28f9b1ab134b42
languageName: node
linkType: hard
"@types/d3-transition@npm:*":
version: 3.0.3
resolution: "@types/d3-transition@npm:3.0.3"
dependencies:
"@types/d3-selection": "*"
checksum: ab9ce125108a5a5b67b972cfe23a73a0efbe958a38f51e7a2ef1003759d79f72e4563baac12400a6d6663885372bef25a50ea4433243f1a040e7fc9096b44d9d
languageName: node
linkType: hard
"@types/d3-zoom@npm:*":
version: 3.0.2
resolution: "@types/d3-zoom@npm:3.0.2"
dependencies:
"@types/d3-interpolate": "*"
"@types/d3-selection": "*"
checksum: c55b18ec5d5108c265d3e19299f51469e48d215f179a665f5797ac18bf8458dcbefd0c682154f8d8eb9d297a7486a5853115f72444af9cd02b3b4b5d1e4f9b22
languageName: node
linkType: hard
"@types/d3@npm:^7.4.0":
version: 7.4.0
resolution: "@types/d3@npm:7.4.0"
dependencies:
"@types/d3-array": "*"
"@types/d3-axis": "*"
"@types/d3-brush": "*"
"@types/d3-chord": "*"
"@types/d3-color": "*"
"@types/d3-contour": "*"
"@types/d3-delaunay": "*"
"@types/d3-dispatch": "*"
"@types/d3-drag": "*"
"@types/d3-dsv": "*"
"@types/d3-ease": "*"
"@types/d3-fetch": "*"
"@types/d3-force": "*"
"@types/d3-format": "*"
"@types/d3-geo": "*"
"@types/d3-hierarchy": "*"
"@types/d3-interpolate": "*"
"@types/d3-path": "*"
"@types/d3-polygon": "*"
"@types/d3-quadtree": "*"
"@types/d3-random": "*"
"@types/d3-scale": "*"
"@types/d3-scale-chromatic": "*"
"@types/d3-selection": "*"
"@types/d3-shape": "*"
"@types/d3-time": "*"
"@types/d3-time-format": "*"
"@types/d3-timer": "*"
"@types/d3-transition": "*"
"@types/d3-zoom": "*"
checksum: d1383f5fca7c4a819d57eb4bccc387dccaa7cb4c24d56388e5247954db6c88f5fb7c74d156165dfe044f1da8d4d510796c8d8487b5956d8270a94a1182a6e00f
languageName: node
linkType: hard
"@types/debounce@npm:*":
version: 3.0.0
resolution: "@types/debounce@npm:3.0.0"
@ -510,6 +782,13 @@ __metadata:
languageName: node
linkType: hard
"@types/geojson@npm:*":
version: 7946.0.10
resolution: "@types/geojson@npm:7946.0.10"
checksum: 12c407c2dc93ecb26c08af533ee732f1506a9b29456616ba7ba1d525df96206c28ddf44a528f6a5415d7d22893e9d967420940a9c095ee5e539c1eba5fefc1f4
languageName: node
linkType: hard
"@types/json-schema@npm:^7.0.9":
version: 7.0.11
resolution: "@types/json-schema@npm:7.0.11"
@ -1043,6 +1322,13 @@ __metadata:
languageName: node
linkType: hard
"commander@npm:7":
version: 7.2.0
resolution: "commander@npm:7.2.0"
checksum: 53501cbeee61d5157546c0bef0fedb6cdfc763a882136284bed9a07225f09a14b82d2a84e7637edfd1a679fb35ed9502fd58ef1d091e6287f60d790147f68ddc
languageName: node
linkType: hard
"computed-style@npm:~0.1.3":
version: 0.1.4
resolution: "computed-style@npm:0.1.4"
@ -1096,6 +1382,324 @@ __metadata:
languageName: node
linkType: hard
"d3-array@npm:2 - 3, d3-array@npm:2.10.0 - 3, d3-array@npm:2.5.0 - 3, d3-array@npm:3, d3-array@npm:^3.2.0":
version: 3.2.1
resolution: "d3-array@npm:3.2.1"
dependencies:
internmap: 1 - 2
checksum: 0bed33cc33b70f9d48ccef3e7a5956e134862e09179bf14df0bf9c8fc0ec02b8f847d4f5e1d32729cd5e02032af1d0a32bcc968ff1333795028455a749994623
languageName: node
linkType: hard
"d3-axis@npm:3":
version: 3.0.0
resolution: "d3-axis@npm:3.0.0"
checksum: 227ddaa6d4bad083539c1ec245e2228b4620cca941997a8a650cb0af239375dc20271993127eedac66f0543f331027aca09385e1e16eed023f93eac937cddf0b
languageName: node
linkType: hard
"d3-brush@npm:3":
version: 3.0.0
resolution: "d3-brush@npm:3.0.0"
dependencies:
d3-dispatch: 1 - 3
d3-drag: 2 - 3
d3-interpolate: 1 - 3
d3-selection: 3
d3-transition: 3
checksum: 1d042167769a02ac76271c71e90376d7184206e489552b7022a8ec2860209fe269db55e0a3430f3dcbe13b6fec2ff65b1adeaccba3218991b38e022390df72e3
languageName: node
linkType: hard
"d3-chord@npm:3":
version: 3.0.1
resolution: "d3-chord@npm:3.0.1"
dependencies:
d3-path: 1 - 3
checksum: ddf35d41675e0f8738600a8a2f05bf0858def413438c12cba357c5802ecc1014c80a658acbbee63cbad2a8c747912efb2358455d93e59906fe37469f1dc6b78b
languageName: node
linkType: hard
"d3-color@npm:1 - 3, d3-color@npm:3":
version: 3.1.0
resolution: "d3-color@npm:3.1.0"
checksum: 4931fbfda5d7c4b5cfa283a13c91a954f86e3b69d75ce588d06cde6c3628cebfc3af2069ccf225e982e8987c612aa7948b3932163ce15eb3c11cd7c003f3ee3b
languageName: node
linkType: hard
"d3-contour@npm:4":
version: 4.0.0
resolution: "d3-contour@npm:4.0.0"
dependencies:
d3-array: ^3.2.0
checksum: 1f9b9e56d0966d98a4c740b6af32b4fa2d14424159644adc24f4eb0ab023afbd414938f63f95032a66407fb701f4966efe40875e2cc0460fb653a943d3fc86b0
languageName: node
linkType: hard
"d3-delaunay@npm:6":
version: 6.0.2
resolution: "d3-delaunay@npm:6.0.2"
dependencies:
delaunator: 5
checksum: 80b18686dd7a5919a570000061f1515d106b7c7e3cba9da55706c312fc8f6de58a72674f2ea4eadc6694611f2df59f82c8b9d304845dd8b7903ee1f303aa5865
languageName: node
linkType: hard
"d3-dispatch@npm:1 - 3, d3-dispatch@npm:3":
version: 3.0.1
resolution: "d3-dispatch@npm:3.0.1"
checksum: fdfd4a230f46463e28e5b22a45dd76d03be9345b605e1b5dc7d18bd7ebf504e6c00ae123fd6d03e23d9e2711e01f0e14ea89cd0632545b9f0c00b924ba4be223
languageName: node
linkType: hard
"d3-drag@npm:2 - 3, d3-drag@npm:3":
version: 3.0.0
resolution: "d3-drag@npm:3.0.0"
dependencies:
d3-dispatch: 1 - 3
d3-selection: 3
checksum: d297231e60ecd633b0d076a63b4052b436ddeb48b5a3a11ff68c7e41a6774565473a6b064c5e9256e88eca6439a917ab9cea76032c52d944ddbf4fd289e31111
languageName: node
linkType: hard
"d3-dsv@npm:1 - 3, d3-dsv@npm:3":
version: 3.0.1
resolution: "d3-dsv@npm:3.0.1"
dependencies:
commander: 7
iconv-lite: 0.6
rw: 1
bin:
csv2json: bin/dsv2json.js
csv2tsv: bin/dsv2dsv.js
dsv2dsv: bin/dsv2dsv.js
dsv2json: bin/dsv2json.js
json2csv: bin/json2dsv.js
json2dsv: bin/json2dsv.js
json2tsv: bin/json2dsv.js
tsv2csv: bin/dsv2dsv.js
tsv2json: bin/dsv2json.js
checksum: 5fc0723647269d5dccd181d74f2265920ab368a2868b0b4f55ffa2fecdfb7814390ea28622cd61ee5d9594ab262879509059544e9f815c54fe76fbfb4ffa4c8a
languageName: node
linkType: hard
"d3-ease@npm:1 - 3, d3-ease@npm:3":
version: 3.0.1
resolution: "d3-ease@npm:3.0.1"
checksum: 06e2ee5326d1e3545eab4e2c0f84046a123dcd3b612e68858219aa034da1160333d9ce3da20a1d3486d98cb5c2a06f7d233eee1bc19ce42d1533458bd85dedcd
languageName: node
linkType: hard
"d3-fetch@npm:3":
version: 3.0.1
resolution: "d3-fetch@npm:3.0.1"
dependencies:
d3-dsv: 1 - 3
checksum: 382dcea06549ef82c8d0b719e5dc1d96286352579e3b51b20f71437f5800323315b09cf7dcfd4e1f60a41e1204deb01758470cea257d2285a7abd9dcec806984
languageName: node
linkType: hard
"d3-force@npm:3":
version: 3.0.0
resolution: "d3-force@npm:3.0.0"
dependencies:
d3-dispatch: 1 - 3
d3-quadtree: 1 - 3
d3-timer: 1 - 3
checksum: 6c7e96438cab62fa32aeadb0ade3297b62b51f81b1b38b0a60a5ec9fd627d74090c1189654d92df2250775f31b06812342f089f1d5947de9960a635ee3581def
languageName: node
linkType: hard
"d3-format@npm:1 - 3, d3-format@npm:3":
version: 3.1.0
resolution: "d3-format@npm:3.1.0"
checksum: f345ec3b8ad3cab19bff5dead395bd9f5590628eb97a389b1dd89f0b204c7c4fc1d9520f13231c2c7cf14b7c9a8cf10f8ef15bde2befbab41454a569bd706ca2
languageName: node
linkType: hard
"d3-geo@npm:3":
version: 3.1.0
resolution: "d3-geo@npm:3.1.0"
dependencies:
d3-array: 2.5.0 - 3
checksum: adf82b0c105c0c5951ae0a833d4dfc479a563791ad7938579fa14e1cffd623b469d8aa7a37dc413a327fb6ac56880f3da3f6c43d4abe3c923972dd98f34f37d1
languageName: node
linkType: hard
"d3-hierarchy@npm:3":
version: 3.1.2
resolution: "d3-hierarchy@npm:3.1.2"
checksum: 0fd946a8c5fd4686d43d3e11bbfc2037a145fda29d2261ccd0e36f70b66af6d7638e2c0c7112124d63fc3d3127197a00a6aecf676bd5bd392a94d7235a214263
languageName: node
linkType: hard
"d3-interpolate@npm:1 - 3, d3-interpolate@npm:1.2.0 - 3, d3-interpolate@npm:3":
version: 3.0.1
resolution: "d3-interpolate@npm:3.0.1"
dependencies:
d3-color: 1 - 3
checksum: a42ba314e295e95e5365eff0f604834e67e4a3b3c7102458781c477bd67e9b24b6bb9d8e41ff5521050a3f2c7c0c4bbbb6e187fd586daa3980943095b267e78b
languageName: node
linkType: hard
"d3-path@npm:1 - 3, d3-path@npm:3, d3-path@npm:^3.1.0":
version: 3.1.0
resolution: "d3-path@npm:3.1.0"
checksum: 2306f1bd9191e1eac895ec13e3064f732a85f243d6e627d242a313f9777756838a2215ea11562f0c7630c7c3b16a19ec1fe0948b1c82f3317fac55882f6ee5d8
languageName: node
linkType: hard
"d3-polygon@npm:3":
version: 3.0.1
resolution: "d3-polygon@npm:3.0.1"
checksum: 0b85c532517895544683849768a2c377cee3801ef8ccf3fa9693c8871dd21a0c1a2a0fc75ff54192f0ba2c562b0da2bc27f5bf959dfafc7fa23573b574865d2c
languageName: node
linkType: hard
"d3-quadtree@npm:1 - 3, d3-quadtree@npm:3":
version: 3.0.1
resolution: "d3-quadtree@npm:3.0.1"
checksum: 5469d462763811475f34a7294d984f3eb100515b0585ca5b249656f6b1a6e99b20056a2d2e463cc9944b888896d2b1d07859c50f9c0cf23438df9cd2e3146066
languageName: node
linkType: hard
"d3-random@npm:3":
version: 3.0.1
resolution: "d3-random@npm:3.0.1"
checksum: a70ad8d1cabe399ebeb2e482703121ac8946a3b336830b518da6848b9fdd48a111990fc041dc716f16885a72176ffa2898f2a250ca3d363ecdba5ef92b18e131
languageName: node
linkType: hard
"d3-scale-chromatic@npm:3":
version: 3.0.0
resolution: "d3-scale-chromatic@npm:3.0.0"
dependencies:
d3-color: 1 - 3
d3-interpolate: 1 - 3
checksum: a8ce4cb0267a17b28ebbb929f5e3071d985908a9c13b6fcaa2a198e1e018f275804d691c5794b970df0049725b7944f32297b31603d235af6414004f0c7f82c0
languageName: node
linkType: hard
"d3-scale@npm:4":
version: 4.0.2
resolution: "d3-scale@npm:4.0.2"
dependencies:
d3-array: 2.10.0 - 3
d3-format: 1 - 3
d3-interpolate: 1.2.0 - 3
d3-time: 2.1.1 - 3
d3-time-format: 2 - 4
checksum: a9c770d283162c3bd11477c3d9d485d07f8db2071665f1a4ad23eec3e515e2cefbd369059ec677c9ac849877d1a765494e90e92051d4f21111aa56791c98729e
languageName: node
linkType: hard
"d3-selection@npm:2 - 3, d3-selection@npm:3":
version: 3.0.0
resolution: "d3-selection@npm:3.0.0"
checksum: f4e60e133309115b99f5b36a79ae0a19d71ee6e2d5e3c7216ef3e75ebd2cb1e778c2ed2fa4c01bef35e0dcbd96c5428f5bd6ca2184fe2957ed582fde6841cbc5
languageName: node
linkType: hard
"d3-shape@npm:3":
version: 3.2.0
resolution: "d3-shape@npm:3.2.0"
dependencies:
d3-path: ^3.1.0
checksum: de2af5fc9a93036a7b68581ca0bfc4aca2d5a328aa7ba7064c11aedd44d24f310c20c40157cb654359d4c15c3ef369f95ee53d71221017276e34172c7b719cfa
languageName: node
linkType: hard
"d3-time-format@npm:2 - 4, d3-time-format@npm:4":
version: 4.1.0
resolution: "d3-time-format@npm:4.1.0"
dependencies:
d3-time: 1 - 3
checksum: 7342bce28355378152bbd4db4e275405439cabba082d9cd01946d40581140481c8328456d91740b0fe513c51ec4a467f4471ffa390c7e0e30ea30e9ec98fcdf4
languageName: node
linkType: hard
"d3-time@npm:1 - 3, d3-time@npm:2.1.1 - 3, d3-time@npm:3":
version: 3.1.0
resolution: "d3-time@npm:3.1.0"
dependencies:
d3-array: 2 - 3
checksum: 613b435352a78d9f31b7f68540788186d8c331b63feca60ad21c88e9db1989fe888f97f242322ebd6365e45ec3fb206a4324cd4ca0dfffa1d9b5feb856ba00a7
languageName: node
linkType: hard
"d3-timer@npm:1 - 3, d3-timer@npm:3":
version: 3.0.1
resolution: "d3-timer@npm:3.0.1"
checksum: 1cfddf86d7bca22f73f2c427f52dfa35c49f50d64e187eb788dcad6e927625c636aa18ae4edd44d084eb9d1f81d8ca4ec305dae7f733c15846a824575b789d73
languageName: node
linkType: hard
"d3-transition@npm:2 - 3, d3-transition@npm:3":
version: 3.0.1
resolution: "d3-transition@npm:3.0.1"
dependencies:
d3-color: 1 - 3
d3-dispatch: 1 - 3
d3-ease: 1 - 3
d3-interpolate: 1 - 3
d3-timer: 1 - 3
peerDependencies:
d3-selection: 2 - 3
checksum: cb1e6e018c3abf0502fe9ff7b631ad058efb197b5e14b973a410d3935aead6e3c07c67d726cfab258e4936ef2667c2c3d1cd2037feb0765f0b4e1d3b8788c0ea
languageName: node
linkType: hard
"d3-zoom@npm:3":
version: 3.0.0
resolution: "d3-zoom@npm:3.0.0"
dependencies:
d3-dispatch: 1 - 3
d3-drag: 2 - 3
d3-interpolate: 1 - 3
d3-selection: 2 - 3
d3-transition: 2 - 3
checksum: 8056e3527281cfd1ccbcbc458408f86973b0583e9dac00e51204026d1d36803ca437f970b5736f02fafed9f2b78f145f72a5dbc66397e02d4d95d4c594b8ff54
languageName: node
linkType: hard
"d3@npm:^7.8.0":
version: 7.8.0
resolution: "d3@npm:7.8.0"
dependencies:
d3-array: 3
d3-axis: 3
d3-brush: 3
d3-chord: 3
d3-color: 3
d3-contour: 4
d3-delaunay: 6
d3-dispatch: 3
d3-drag: 3
d3-dsv: 3
d3-ease: 3
d3-fetch: 3
d3-force: 3
d3-format: 3
d3-geo: 3
d3-hierarchy: 3
d3-interpolate: 3
d3-path: 3
d3-polygon: 3
d3-quadtree: 3
d3-random: 3
d3-scale: 4
d3-scale-chromatic: 3
d3-selection: 3
d3-shape: 3
d3-time: 3
d3-time-format: 4
d3-timer: 3
d3-transition: 3
d3-zoom: 3
checksum: 383d2c8aa6a66f3a6c6977b629de8fa1bf3bce829b15c4a769a59096691730a39e7763eb17b0ff4abbf4d1b577212160d7e5d5f1da35591e5ef5399e8398cefa
languageName: node
linkType: hard
"date-fns@npm:^2.29.3":
version: 2.29.3
resolution: "date-fns@npm:2.29.3"
@ -1157,6 +1761,15 @@ __metadata:
languageName: node
linkType: hard
"delaunator@npm:5":
version: 5.0.0
resolution: "delaunator@npm:5.0.0"
dependencies:
robust-predicates: ^3.0.0
checksum: d6764188442b7f7c6bcacebd96edc00e35f542a96f1af3ef600e586bfb9849a3682c489c0ab423440c90bc4c7cac77f28761babff76fa29e193e1cf50a95b860
languageName: node
linkType: hard
"delegates@npm:^1.0.0":
version: 1.0.0
resolution: "delegates@npm:1.0.0"
@ -1988,7 +2601,7 @@ __metadata:
languageName: node
linkType: hard
"iconv-lite@npm:^0.6.2":
"iconv-lite@npm:0.6, iconv-lite@npm:^0.6.2":
version: 0.6.3
resolution: "iconv-lite@npm:0.6.3"
dependencies:
@ -2070,6 +2683,13 @@ __metadata:
languageName: node
linkType: hard
"internmap@npm:1 - 2":
version: 2.0.3
resolution: "internmap@npm:2.0.3"
checksum: 7ca41ec6aba8f0072fc32fa8a023450a9f44503e2d8e403583c55714b25efd6390c38a87161ec456bf42d7bc83aab62eb28f5aef34876b1ac4e60693d5e1d241
languageName: node
linkType: hard
"invariant@npm:^2.2.4":
version: 2.2.4
resolution: "invariant@npm:2.2.4"
@ -3266,6 +3886,13 @@ __metadata:
languageName: node
linkType: hard
"robust-predicates@npm:^3.0.0":
version: 3.0.1
resolution: "robust-predicates@npm:3.0.1"
checksum: 45e9de2df4380da84a2a561d4fd54ea92194e878b93ed19d5e4bc90f4e834a13755e846c8516bab8360190309696f0564a0150386c52ef01f70f2b388449dac5
languageName: node
linkType: hard
"rollup@npm:^3.7.0":
version: 3.7.5
resolution: "rollup@npm:3.7.5"
@ -3289,6 +3916,13 @@ __metadata:
languageName: node
linkType: hard
"rw@npm:1":
version: 1.3.3
resolution: "rw@npm:1.3.3"
checksum: c20d82421f5a71c86a13f76121b751553a99cd4a70ea27db86f9b23f33db941f3f06019c30f60d50c356d0bd674c8e74764ac146ea55e217c091bde6fba82aa3
languageName: node
linkType: hard
"sade@npm:^1.6.0, sade@npm:^1.7.4":
version: 1.8.1
resolution: "sade@npm:1.8.1"
@ -4026,6 +4660,7 @@ __metadata:
"@recogito/annotorious": ^2.7.1
"@sveltejs/vite-plugin-svelte": ^1.0.1
"@tsconfig/svelte": ^3.0.0
"@types/d3": ^7.4.0
"@types/dompurify": ^2.3.3
"@types/lodash": ^4.14.182
"@types/lru-cache": ^7.10.10
@ -4035,6 +4670,7 @@ __metadata:
"@typescript-eslint/eslint-plugin": ^5.32.0
"@typescript-eslint/parser": ^5.32.0
boxicons: ^2.1.4
d3: ^7.8.0
date-fns: ^2.29.3
dompurify: ^2.4.1
eslint: ^8.30.0