feat: working graph
This commit is contained in:
parent
e8cdf2ac7c
commit
334dd73633
|
@ -1,19 +1,135 @@
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect, useState, useRef } from "react";
|
||||||
/*
|
import cytoscape from "cytoscape";
|
||||||
import ReactDOM from "react-dom";
|
import spread from "cytoscape-spread";
|
||||||
import * as d3 from "d3";
|
import {
|
||||||
import { graphviz } from "d3-graphviz";
|
resolveToNumIfPossible,
|
||||||
*/
|
getSquiggleSparkline,
|
||||||
|
} from "../../lib/squiggle.js";
|
||||||
|
import { truncateValueForDisplay } from "../../lib/truncateNums.js";
|
||||||
|
|
||||||
export function Graph() {
|
// import dagre from "cytoscape-dagre";
|
||||||
return "Hello";
|
// import cola from "cytoscape-cola";
|
||||||
/*
|
// import fcose from "cytoscape-fcose";
|
||||||
let digraph = `digraph {
|
import avsdf from "cytoscape-avsdf";
|
||||||
a -> b
|
|
||||||
}`;
|
const effectButtonStyle =
|
||||||
useEffect(() => {
|
"bg-transparent m-2 hover:bg-blue-500 text-blue-700 font-semibold hover:text-white py-2 px-4 border border-blue-500 hover:border-transparent rounded mt-5";
|
||||||
d3.select("#graph").graphviz().renderDot(digraph);
|
|
||||||
}, []);
|
const getEdgeLabel = async (squiggleString) => {
|
||||||
return <div id="graph" />;
|
let sparkline = await getSquiggleSparkline(squiggleString);
|
||||||
*/
|
let num = await resolveToNumIfPossible(squiggleString);
|
||||||
|
|
||||||
|
let sparklineConcat = "";
|
||||||
|
if (false && sparkline.success) {
|
||||||
|
console.log(sparkline);
|
||||||
|
|
||||||
|
sparklineConcat =
|
||||||
|
sparklineConcat +
|
||||||
|
" →" +
|
||||||
|
sparkline.sparkline.replace("▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁", "");
|
||||||
|
//alert("▁▁▁▁▁▁▁▁▁▁▁");
|
||||||
|
}
|
||||||
|
if (num.asNum) {
|
||||||
|
sparklineConcat =
|
||||||
|
sparklineConcat + " ⇾ " + truncateValueForDisplay(num.num);
|
||||||
|
//alert("▁▁▁▁▁▁▁▁▁▁▁");
|
||||||
|
}
|
||||||
|
|
||||||
|
return squiggleString + sparklineConcat; //sparkline;
|
||||||
|
};
|
||||||
|
|
||||||
|
export function Graph({ listOfElements, links }) {
|
||||||
|
const containerRef = useRef();
|
||||||
|
|
||||||
|
const callEffect = async (listOfElements, links) => {
|
||||||
|
cytoscape.use(spread); // spread
|
||||||
|
|
||||||
|
let nodeElements = listOfElements.map((element) => {
|
||||||
|
return { data: { id: element.name } };
|
||||||
|
});
|
||||||
|
let linkElements = await Promise.all(
|
||||||
|
links.map(async (link, i) => {
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
id: `link-${i}`,
|
||||||
|
source: link.source,
|
||||||
|
target: link.target,
|
||||||
|
label: await getEdgeLabel(link.squiggleString),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
})
|
||||||
|
);
|
||||||
|
const config = {
|
||||||
|
container: containerRef.current,
|
||||||
|
style: [
|
||||||
|
{
|
||||||
|
selector: "node",
|
||||||
|
style: {
|
||||||
|
content: "data(id)",
|
||||||
|
"background-color": "darkgreen",
|
||||||
|
"text-wrap": "wrap",
|
||||||
|
"text-max-width": 200,
|
||||||
|
"source-text-offset": 20,
|
||||||
|
//"text-valign": "bottom",
|
||||||
|
"text-justification": "auto",
|
||||||
|
},
|
||||||
|
padding: 10,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
selector: "edge",
|
||||||
|
style: {
|
||||||
|
label: "data(label)", // maps to data.label
|
||||||
|
labelColor: "blue",
|
||||||
|
"curve-style": "unbundled-bezier",
|
||||||
|
"target-arrow-color": "green",
|
||||||
|
"arrow-scale": 3,
|
||||||
|
"target-arrow-fill": "filled",
|
||||||
|
"font-size": 15,
|
||||||
|
"line-color": "green",
|
||||||
|
"target-arrow-shape": "vee",
|
||||||
|
"text-rotation": "autorotate",
|
||||||
|
"text-margin-x": +25,
|
||||||
|
"text-margin-y": +25,
|
||||||
|
padding: 5,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
elements: [
|
||||||
|
/* Dummy data:
|
||||||
|
{ data: { id: "n1" } },
|
||||||
|
{ data: { id: "n2" } },
|
||||||
|
{ data: { id: "e1", source: "n1", target: "n2" } },
|
||||||
|
|
||||||
|
Real data:*/
|
||||||
|
...nodeElements,
|
||||||
|
...linkElements,
|
||||||
|
],
|
||||||
|
layout: {
|
||||||
|
name: "spread", // circle, grid, dagre
|
||||||
|
minDist: 10,
|
||||||
|
//prelayout: false,
|
||||||
|
//animate: "end", // whether to transition the node positions
|
||||||
|
animationDuration: 0, // duration of animation in ms if enabled
|
||||||
|
},
|
||||||
|
userZoomingEnabled: false,
|
||||||
|
userPanningEnabled: false,
|
||||||
|
};
|
||||||
|
cytoscape(config);
|
||||||
|
};
|
||||||
|
useEffect(async () => {
|
||||||
|
await callEffect(listOfElements, links);
|
||||||
|
// console.log(JSON.stringify(config, null, 10));
|
||||||
|
}, [listOfElements, links]);
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div ref={containerRef} style={{ height: "700px", width: "1000px" }} />
|
||||||
|
<button
|
||||||
|
className={effectButtonStyle}
|
||||||
|
onClick={() => callEffect(listOfElements, links)}
|
||||||
|
>
|
||||||
|
{"Redraw graph"}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
89
packages/webpage-refactor/components/graph/graph1.js
Normal file
89
packages/webpage-refactor/components/graph/graph1.js
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
import { SimpleReactCytoscape } from "simple-react-cytoscape";
|
||||||
|
import { Core } from "cytoscape";
|
||||||
|
import { useCallback, useState } from "react";
|
||||||
|
|
||||||
|
/*
|
||||||
|
const elements = [
|
||||||
|
// list of graph elements to start with
|
||||||
|
{
|
||||||
|
// node a
|
||||||
|
data: { id: "a" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// node b
|
||||||
|
data: { id: "b" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// node c
|
||||||
|
data: { id: "c" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// edge ab
|
||||||
|
data: { id: "ab", source: "a", target: "b" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// edge ab
|
||||||
|
data: { id: "ac", source: "a", target: "c" },
|
||||||
|
},
|
||||||
|
];
|
||||||
|
*/
|
||||||
|
|
||||||
|
const style = [
|
||||||
|
// the stylesheet for the graph
|
||||||
|
{
|
||||||
|
selector: "node",
|
||||||
|
style: {
|
||||||
|
"background-color": "#666",
|
||||||
|
label: "data(id)",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
selector: "edge",
|
||||||
|
style: {
|
||||||
|
width: 3,
|
||||||
|
"line-color": "#ccc",
|
||||||
|
"target-arrow-color": "#ccc",
|
||||||
|
"target-arrow-shape": "triangle",
|
||||||
|
"curve-style": "bezier",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
export function Graph({ listOfElements, links }) {
|
||||||
|
const [myCy, setMyCy] = useState();
|
||||||
|
|
||||||
|
const cyCallback = useCallback(
|
||||||
|
(cy) => {
|
||||||
|
setMyCy(cy);
|
||||||
|
},
|
||||||
|
[listOfElements, links]
|
||||||
|
);
|
||||||
|
|
||||||
|
let nodeElements = listOfElements.map((element) => {
|
||||||
|
return { data: { id: element.name } };
|
||||||
|
});
|
||||||
|
let linkElements = links.map((link, i) => {
|
||||||
|
return {
|
||||||
|
data: {
|
||||||
|
id: `link-i`,
|
||||||
|
source: link.source,
|
||||||
|
target: link.target,
|
||||||
|
label: link.distance,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
});
|
||||||
|
let elements = [...nodeElements, ...linkElements];
|
||||||
|
let options = {
|
||||||
|
elements,
|
||||||
|
style,
|
||||||
|
};
|
||||||
|
return (
|
||||||
|
<div className="App">
|
||||||
|
<p>"a"</p>
|
||||||
|
<SimpleReactCytoscape options={options} cyCallback={cyCallback} />
|
||||||
|
<h3>JSON representation</h3>
|
||||||
|
{/*<p>{myCy && JSON.stringify(myCy.json())}</p>*/}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
30
packages/webpage-refactor/components/graph/graph3.js
Normal file
30
packages/webpage-refactor/components/graph/graph3.js
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import React, { useEffect, useMemo, useState } from "react";
|
||||||
|
import cytoscape from "cytoscape";
|
||||||
|
|
||||||
|
export function Graph({ listOfElements, links, options, getCy }) {
|
||||||
|
const [cy, setCy] = useState();
|
||||||
|
const id = useRef("cytoscape-id");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!cy) {
|
||||||
|
let container = null;
|
||||||
|
try {
|
||||||
|
container = document.getElementById(id) || undefined;
|
||||||
|
} catch (e) {
|
||||||
|
// Might be running Headless (the unit test are headless)
|
||||||
|
container = undefined;
|
||||||
|
}
|
||||||
|
const newCy = cytoscape({
|
||||||
|
...options,
|
||||||
|
container,
|
||||||
|
});
|
||||||
|
setCy(newCy);
|
||||||
|
// If a callback was supplied we can now return the value
|
||||||
|
if (getCy) {
|
||||||
|
getCy(newCy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, [cy, getCy, id, options]);
|
||||||
|
|
||||||
|
return <div id={id} className="simple-react-cytoscape" />;
|
||||||
|
}
|
5
packages/webpage-refactor/components/graph/style.css
Normal file
5
packages/webpage-refactor/components/graph/style.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.simple-react-cytoscape {
|
||||||
|
width: 1500px;
|
||||||
|
height: 500px;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
|
@ -13,7 +13,7 @@ export function Homepage({ listOfElementsInit }) {
|
||||||
|
|
||||||
// list of elements
|
// list of elements
|
||||||
const [listOfElements, setListOfElements] = useState(
|
const [listOfElements, setListOfElements] = useState(
|
||||||
listOfElementsInit.slice(0, 3)
|
listOfElementsInit.slice(0, 5)
|
||||||
);
|
);
|
||||||
|
|
||||||
// number of steps
|
// number of steps
|
||||||
|
@ -110,7 +110,7 @@ export function Homepage({ listOfElementsInit }) {
|
||||||
numElements={listOfElements.length}
|
numElements={listOfElements.length}
|
||||||
/>
|
/>
|
||||||
{/* Comparisons section */}
|
{/* Comparisons section */}
|
||||||
<div className={isListOrdered ? "hidden" : ""}>
|
<div className={"" /*isListOrdered ? "hidden" : ""*/}>
|
||||||
<div className="flex flex-wrap items-center max-w-4xl sm:w-full mt-10">
|
<div className="flex flex-wrap items-center max-w-4xl sm:w-full mt-10">
|
||||||
<DisplayElementForComparison
|
<DisplayElementForComparison
|
||||||
element={pairCurrentlyBeingCompared[0]}
|
element={pairCurrentlyBeingCompared[0]}
|
||||||
|
@ -127,6 +127,10 @@ export function Homepage({ listOfElementsInit }) {
|
||||||
></DisplayElementForComparison>
|
></DisplayElementForComparison>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{/* <Graph />
|
||||||
|
|
||||||
|
*/}
|
||||||
|
|
||||||
{/* Advanced options section */}
|
{/* Advanced options section */}
|
||||||
<div>
|
<div>
|
||||||
<AdvancedOptions
|
<AdvancedOptions
|
||||||
|
@ -137,9 +141,8 @@ export function Homepage({ listOfElementsInit }) {
|
||||||
onChangeOfDataset={onChangeOfDataset}
|
onChangeOfDataset={onChangeOfDataset}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/* <Graph />
|
|
||||||
<Graph />
|
<Graph listOfElements={listOfElements} links={links} />
|
||||||
*/}
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,3 +27,31 @@ export async function resolveToNumIfPossible(comparisonString) {
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getSquiggleSparkline(comparisonString) {
|
||||||
|
if (!isNaN(comparisonString) && comparisonString != "") {
|
||||||
|
let response = {
|
||||||
|
success: true,
|
||||||
|
sparkline: comparisonString,
|
||||||
|
};
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
let squiggleSparklineCommand = `sparkline(${comparisonString}, 20)`;
|
||||||
|
let squiggleResponse = await run(squiggleSparklineCommand);
|
||||||
|
console.log(squiggleResponse);
|
||||||
|
if (squiggleResponse.tag == "Ok") {
|
||||||
|
let responseAsNumber = squiggleResponse.value.value;
|
||||||
|
let response = {
|
||||||
|
success: true,
|
||||||
|
sparkline: responseAsNumber,
|
||||||
|
};
|
||||||
|
return response;
|
||||||
|
} else {
|
||||||
|
let errorMsg = squiggleResponse.value;
|
||||||
|
let response = {
|
||||||
|
success: false,
|
||||||
|
errorMsg: errorMsg,
|
||||||
|
};
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
25
packages/webpage-refactor/lib/truncateNums.js
Normal file
25
packages/webpage-refactor/lib/truncateNums.js
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
export const truncateValueForDisplay = (value) => {
|
||||||
|
if (value > 10) {
|
||||||
|
return Number(Math.round(value).toPrecision(2));
|
||||||
|
} else if (value > 1) {
|
||||||
|
return Math.round(value * 10) / 10;
|
||||||
|
} else if (num > 0) {
|
||||||
|
let candidateNumSignificantDigits =
|
||||||
|
-Math.floor(Math.log(num) / Math.log(10)) + 1;
|
||||||
|
let numSignificantDigits = topOutAt100AndValidate(
|
||||||
|
candidateNumSignificantDigits
|
||||||
|
);
|
||||||
|
result = num.toFixed(numSignificantDigits);
|
||||||
|
} else if (-1 < num) {
|
||||||
|
let candidateNumSignificantDigits =
|
||||||
|
-Math.floor(Math.log(Math.abs(num)) / Math.log(10)) + 1;
|
||||||
|
let numSignificantDigits = topOutAt100AndValidate(
|
||||||
|
candidateNumSignificantDigits
|
||||||
|
);
|
||||||
|
result = num.toFixed(numSignificantDigits);
|
||||||
|
} else if (num <= -1) {
|
||||||
|
result = "-" + toLocale(truncateValueForDisplay(-num));
|
||||||
|
} else {
|
||||||
|
result = toLocale(num); //return "~0"
|
||||||
|
}
|
||||||
|
};
|
|
@ -10,6 +10,12 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@quri/squiggle-lang": "^0.2.11",
|
"@quri/squiggle-lang": "^0.2.11",
|
||||||
"axios": "^0.21.4",
|
"axios": "^0.21.4",
|
||||||
|
"cytoscape": "^3.21.1",
|
||||||
|
"cytoscape-avsdf": "^1.0.0",
|
||||||
|
"cytoscape-cola": "^2.5.1",
|
||||||
|
"cytoscape-dagre": "^2.4.0",
|
||||||
|
"cytoscape-fcose": "^2.1.0",
|
||||||
|
"cytoscape-spread": "^3.0.0",
|
||||||
"next": "latest",
|
"next": "latest",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
"react": "^17.0.1",
|
"react": "^17.0.1",
|
||||||
|
@ -18,6 +24,7 @@
|
||||||
"react-dom": "17.0.1",
|
"react-dom": "17.0.1",
|
||||||
"react-markdown": "^6.0.2",
|
"react-markdown": "^6.0.2",
|
||||||
"remark-gfm": "^1.0.0",
|
"remark-gfm": "^1.0.0",
|
||||||
|
"simple-react-cytoscape": "^1.0.4",
|
||||||
"utility-tools": "^0.2.2"
|
"utility-tools": "^0.2.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
// import 'tailwindcss/tailwind.css'
|
// import 'tailwindcss/tailwind.css'
|
||||||
import "tailwindcss/tailwind.css";
|
import "tailwindcss/tailwind.css";
|
||||||
import "../styles/globals.css";
|
import "../styles/globals.css";
|
||||||
|
import "../styles/cytoscape.css";
|
||||||
import Head from "next/head";
|
import Head from "next/head";
|
||||||
import { Title } from "../components/title.js";
|
import { Title } from "../components/title.js";
|
||||||
|
|
||||||
|
|
5
packages/webpage-refactor/styles/cytoscape.css
Normal file
5
packages/webpage-refactor/styles/cytoscape.css
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
.simple-react-cytoscape {
|
||||||
|
width: 600px;
|
||||||
|
height: 600px;
|
||||||
|
border-style: dashed;
|
||||||
|
}
|
|
@ -741,6 +741,13 @@ autoprefixer@^10.4.0:
|
||||||
picocolors "^1.0.0"
|
picocolors "^1.0.0"
|
||||||
postcss-value-parser "^4.2.0"
|
postcss-value-parser "^4.2.0"
|
||||||
|
|
||||||
|
avsdf-base@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/avsdf-base/-/avsdf-base-1.0.0.tgz#80c437d7d15d2bd201d9c31804e7b7a15a84781a"
|
||||||
|
integrity sha512-APhZNUFJwIwrLsSfE95QjobEntdUhFQgfNtC/BrYmjUpwHh5Y2fbRv8lxAlMr1hdf/CuQYsqJxK3dRzcCL77qw==
|
||||||
|
dependencies:
|
||||||
|
layout-base "^1.0.0"
|
||||||
|
|
||||||
axios@^0.21.4:
|
axios@^0.21.4:
|
||||||
version "0.21.4"
|
version "0.21.4"
|
||||||
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575"
|
||||||
|
@ -1012,6 +1019,13 @@ core-util-is@~1.0.0:
|
||||||
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
|
||||||
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
||||||
|
|
||||||
|
cose-base@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cose-base/-/cose-base-2.1.0.tgz#89b2d4a59d7bd0cde3138a4689825f3e8a5abd6a"
|
||||||
|
integrity sha512-HTMm07dhxq1dIPGWwpiVrIk9n+DH7KYmqWA786mLe8jDS+1ZjGtJGIIsJVKoseZXS6/FxiUWCJ2B7XzqUCuhPw==
|
||||||
|
dependencies:
|
||||||
|
layout-base "^2.0.0"
|
||||||
|
|
||||||
cosmiconfig@^7.0.1:
|
cosmiconfig@^7.0.1:
|
||||||
version "7.0.1"
|
version "7.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
|
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d"
|
||||||
|
@ -1066,6 +1080,52 @@ cssfilter@0.0.10:
|
||||||
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
|
resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae"
|
||||||
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
|
integrity sha512-FAaLDaplstoRsDR8XGYH51znUN0UY7nMc6Z9/fvE8EXGwvJE9hu7W2vHwx1+bd6gCYnln9nLbzxFTrcO9YQDZw==
|
||||||
|
|
||||||
|
cytoscape-avsdf@^1.0.0:
|
||||||
|
version "1.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape-avsdf/-/cytoscape-avsdf-1.0.0.tgz#6f079948021433e32fc30b1b0bcbf595f4b65ab0"
|
||||||
|
integrity sha512-Wzd2wmJgr4dK5avHy4nKHp3D8TBZ8H/+5Hq5o24bRdVTvXlhSDzQhAMtzOuhRPYwHcWB+cBhEAXboAK8n7zPTQ==
|
||||||
|
dependencies:
|
||||||
|
avsdf-base "^1.0.0"
|
||||||
|
|
||||||
|
cytoscape-cola@^2.5.1:
|
||||||
|
version "2.5.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape-cola/-/cytoscape-cola-2.5.1.tgz#1ec25dfd92533485f29943adf740ecd4feb2ea16"
|
||||||
|
integrity sha512-4/2S9bW1LvdsEPmxXN1OEAPFPbk7DvCx2c9d+TblkQAAvptGaSgtPWCByTEGgT8UxCxcVqes2aFPO5pzwo7R2w==
|
||||||
|
dependencies:
|
||||||
|
webcola "^3.4.0"
|
||||||
|
|
||||||
|
cytoscape-dagre@^2.4.0:
|
||||||
|
version "2.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape-dagre/-/cytoscape-dagre-2.4.0.tgz#abf145b1c675afe3b7d531166e6727dc39dc350d"
|
||||||
|
integrity sha512-jfOtKzKduCnruBs3YMHS9kqWjZKqvp6loSJwlotPO5pcU4wLUhkx7ZBIyW3VWZXa8wfkGxv/zhWoBxWtYrUxKQ==
|
||||||
|
dependencies:
|
||||||
|
dagre "^0.8.5"
|
||||||
|
|
||||||
|
cytoscape-fcose@^2.1.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape-fcose/-/cytoscape-fcose-2.1.0.tgz#04c3093776ea6b71787009de641607db7d4edf55"
|
||||||
|
integrity sha512-Q3apPl66jf8/2sMsrCjNP247nbDkyIPjA9g5iPMMWNLZgP3/mn9aryF7EFY/oRPEpv7bKJ4jYmCoU5r5/qAc1Q==
|
||||||
|
dependencies:
|
||||||
|
cose-base "^2.0.0"
|
||||||
|
|
||||||
|
cytoscape-spread@^3.0.0:
|
||||||
|
version "3.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape-spread/-/cytoscape-spread-3.0.0.tgz#9d2cf43eee9a3b92dd518a4a2db8567584a1dd2e"
|
||||||
|
integrity sha512-ekuo4ByFRTZ4TOJylE2bPOMcVVyi8rD+qjvEjMWS2BHcyan40pmhlA4ramz/nTxZR+EtlxEa1asnmfiN8R5HyQ==
|
||||||
|
dependencies:
|
||||||
|
weaverjs "^1.2.0"
|
||||||
|
|
||||||
|
cytoscape@^3.21.1:
|
||||||
|
version "3.21.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/cytoscape/-/cytoscape-3.21.1.tgz#2d3a8b8ade8661c9efab2e9bf7a354b374d6cf0e"
|
||||||
|
integrity sha512-mxdxCzuGHOMSWHUFO+/ZQPeMNtJAm81LGzdwP02LhT592ZRfHWCvHUY++HpnSjg/SgrKg1CMqegY/HvYLUS1qg==
|
||||||
|
dependencies:
|
||||||
|
heap "^0.2.6"
|
||||||
|
lodash.debounce "^4.0.8"
|
||||||
|
lodash.get "^4.4.2"
|
||||||
|
lodash.set "^4.3.2"
|
||||||
|
lodash.topath "^4.5.2"
|
||||||
|
|
||||||
d3-array@^2.8.0:
|
d3-array@^2.8.0:
|
||||||
version "2.12.1"
|
version "2.12.1"
|
||||||
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81"
|
resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-2.12.1.tgz#e20b41aafcdffdf5d50928004ececf815a465e81"
|
||||||
|
@ -1073,6 +1133,49 @@ d3-array@^2.8.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
internmap "^1.0.0"
|
internmap "^1.0.0"
|
||||||
|
|
||||||
|
d3-dispatch@1, d3-dispatch@^1.0.3:
|
||||||
|
version "1.0.6"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-dispatch/-/d3-dispatch-1.0.6.tgz#00d37bcee4dd8cd97729dd893a0ac29caaba5d58"
|
||||||
|
integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==
|
||||||
|
|
||||||
|
d3-drag@^1.0.4:
|
||||||
|
version "1.2.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-drag/-/d3-drag-1.2.5.tgz#2537f451acd39d31406677b7dc77c82f7d988f70"
|
||||||
|
integrity sha512-rD1ohlkKQwMZYkQlYVCrSFxsWPzI97+W+PaEIBNTMxRuxz9RF0Hi5nJWHGVJ3Om9d2fRTe1yOBINJyy/ahV95w==
|
||||||
|
dependencies:
|
||||||
|
d3-dispatch "1"
|
||||||
|
d3-selection "1"
|
||||||
|
|
||||||
|
d3-path@1:
|
||||||
|
version "1.0.9"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-path/-/d3-path-1.0.9.tgz#48c050bb1fe8c262493a8caf5524e3e9591701cf"
|
||||||
|
integrity sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==
|
||||||
|
|
||||||
|
d3-selection@1:
|
||||||
|
version "1.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-selection/-/d3-selection-1.4.2.tgz#dcaa49522c0dbf32d6c1858afc26b6094555bc5c"
|
||||||
|
integrity sha512-SJ0BqYihzOjDnnlfyeHT0e30k0K1+5sR3d5fNueCNeuhZTnGw4M4o8mqJchSwgKMXCNFo+e2VTChiSJ0vYtXkg==
|
||||||
|
|
||||||
|
d3-shape@^1.3.5:
|
||||||
|
version "1.3.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-shape/-/d3-shape-1.3.7.tgz#df63801be07bc986bc54f63789b4fe502992b5d7"
|
||||||
|
integrity sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==
|
||||||
|
dependencies:
|
||||||
|
d3-path "1"
|
||||||
|
|
||||||
|
d3-timer@^1.0.5:
|
||||||
|
version "1.0.10"
|
||||||
|
resolved "https://registry.yarnpkg.com/d3-timer/-/d3-timer-1.0.10.tgz#dfe76b8a91748831b13b6d9c793ffbd508dd9de5"
|
||||||
|
integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
|
||||||
|
|
||||||
|
dagre@^0.8.5:
|
||||||
|
version "0.8.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/dagre/-/dagre-0.8.5.tgz#ba30b0055dac12b6c1fcc247817442777d06afee"
|
||||||
|
integrity sha512-/aTqmnRta7x7MCCpExk7HQL2O4owCT2h8NT//9I1OQ9vt29Pa0BzSAkR5lwFUcQ7491yVi/3CXU9jQ5o0Mn2Sw==
|
||||||
|
dependencies:
|
||||||
|
graphlib "^2.1.8"
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
debug@^2.6.9:
|
debug@^2.6.9:
|
||||||
version "2.6.9"
|
version "2.6.9"
|
||||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||||
|
@ -1402,6 +1505,13 @@ graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
|
||||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||||
|
|
||||||
|
graphlib@^2.1.8:
|
||||||
|
version "2.1.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.8.tgz#5761d414737870084c92ec7b5dbcb0592c9d35da"
|
||||||
|
integrity sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==
|
||||||
|
dependencies:
|
||||||
|
lodash "^4.17.15"
|
||||||
|
|
||||||
h3@^0.2.10:
|
h3@^0.2.10:
|
||||||
version "0.2.12"
|
version "0.2.12"
|
||||||
resolved "https://registry.yarnpkg.com/h3/-/h3-0.2.12.tgz#019db8f0c6910e0dc79266857560e22b5ef2a5e3"
|
resolved "https://registry.yarnpkg.com/h3/-/h3-0.2.12.tgz#019db8f0c6910e0dc79266857560e22b5ef2a5e3"
|
||||||
|
@ -1439,6 +1549,11 @@ hastscript@^5.0.0:
|
||||||
property-information "^5.0.0"
|
property-information "^5.0.0"
|
||||||
space-separated-tokens "^1.0.0"
|
space-separated-tokens "^1.0.0"
|
||||||
|
|
||||||
|
heap@^0.2.6:
|
||||||
|
version "0.2.7"
|
||||||
|
resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc"
|
||||||
|
integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==
|
||||||
|
|
||||||
hex-color-regex@^1.1.0:
|
hex-color-regex@^1.1.0:
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
|
resolved "https://registry.yarnpkg.com/hex-color-regex/-/hex-color-regex-1.1.0.tgz#4c06fccb4602fe2602b3c93df82d7e7dbf1a8a8e"
|
||||||
|
@ -1750,6 +1865,16 @@ jstat@^1.9.5:
|
||||||
resolved "https://registry.yarnpkg.com/jstat/-/jstat-1.9.5.tgz#9941741566f683624ddeb56f5ba60ed8c29b374e"
|
resolved "https://registry.yarnpkg.com/jstat/-/jstat-1.9.5.tgz#9941741566f683624ddeb56f5ba60ed8c29b374e"
|
||||||
integrity sha512-cWnp4vObF5GmB2XsIEzxI/1ZTcYlcfNqxQ/9Fp5KFUa0Jf/4tO0ZkGVnqoEHDisJvYgvn5n3eWZbd2xTVJJPUQ==
|
integrity sha512-cWnp4vObF5GmB2XsIEzxI/1ZTcYlcfNqxQ/9Fp5KFUa0Jf/4tO0ZkGVnqoEHDisJvYgvn5n3eWZbd2xTVJJPUQ==
|
||||||
|
|
||||||
|
layout-base@^1.0.0:
|
||||||
|
version "1.0.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-1.0.2.tgz#1291e296883c322a9dd4c5dd82063721b53e26e2"
|
||||||
|
integrity sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==
|
||||||
|
|
||||||
|
layout-base@^2.0.0:
|
||||||
|
version "2.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/layout-base/-/layout-base-2.0.1.tgz#d0337913586c90f9c2c075292069f5c2da5dd285"
|
||||||
|
integrity sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==
|
||||||
|
|
||||||
lilconfig@^2.0.5:
|
lilconfig@^2.0.5:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25"
|
resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.5.tgz#19e57fd06ccc3848fd1891655b5a447092225b25"
|
||||||
|
@ -1773,6 +1898,11 @@ listhen@^0.2.4, listhen@^0.2.6:
|
||||||
selfsigned "^2.0.1"
|
selfsigned "^2.0.1"
|
||||||
ufo "^0.8.4"
|
ufo "^0.8.4"
|
||||||
|
|
||||||
|
lodash.debounce@^4.0.8:
|
||||||
|
version "4.0.8"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"
|
||||||
|
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
|
||||||
|
|
||||||
lodash.defaults@^4.2.0:
|
lodash.defaults@^4.2.0:
|
||||||
version "4.2.0"
|
version "4.2.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
|
resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c"
|
||||||
|
@ -1783,17 +1913,27 @@ lodash.flatten@^4.4.0:
|
||||||
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f"
|
||||||
integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
|
integrity sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==
|
||||||
|
|
||||||
|
lodash.get@^4.4.2:
|
||||||
|
version "4.4.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99"
|
||||||
|
integrity sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==
|
||||||
|
|
||||||
lodash.isarguments@^3.1.0:
|
lodash.isarguments@^3.1.0:
|
||||||
version "3.1.0"
|
version "3.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
|
resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a"
|
||||||
integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
|
integrity sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==
|
||||||
|
|
||||||
|
lodash.set@^4.3.2:
|
||||||
|
version "4.3.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/lodash.set/-/lodash.set-4.3.2.tgz#d8757b1da807dde24816b0d6a84bea1a76230b23"
|
||||||
|
integrity sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==
|
||||||
|
|
||||||
lodash.topath@^4.5.2:
|
lodash.topath@^4.5.2:
|
||||||
version "4.5.2"
|
version "4.5.2"
|
||||||
resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009"
|
resolved "https://registry.yarnpkg.com/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009"
|
||||||
integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==
|
integrity sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==
|
||||||
|
|
||||||
lodash@^4.17.11, lodash@^4.17.21:
|
lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21:
|
||||||
version "4.17.21"
|
version "4.17.21"
|
||||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||||
|
@ -2812,6 +2952,11 @@ simple-get@^4.0.0, simple-get@^4.0.1:
|
||||||
once "^1.3.1"
|
once "^1.3.1"
|
||||||
simple-concat "^1.0.0"
|
simple-concat "^1.0.0"
|
||||||
|
|
||||||
|
simple-react-cytoscape@^1.0.4:
|
||||||
|
version "1.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/simple-react-cytoscape/-/simple-react-cytoscape-1.0.4.tgz#6a2b40711d1942de497e1e8623b568b45f0baad9"
|
||||||
|
integrity sha512-gb0Biod8KyjdZS+PXhZcxKwd06VdsEyh22Wm1RyvKfeV5L1Tb5EZvnimrvuBYurn1mhAnh0PUyFPPIHiN9N9AQ==
|
||||||
|
|
||||||
simple-swizzle@^0.2.2:
|
simple-swizzle@^0.2.2:
|
||||||
version "0.2.2"
|
version "0.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||||
|
@ -3164,6 +3309,21 @@ warning@^4.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
loose-envify "^1.0.0"
|
loose-envify "^1.0.0"
|
||||||
|
|
||||||
|
weaverjs@^1.2.0:
|
||||||
|
version "1.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/weaverjs/-/weaverjs-1.2.0.tgz#654c15cc735b660a1dae4c7c263cd7c746512fa0"
|
||||||
|
integrity sha512-X+nDGl5mrc8ysArmafu6dD3GNFP2r+NdV6L/PiWac8TpH4BVODO/HMaPLhrXmOZhdI3XM0LVxW5ZrAbwKqkkmw==
|
||||||
|
|
||||||
|
webcola@^3.4.0:
|
||||||
|
version "3.4.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/webcola/-/webcola-3.4.0.tgz#490d26ae98e5b5109478b94a846a62ff6831a99d"
|
||||||
|
integrity sha512-4BiLXjXw3SJHo3Xd+rF+7fyClT6n7I+AR6TkBqyQ4kTsePSAMDLRCXY1f3B/kXJeP9tYn4G1TblxTO+jAt0gaw==
|
||||||
|
dependencies:
|
||||||
|
d3-dispatch "^1.0.3"
|
||||||
|
d3-drag "^1.0.4"
|
||||||
|
d3-shape "^1.3.5"
|
||||||
|
d3-timer "^1.0.5"
|
||||||
|
|
||||||
webidl-conversions@^3.0.0:
|
webidl-conversions@^3.0.0:
|
||||||
version "3.0.1"
|
version "3.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user