From dfdbcc39624ee7d36c1533e137098e5deb26ea3e Mon Sep 17 00:00:00 2001 From: vikas-cldcvr Date: Thu, 11 Jan 2024 16:38:15 +0530 Subject: [PATCH 01/64] f-dag added for research --- packages/flow-lineage/package.json | 1 + .../src/components/f-dag/f-dag-global.scss | 3 + .../src/components/f-dag/f-dag.ts | 305 ++++++++++++++++++ packages/flow-lineage/src/index.ts | 2 + pnpm-lock.yaml | 3 + stories/flow-lineage/f-dag.stories.ts | 12 + 6 files changed, 326 insertions(+) create mode 100644 packages/flow-lineage/src/components/f-dag/f-dag-global.scss create mode 100644 packages/flow-lineage/src/components/f-dag/f-dag.ts create mode 100644 stories/flow-lineage/f-dag.stories.ts diff --git a/packages/flow-lineage/package.json b/packages/flow-lineage/package.json index 65d95002e..4ab94d070 100644 --- a/packages/flow-lineage/package.json +++ b/packages/flow-lineage/package.json @@ -23,6 +23,7 @@ "@ollion/flow-core": "workspace:*", "@ollion/flow-core-config": "workspace:*", "d3": "^7.6.1", + "d3-dag": "^1.1.0", "lit": "^3.1.0" }, "devDependencies": { diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss new file mode 100644 index 000000000..0cc462e7b --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -0,0 +1,3 @@ +f-dag { + display: flex; +} diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts new file mode 100644 index 000000000..04b94c768 --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -0,0 +1,305 @@ +import { flowElement, FRoot } from "@ollion/flow-core"; +import { injectCss } from "@ollion/flow-core-config"; +import globalStyle from "./f-dag-global.scss?inline"; +import { html, PropertyValueMap, unsafeCSS } from "lit"; +import { ref, createRef, Ref } from "lit/directives/ref.js"; +import * as d3 from "d3"; +import * as d3dag from "d3-dag"; + +injectCss("f-dag", globalStyle); +// Renders attribute names of parent element to textContent + +@flowElement("f-dag") +export class FDag extends FRoot { + /** + * css loaded from scss file + */ + static styles = [unsafeCSS(globalStyle)]; + + createRenderRoot() { + return this; + } + + svgElement: Ref = createRef(); + + render() { + return html` + + + + + + + `; + } + protected updated(_changedProperties: PropertyValueMap | Map): void { + // ----- // + // Setup // + // ----- // + + /** + * get transform for arrow rendering + * + * This transform takes anything with points (a graph link) and returns a + * transform that puts an arrow on the last point, aligned based off of the + * second to last. + */ + function arrowTransform({ + points + }: { + points: readonly (readonly [number, number])[]; + }): string { + const [[x1, y1], [x2, y2]] = points.slice(-2); + const angle = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI + 90; + return `translate(${x2}, ${y2}) rotate(${angle})`; + } + + // our raw data to render + const data = [ + { + id: "0", + parentIds: ["8"] + }, + { + id: "1", + parentIds: [] + }, + { + id: "2", + parentIds: [] + }, + { + id: "3", + parentIds: ["11"] + }, + { + id: "4", + parentIds: ["12"] + }, + { + id: "5", + parentIds: ["18"] + }, + { + id: "6", + parentIds: ["9", "15", "17"] + }, + { + id: "7", + parentIds: ["3", "17", "20", "21"] + }, + { + id: "8", + parentIds: [] + }, + { + id: "9", + parentIds: ["4"] + }, + { + id: "10", + parentIds: ["16", "21"] + }, + { + id: "11", + parentIds: ["2"] + }, + { + id: "12", + parentIds: ["21"] + }, + { + id: "13", + parentIds: ["4", "12"] + }, + { + id: "14", + parentIds: ["1", "8"] + }, + { + id: "15", + parentIds: [] + }, + { + id: "16", + parentIds: ["0"] + }, + { + id: "17", + parentIds: ["19"] + }, + { + id: "18", + parentIds: ["9"] + }, + { + id: "19", + parentIds: [] + }, + { + id: "20", + parentIds: ["13"] + }, + { + id: "21", + parentIds: [] + } + ]; + + // create our builder and turn the raw data into a graph + const builder = d3dag.graphStratify(); + const graph = builder(data); + + // -------------- // + // Compute Layout // + // -------------- // + + // set the layout functions + const nodeRadius = 20; + const nodeSize = [nodeRadius * 2, nodeRadius * 2] as const; + // this truncates the edges so we can render arrows nicely + const shape = d3dag.tweakShape(nodeSize, d3dag.shapeEllipse); + // use this to render our edges + const line = d3.line().curve(d3.curveMonotoneY); + // here's the layout operator, uncomment some of the settings + const layout = d3dag + .sugiyama() + //.layering(d3dag.layeringLongestPath()) + //.decross(d3dag.decrossOpt()) + //.coord(d3dag.coordGreedy()) + //.coord(d3dag.coordQuad()) + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + //@ts-ignore + .nodeSize(nodeSize) + .gap([nodeRadius, nodeRadius]) + .tweaks([shape]); + + // actually perform the layout and get the final size + const { width, height } = layout(graph); + + // --------- // + // Rendering // + // --------- // + + // colors + const steps = graph.nnodes() - 1; + const interp = d3.interpolateRainbow; + const colorMap = new Map( + [...graph.nodes()] + .sort((a, b) => a.y - b.y) + .map((node, i) => [node.data.id, interp(i / steps)]) + ); + + // global + const svg = d3 + .select(this.svgElement.value as SVGSVGElement) + // pad a little for link thickness + .style("width", width + 4) + .style("height", height + 4); + const trans = svg.transition().duration(750); + + // nodes + svg + .select("#nodes") + .selectAll("g") + .data(graph.nodes()) + .join(enter => + enter + .append("g") + .attr("transform", ({ x, y }) => `translate(${x}, ${y})`) + .attr("opacity", 0) + .call(enter => { + enter + .append("circle") + .attr("r", nodeRadius) + .attr("fill", n => colorMap.get(n.data.id)!); + enter + .append("text") + .text(d => d.data.id) + .attr("font-weight", "bold") + .attr("font-family", "sans-serif") + .attr("text-anchor", "middle") + .attr("alignment-baseline", "middle") + .attr("fill", "white"); + enter.transition(trans).attr("opacity", 1); + }) + ); + + // link gradients + svg + .select("#defs") + .selectAll("linearGradient") + .data(graph.links()) + .join(enter => + enter + .append("linearGradient") + .attr("id", ({ source, target }) => + encodeURIComponent(`${source.data.id}--${target.data.id}`) + ) + .attr("gradientUnits", "userSpaceOnUse") + .attr("x1", ({ points }) => points[0][0]) + .attr("x2", ({ points }) => points[points.length - 1][0]) + .attr("y1", ({ points }) => points[0][1]) + .attr("y2", ({ points }) => points[points.length - 1][1]) + .call(enter => { + enter + .append("stop") + .attr("class", "grad-start") + .attr("offset", "0%") + .attr("stop-color", ({ source }) => colorMap.get(source.data.id)!); + enter + .append("stop") + .attr("class", "grad-stop") + .attr("offset", "100%") + .attr("stop-color", ({ target }) => colorMap.get(target.data.id)!); + }) + ); + + // link paths + svg + .select("#links") + .selectAll("path") + .data(graph.links()) + .join(enter => + enter + .append("path") + .attr("d", ({ points }) => line(points)) + .attr("fill", "none") + .attr("stroke-width", 3) + .attr("stroke", ({ source, target }) => `url(#${source.data.id}--${target.data.id})`) + .attr("opacity", 0) + .call(enter => enter.transition(trans).attr("opacity", 1)) + ); + + // Arrows + const arrowSize = 80; + const arrowLen = Math.sqrt((4 * arrowSize) / Math.sqrt(3)); + const arrow = d3.symbol().type(d3.symbolTriangle).size(arrowSize); + svg + .select("#arrows") + .selectAll("path") + .data(graph.links()) + .join(enter => + enter + .append("path") + .attr("d", arrow) + .attr("fill", ({ target }) => colorMap.get(target.data.id)!) + .attr("transform", arrowTransform) + .attr("opacity", 0) + .attr("stroke", "white") + .attr("stroke-width", 2) + // use this to put a white boundary on the tip of the arrow + .attr("stroke-dasharray", `${arrowLen},${arrowLen}`) + .call(enter => enter.transition(trans).attr("opacity", 1)) + ); + } +} + +/** + * Required for typescript + */ +declare global { + interface HTMLElementTagNameMap { + "f-dag": FDag; + } +} diff --git a/packages/flow-lineage/src/index.ts b/packages/flow-lineage/src/index.ts index a1c5d1af3..4b7659f3e 100644 --- a/packages/flow-lineage/src/index.ts +++ b/packages/flow-lineage/src/index.ts @@ -1,5 +1,7 @@ export * from "./components/f-lineage/f-lineage"; export * from "./components/f-lineage/lineage-types"; +export * from "./components/f-dag/f-dag"; + import { version } from "./../package.json"; console.log( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 89cbd96ef..c50efb30a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -486,6 +486,9 @@ importers: d3: specifier: ^7.6.1 version: 7.8.5 + d3-dag: + specifier: ^1.1.0 + version: 1.1.0 lit: specifier: ^3.1.0 version: 3.1.1 diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts new file mode 100644 index 000000000..a70ce6fea --- /dev/null +++ b/stories/flow-lineage/f-dag.stories.ts @@ -0,0 +1,12 @@ +import { Meta, Story } from "@storybook/web-components"; +import { html } from "lit-html"; + +export default { + title: "@ollion/flow-lineage/f-dag" +} as Meta>; + +export const Basic = { + render: () => { + return html` `; + } +}; From f60c2887809982ab55148042e4f1de17f3142799 Mon Sep 17 00:00:00 2001 From: vikas-cldcvr Date: Fri, 12 Jan 2024 16:41:03 +0530 Subject: [PATCH 02/64] f-dag custom template and flow elements added --- packages/flow-lineage/package.json | 4 +- .../src/components/f-dag/f-dag-global.scss | 31 ++++ .../src/components/f-dag/f-dag.ts | 151 ++++++++---------- pnpm-lock.yaml | 4 +- stories/flow-lineage/f-dag.stories.ts | 2 +- 5 files changed, 103 insertions(+), 89 deletions(-) diff --git a/packages/flow-lineage/package.json b/packages/flow-lineage/package.json index 4ab94d070..b11330898 100644 --- a/packages/flow-lineage/package.json +++ b/packages/flow-lineage/package.json @@ -22,14 +22,14 @@ "dependencies": { "@ollion/flow-core": "workspace:*", "@ollion/flow-core-config": "workspace:*", - "d3": "^7.6.1", + "d3": "^7.8.4", "d3-dag": "^1.1.0", "lit": "^3.1.0" }, "devDependencies": { "@custom-elements-manifest/analyzer": "^0.5.7", "@open-wc/testing": "^3.1.5", - "@types/d3": "^7.4.0", + "@types/d3": "^7.4.3", "@types/jest": "29.5.5", "@web/dev-server-esbuild": "^0.3.0", "@web/test-runner": "^0.13.30", diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 0cc462e7b..7f2764f30 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -1,3 +1,34 @@ f-dag { display: flex; + overflow: auto; + + foreignObject { + overflow: visible; + } + + foreignObject { + cursor: pointer; + overflow: visible; + > * { + position: fixed !important; + } + * { + transform-origin: 0% 0%; + } + } +} + +f-div[direction="column"] { + > f-dag { + width: 100%; + flex: 1 0 auto; + } +} + +f-div[direction="row"] { + > f-dag { + flex: 1 0; + max-width: 100%; + height: 100%; + } } diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 04b94c768..0cb1a7fc8 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -149,7 +149,6 @@ export class FDag extends FRoot { // create our builder and turn the raw data into a graph const builder = d3dag.graphStratify(); const graph = builder(data); - // -------------- // // Compute Layout // // -------------- // @@ -164,12 +163,8 @@ export class FDag extends FRoot { // here's the layout operator, uncomment some of the settings const layout = d3dag .sugiyama() - //.layering(d3dag.layeringLongestPath()) - //.decross(d3dag.decrossOpt()) - //.coord(d3dag.coordGreedy()) - //.coord(d3dag.coordQuad()) - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - //@ts-ignore + //.grid() + //.zherebko() .nodeSize(nodeSize) .gap([nodeRadius, nodeRadius]) .tweaks([shape]); @@ -182,21 +177,20 @@ export class FDag extends FRoot { // --------- // // colors - const steps = graph.nnodes() - 1; - const interp = d3.interpolateRainbow; - const colorMap = new Map( - [...graph.nodes()] - .sort((a, b) => a.y - b.y) - .map((node, i) => [node.data.id, interp(i / steps)]) - ); + // const steps = graph.nnodes() - 1; + // const interp = d3.interpolateRainbow; + // const colorMap = new Map( + // [...graph.nodes()] + // .sort((a, b) => a.y - b.y) + // .map((node, i) => [node.data.id, interp(i / steps)]) + // ); // global const svg = d3 .select(this.svgElement.value as SVGSVGElement) // pad a little for link thickness - .style("width", width + 4) - .style("height", height + 4); - const trans = svg.transition().duration(750); + .style("width", Math.max(width, this.offsetWidth)) + .style("height", Math.max(height, this.offsetHeight)); // nodes svg @@ -206,91 +200,80 @@ export class FDag extends FRoot { .join(enter => enter .append("g") - .attr("transform", ({ x, y }) => `translate(${x}, ${y})`) - .attr("opacity", 0) - .call(enter => { - enter - .append("circle") - .attr("r", nodeRadius) - .attr("fill", n => colorMap.get(n.data.id)!); - enter - .append("text") - .text(d => d.data.id) - .attr("font-weight", "bold") - .attr("font-family", "sans-serif") - .attr("text-anchor", "middle") - .attr("alignment-baseline", "middle") - .attr("fill", "white"); - enter.transition(trans).attr("opacity", 1); + .attr("transform", ({ x, y }) => `translate(${x - nodeRadius}, ${y - nodeRadius})`) + .append("foreignObject") + .attr("width", nodeRadius * 2) + .attr("height", nodeRadius * 2) + .html(d => { + return `${d.data.id}`; }) ); - // link gradients - svg - .select("#defs") - .selectAll("linearGradient") - .data(graph.links()) - .join(enter => - enter - .append("linearGradient") - .attr("id", ({ source, target }) => - encodeURIComponent(`${source.data.id}--${target.data.id}`) - ) - .attr("gradientUnits", "userSpaceOnUse") - .attr("x1", ({ points }) => points[0][0]) - .attr("x2", ({ points }) => points[points.length - 1][0]) - .attr("y1", ({ points }) => points[0][1]) - .attr("y2", ({ points }) => points[points.length - 1][1]) - .call(enter => { - enter - .append("stop") - .attr("class", "grad-start") - .attr("offset", "0%") - .attr("stop-color", ({ source }) => colorMap.get(source.data.id)!); - enter - .append("stop") - .attr("class", "grad-stop") - .attr("offset", "100%") - .attr("stop-color", ({ target }) => colorMap.get(target.data.id)!); - }) - ); + // // link gradients + // svg + // .select("#defs") + // .selectAll("linearGradient") + // .data(graph.links()) + // .join(enter => + // enter + // .append("linearGradient") + // .attr("id", ({ source, target }) => + // encodeURIComponent(`${source.data.id}--${target.data.id}`) + // ) + // .attr("gradientUnits", "userSpaceOnUse") + // .attr("x1", ({ points }) => points[0][0]) + // .attr("x2", ({ points }) => points[points.length - 1][0]) + // .attr("y1", ({ points }) => points[0][1]) + // .attr("y2", ({ points }) => points[points.length - 1][1]) + // .call(enter => { + // enter + // .append("stop") + // .attr("class", "grad-start") + // .attr("offset", "0%") + // .attr("stop-color", ({ source }) => colorMap.get(source.data.id)!); + // enter + // .append("stop") + // .attr("class", "grad-stop") + // .attr("offset", "100%") + // .attr("stop-color", ({ target }) => colorMap.get(target.data.id)!); + // }) + // ); // link paths svg .select("#links") .selectAll("path") .data(graph.links()) - .join(enter => - enter - .append("path") - .attr("d", ({ points }) => line(points)) - .attr("fill", "none") - .attr("stroke-width", 3) - .attr("stroke", ({ source, target }) => `url(#${source.data.id}--${target.data.id})`) - .attr("opacity", 0) - .call(enter => enter.transition(trans).attr("opacity", 1)) + .join( + enter => + enter + .append("path") + .attr("d", ({ points }) => line(points)) + .attr("fill", "none") + .attr("stroke-width", 1.5) + .attr("stroke", "var(--color-border-default)") + // .attr("stroke", ({ source, target }) => `url(#${source.data.id}--${target.data.id})`) ); // Arrows const arrowSize = 80; - const arrowLen = Math.sqrt((4 * arrowSize) / Math.sqrt(3)); + // const arrowLen = Math.sqrt((4 * arrowSize) / Math.sqrt(3)); const arrow = d3.symbol().type(d3.symbolTriangle).size(arrowSize); svg .select("#arrows") .selectAll("path") .data(graph.links()) - .join(enter => - enter - .append("path") - .attr("d", arrow) - .attr("fill", ({ target }) => colorMap.get(target.data.id)!) - .attr("transform", arrowTransform) - .attr("opacity", 0) - .attr("stroke", "white") - .attr("stroke-width", 2) - // use this to put a white boundary on the tip of the arrow - .attr("stroke-dasharray", `${arrowLen},${arrowLen}`) - .call(enter => enter.transition(trans).attr("opacity", 1)) + .join( + enter => + enter + .append("path") + .attr("d", arrow) + .attr("fill", "var(--color-border-default)") + // .attr("fill", ({ target }) => colorMap.get(target.data.id)!) + .attr("transform", arrowTransform) + // .attr("stroke", "white") + // .attr("stroke-width", 1) + // .attr("stroke-dasharray", `${arrowLen},${arrowLen}`) ); } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c50efb30a..c35e91312 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -484,7 +484,7 @@ importers: specifier: workspace:* version: link:../flow-core-config d3: - specifier: ^7.6.1 + specifier: ^7.8.4 version: 7.8.5 d3-dag: specifier: ^1.1.0 @@ -500,7 +500,7 @@ importers: specifier: ^3.1.5 version: 3.2.2 '@types/d3': - specifier: ^7.4.0 + specifier: ^7.4.3 version: 7.4.3 '@types/jest': specifier: 29.5.5 diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts index a70ce6fea..8c61b57cf 100644 --- a/stories/flow-lineage/f-dag.stories.ts +++ b/stories/flow-lineage/f-dag.stories.ts @@ -7,6 +7,6 @@ export default { export const Basic = { render: () => { - return html` `; + return html` `; } }; From 61592eeb53f28ba1246a6fc8abb62c728bcd2513 Mon Sep 17 00:00:00 2001 From: vikas-cldcvr Date: Mon, 15 Jan 2024 15:39:45 +0530 Subject: [PATCH 03/64] f-dag node isze updated --- packages/flow-lineage/src/components/f-dag/f-dag.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 0cb1a7fc8..350c28fd2 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import { flowElement, FRoot } from "@ollion/flow-core"; import { injectCss } from "@ollion/flow-core-config"; import globalStyle from "./f-dag-global.scss?inline"; @@ -154,7 +155,7 @@ export class FDag extends FRoot { // -------------- // // set the layout functions - const nodeRadius = 20; + const nodeRadius = 40; const nodeSize = [nodeRadius * 2, nodeRadius * 2] as const; // this truncates the edges so we can render arrows nicely const shape = d3dag.tweakShape(nodeSize, d3dag.shapeEllipse); @@ -165,6 +166,7 @@ export class FDag extends FRoot { .sugiyama() //.grid() //.zherebko() + //@ts-ignore .nodeSize(nodeSize) .gap([nodeRadius, nodeRadius]) .tweaks([shape]); From 6db95f2be9970743199113d793a07ef419183ce0 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 23 May 2024 15:22:37 +0530 Subject: [PATCH 04/64] f-dag rebased --- pnpm-lock.yaml | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c35e91312..272602ad9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10581,7 +10581,8 @@ snapshots: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.10 - '@types/d3@7.4.3': + /@types/d3@7.4.3: + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} dependencies: '@types/d3-array': 3.2.1 '@types/d3-axis': 3.0.6 @@ -15837,7 +15838,18 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@6.0.1: + /stringify-object@5.0.0: + resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} + engines: {node: '>=14.16'} + dependencies: + get-own-enumerable-keys: 1.0.0 + is-obj: 3.0.0 + is-regexp: 3.1.0 + dev: false + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} dependencies: ansi-regex: 5.0.1 From 7c3359bbb15cfba17a05f0e177fae73aff27ebb7 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 24 May 2024 14:41:30 +0530 Subject: [PATCH 05/64] f-dag-cluster cluster node rnd --- .../src/components/f-dag/f-dag-global.scss | 4 + .../src/components/f-dag/f-dag.ts | 426 ++++++++---------- 2 files changed, 201 insertions(+), 229 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 7f2764f30..10407454e 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -16,6 +16,10 @@ f-dag { transform-origin: 0% 0%; } } + .dag-node-label { + font-size: 24px; + font-weight: 600; + } } f-div[direction="column"] { diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 350c28fd2..e9fad7a20 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -5,11 +5,29 @@ import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; -import * as d3dag from "d3-dag"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent +export type DagNode = { + type?: "node" | "group"; + data?: Record; + width?: number; + height?: number; +}; + +export type DagLink = { + from: string; + to: string; +}; + +export type ComputedNode = { + x?: number; + y?: number; + id: string; + next: ComputedNode[]; +} & DagNode; + @flowElement("f-dag") export class FDag extends FRoot { /** @@ -34,249 +52,199 @@ export class FDag extends FRoot { `; } protected updated(_changedProperties: PropertyValueMap | Map): void { - // ----- // - // Setup // - // ----- // - - /** - * get transform for arrow rendering - * - * This transform takes anything with points (a graph link) and returns a - * transform that puts an arrow on the last point, aligned based off of the - * second to last. - */ - function arrowTransform({ - points - }: { - points: readonly (readonly [number, number])[]; - }): string { - const [[x1, y1], [x2, y2]] = points.slice(-2); - const angle = (Math.atan2(y2 - y1, x2 - x1) * 180) / Math.PI + 90; - return `translate(${x2}, ${y2}) rotate(${angle})`; + const nodes: Record = {}; + const links: DagLink[] = []; + const computedNodes: Record = {}; + const widths = [200, 150, 250, 300]; + const heights = [50, 75, 100, 125, 150, 175]; + for (let i = 0; i < 20; i++) { + nodes[`${i + 1}`] = { + width: widths[Math.floor(Math.random() * widths.length)], + height: heights[Math.floor(Math.random() * heights.length)] + }; } - // our raw data to render - const data = [ - { - id: "0", - parentIds: ["8"] - }, - { - id: "1", - parentIds: [] - }, - { - id: "2", - parentIds: [] - }, - { - id: "3", - parentIds: ["11"] - }, - { - id: "4", - parentIds: ["12"] - }, - { - id: "5", - parentIds: ["18"] - }, - { - id: "6", - parentIds: ["9", "15", "17"] - }, - { - id: "7", - parentIds: ["3", "17", "20", "21"] - }, - { - id: "8", - parentIds: [] - }, - { - id: "9", - parentIds: ["4"] - }, - { - id: "10", - parentIds: ["16", "21"] - }, - { - id: "11", - parentIds: ["2"] - }, - { - id: "12", - parentIds: ["21"] - }, - { - id: "13", - parentIds: ["4", "12"] - }, - { - id: "14", - parentIds: ["1", "8"] - }, - { - id: "15", - parentIds: [] - }, - { - id: "16", - parentIds: ["0"] - }, - { - id: "17", - parentIds: ["19"] - }, - { - id: "18", - parentIds: ["9"] - }, - { - id: "19", - parentIds: [] - }, - { - id: "20", - parentIds: ["13"] - }, - { - id: "21", - parentIds: [] - } - ]; - - // create our builder and turn the raw data into a graph - const builder = d3dag.graphStratify(); - const graph = builder(data); - // -------------- // - // Compute Layout // - // -------------- // - - // set the layout functions - const nodeRadius = 40; - const nodeSize = [nodeRadius * 2, nodeRadius * 2] as const; - // this truncates the edges so we can render arrows nicely - const shape = d3dag.tweakShape(nodeSize, d3dag.shapeEllipse); - // use this to render our edges - const line = d3.line().curve(d3.curveMonotoneY); - // here's the layout operator, uncomment some of the settings - const layout = d3dag - .sugiyama() - //.grid() - //.zherebko() - //@ts-ignore - .nodeSize(nodeSize) - .gap([nodeRadius, nodeRadius]) - .tweaks([shape]); + for (let i = 0; i < 20; i++) { + links.push({ + from: `${1 + Math.floor(Math.random() * 20)}`, + to: `${1 + Math.floor(Math.random() * 20)}` + }); + } - // actually perform the layout and get the final size - const { width, height } = layout(graph); + const roots = new Set(); + const nonroots = new Set(); + links.forEach(link => { + if (link.from !== link.to) { + if (!nonroots.has(link.from)) { + roots.add(link.from); + } - // --------- // - // Rendering // - // --------- // + if (roots.has(link.to)) { + roots.delete(link.to); + } + nonroots.add(link.to); - // colors - // const steps = graph.nnodes() - 1; - // const interp = d3.interpolateRainbow; - // const colorMap = new Map( - // [...graph.nodes()] - // .sort((a, b) => a.y - b.y) - // .map((node, i) => [node.data.id, interp(i / steps)]) - // ); + let fromNode: ComputedNode = { + id: link.from, + next: [], + ...nodes[link.from] + }; + let toNode: ComputedNode = { + id: link.to, + next: [], + ...nodes[link.to] + }; + if (computedNodes[link.from]) { + fromNode = computedNodes[link.from]; + } + if (computedNodes[link.to]) { + toNode = computedNodes[link.to]; + } + computedNodes[link.from] = fromNode; + computedNodes[link.to] = toNode; + fromNode.next.push(toNode); + } + }); - // global const svg = d3 .select(this.svgElement.value as SVGSVGElement) // pad a little for link thickness - .style("width", Math.max(width, this.offsetWidth)) - .style("height", Math.max(height, this.offsetHeight)); + .style("width", this.offsetWidth) + .style("height", this.offsetHeight); - // nodes - svg - .select("#nodes") - .selectAll("g") - .data(graph.nodes()) - .join(enter => - enter - .append("g") - .attr("transform", ({ x, y }) => `translate(${x - nodeRadius}, ${y - nodeRadius})`) - .append("foreignObject") - .attr("width", nodeRadius * 2) - .attr("height", nodeRadius * 2) - .html(d => { - return `${d.data.id}`; - }) - ); + let x = 0; + let y = 0; + let maxX = 0; + const [defaultWidth, defaultHeight] = [50, 50]; + const [spaceX, spaceY] = [200, 200]; - // // link gradients - // svg - // .select("#defs") - // .selectAll("linearGradient") - // .data(graph.links()) - // .join(enter => - // enter - // .append("linearGradient") - // .attr("id", ({ source, target }) => - // encodeURIComponent(`${source.data.id}--${target.data.id}`) - // ) - // .attr("gradientUnits", "userSpaceOnUse") - // .attr("x1", ({ points }) => points[0][0]) - // .attr("x2", ({ points }) => points[points.length - 1][0]) - // .attr("y1", ({ points }) => points[0][1]) - // .attr("y2", ({ points }) => points[points.length - 1][1]) - // .call(enter => { - // enter - // .append("stop") - // .attr("class", "grad-start") - // .attr("offset", "0%") - // .attr("stop-color", ({ source }) => colorMap.get(source.data.id)!); - // enter - // .append("stop") - // .attr("class", "grad-stop") - // .attr("offset", "100%") - // .attr("stop-color", ({ target }) => colorMap.get(target.data.id)!); - // }) - // ); + // const nodesG = svg.append("g").attr("class", "dag-nodes"); - // link paths + const rootNodes = Array.from(roots).map(rid => { + return computedNodes[rid]; + }); + + const calculateCords = (ns: ComputedNode[]) => { + const nexts: ComputedNode[] = []; + let maxHeight = defaultHeight; + ns.forEach(n => { + if (!n.x && !n.y) { + const nx = x; + x += (n.width ?? defaultWidth) + spaceX; + if (x > maxX) { + maxX = x; + } + n.x = nx; + n.y = y; + if (n.height && n.height > maxHeight) { + maxHeight = n.height; + } + nexts.push(...n.next); + } + }); + y += maxHeight + spaceY; + x = 0; + if (nexts.length > 0) calculateCords(nexts); + }; + calculateCords(rootNodes); svg - .select("#links") - .selectAll("path") - .data(graph.links()) - .join( - enter => - enter - .append("path") - .attr("d", ({ points }) => line(points)) - .attr("fill", "none") - .attr("stroke-width", 1.5) - .attr("stroke", "var(--color-border-default)") - // .attr("stroke", ({ source, target }) => `url(#${source.data.id}--${target.data.id})`) - ); + .append("g") + .attr("class", "dag-nodes") + .selectAll("rect.dag-node") + .data(Object.values(computedNodes)) + .join("rect") + .attr("id", d => d.id) + .attr("class", "dag-node") + .attr("width", d => d.width ?? defaultWidth) + .attr("height", d => d.height ?? defaultHeight) + .attr("x", d => d.x as number) + .attr("rx", 8) + .attr("ry", 8) + .attr("y", d => d.y as number) + .attr("fill", "var(--color-surface-secondary)"); + const linkG = svg.append("g").attr("class", "dag-links"); + function createPathBetweenPoints(fromNode: ComputedNode, toNode: ComputedNode): void { + // Define the line generator + let { x: x1, y: y1 } = fromNode as Required; + let { x: x2, y: y2 } = toNode as Required; + + if (x2 > x1 && y1 !== y2) { + x1 += fromNode.width ?? defaultWidth; + y1 += (fromNode.height ?? defaultHeight) / 2; + y2 += (toNode.height ?? defaultHeight) / 2; + } else if (x1 > x2 && y1 !== y2) { + y1 += (fromNode.height ?? defaultHeight) / 2; + y2 += (toNode.height ?? defaultHeight) / 2; + x2 += toNode.width ?? defaultWidth; + } else if (x1 === x2 && y2 > y1) { + y1 += fromNode.height ?? defaultHeight; + x1 += (fromNode.width ?? defaultWidth) / 2; + x2 += (toNode.width ?? defaultWidth) / 2; + } else if (x1 === x2 && y1 > y2) { + x1 += (fromNode.width ?? defaultWidth) / 2; + y2 += toNode.height ?? defaultHeight; + x2 += (toNode.width ?? defaultWidth) / 2; + } else if (y1 === y2) { + x1 += fromNode.width ?? defaultWidth; + y1 += (fromNode.height ?? defaultHeight) / 2; + y2 += (toNode.height ?? defaultHeight) / 2; + } + + // if (y2 > y1) { + // y1 += fromNode.height ?? defaultHeight; + // x1 += (fromNode.width ?? defaultWidth) / 2; + // x2 += (toNode.width ?? defaultWidth) / 2; + // } else if (y1 > y2) { + // x1 += (fromNode.width ?? defaultWidth) / 2; + // y2 += toNode.height ?? defaultHeight; + // x2 += (toNode.width ?? defaultWidth) / 2; + // } + + // Generate the path data + const pathData = `M ${x1} ${y1} + C ${(x1 + x2) / 2} ${y1}, + ${(x1 + x2) / 2} ${y2}, + ${x2} ${y2}`; + + // Append the path to the SVG + linkG + .append("path") + .attr("d", pathData || "") + .attr("stroke", "var(--color-border-default)") + .attr("stroke-width", 2) + .attr("fill", "none"); + } - // Arrows - const arrowSize = 80; - // const arrowLen = Math.sqrt((4 * arrowSize) / Math.sqrt(3)); - const arrow = d3.symbol().type(d3.symbolTriangle).size(arrowSize); svg - .select("#arrows") - .selectAll("path") - .data(graph.links()) - .join( - enter => - enter - .append("path") - .attr("d", arrow) - .attr("fill", "var(--color-border-default)") - // .attr("fill", ({ target }) => colorMap.get(target.data.id)!) - .attr("transform", arrowTransform) - // .attr("stroke", "white") - // .attr("stroke-width", 1) - // .attr("stroke-dasharray", `${arrowLen},${arrowLen}`) - ); + .append("g") + .attr("class", "dag-nodes-labels") + .selectAll("text.dag-node-label") + .data(Object.values(computedNodes)) + .join("text") + .attr("id", d => `${d.id}-label`) + .attr("class", "dag-node-label") + .attr("x", d => { + if (d.x !== undefined) { + return d.x + (d.width ?? defaultWidth) / 2; + } + return 0; + }) + .attr("y", d => { + if (d.y !== undefined) { + return d.y + (d.height ?? defaultHeight) / 2; + } + return 0; + }) + .attr("fill", "var(--color-text-default)") + .attr("text-anchor", "middle") + .attr("dy", `12`) + .text(d => d.id); + + links.forEach(link => { + createPathBetweenPoints(computedNodes[link.from], computedNodes[link.to]); + }); + + svg.attr("viewBox", `0 0 ${maxX + spaceX} ${y}`); } } From fe73e912fb40f144cefa8ccb0694f12b6327e9c4 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 27 May 2024 10:52:47 +0530 Subject: [PATCH 06/64] f-dag-cluster link positioning updated --- packages/flow-lineage/src/components/f-dag/f-dag.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index e9fad7a20..e1b988990 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -184,7 +184,11 @@ export class FDag extends FRoot { x1 += (fromNode.width ?? defaultWidth) / 2; y2 += toNode.height ?? defaultHeight; x2 += (toNode.width ?? defaultWidth) / 2; - } else if (y1 === y2) { + } else if (y1 === y2 && x1 > x2) { + x2 += toNode.width ?? defaultWidth; + y1 += (fromNode.height ?? defaultHeight) / 2; + y2 += (toNode.height ?? defaultHeight) / 2; + } else if (y1 === y2 && x2 > x1) { x1 += fromNode.width ?? defaultWidth; y1 += (fromNode.height ?? defaultHeight) / 2; y2 += (toNode.height ?? defaultHeight) / 2; @@ -210,6 +214,7 @@ export class FDag extends FRoot { linkG .append("path") .attr("d", pathData || "") + .attr("id", `link-${fromNode.id}-${toNode.id}`) .attr("stroke", "var(--color-border-default)") .attr("stroke-width", 2) .attr("fill", "none"); From f8062f7277f034940aca3180a78ed0640c090b8e Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 28 May 2024 17:27:44 +0530 Subject: [PATCH 07/64] f-dag-app create connection and move node --- .../src/components/f-dag/f-dag-global.scss | 40 +++ .../src/components/f-dag/f-dag.ts | 337 ++++++------------ stories/flow-lineage/f-dag.stories.ts | 6 +- 3 files changed, 163 insertions(+), 220 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 10407454e..3ae18e101 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -1,6 +1,7 @@ f-dag { display: flex; overflow: auto; + position: relative; foreignObject { overflow: visible; @@ -20,6 +21,45 @@ f-dag { font-size: 24px; font-weight: 600; } + .main-svg { + position: absolute; + width: 100%; + height: 100%; + } + .dag-node { + overflow: visible; + user-select: none; + &:active { + cursor: grabbing; + } + .circle { + border-radius: 8px; + height: 8px; + width: 8px; + border: 1px solid var(--color-border-secondary); + position: absolute; + cursor: crosshair; + &:hover { + border: 1px solid var(--color-primary-default); + } + &.left { + right: 100%; + top: calc(50% - 4px); + } + &.right { + left: 100%; + top: calc(50% - 4px); + } + &.top { + bottom: 100%; + left: calc(50% - 4px); + } + &.bottom { + top: 100%; + left: calc(50% - 4px); + } + } + } } f-div[direction="column"] { diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index e1b988990..4694ca2b3 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -9,25 +9,16 @@ import * as d3 from "d3"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent -export type DagNode = { - type?: "node" | "group"; - data?: Record; - width?: number; - height?: number; -}; +function getTranslateValues(element: HTMLElement) { + const style = window.getComputedStyle(element); + const matrix = new DOMMatrixReadOnly(style.transform); -export type DagLink = { - from: string; - to: string; -}; - -export type ComputedNode = { - x?: number; - y?: number; - id: string; - next: ComputedNode[]; -} & DagNode; + // Extract translateX and translateY values + const translateX = matrix.m41; + const translateY = matrix.m42; + return { translateX, translateY }; +} @flowElement("f-dag") export class FDag extends FRoot { /** @@ -38,218 +29,126 @@ export class FDag extends FRoot { createRenderRoot() { return this; } + scale = 1; svgElement: Ref = createRef(); - - render() { - return html` - - - - - - - `; - } - protected updated(_changedProperties: PropertyValueMap | Map): void { - const nodes: Record = {}; - const links: DagLink[] = []; - const computedNodes: Record = {}; - const widths = [200, 150, 250, 300]; - const heights = [50, 75, 100, 125, 150, 175]; - for (let i = 0; i < 20; i++) { - nodes[`${i + 1}`] = { - width: widths[Math.floor(Math.random() * widths.length)], - height: heights[Math.floor(Math.random() * heights.length)] - }; - } - - for (let i = 0; i < 20; i++) { - links.push({ - from: `${1 + Math.floor(Math.random() * 20)}`, - to: `${1 + Math.floor(Math.random() * 20)}` - }); - } - - const roots = new Set(); - const nonroots = new Set(); - links.forEach(link => { - if (link.from !== link.to) { - if (!nonroots.has(link.from)) { - roots.add(link.from); - } - - if (roots.has(link.to)) { - roots.delete(link.to); - } - nonroots.add(link.to); - - let fromNode: ComputedNode = { - id: link.from, - next: [], - ...nodes[link.from] - }; - let toNode: ComputedNode = { - id: link.to, - next: [], - ...nodes[link.to] - }; - if (computedNodes[link.from]) { - fromNode = computedNodes[link.from]; - } - if (computedNodes[link.to]) { - toNode = computedNodes[link.to]; - } - computedNodes[link.from] = fromNode; - computedNodes[link.to] = toNode; - fromNode.next.push(toNode); - } - }); - - const svg = d3 - .select(this.svgElement.value as SVGSVGElement) - // pad a little for link thickness - .style("width", this.offsetWidth) - .style("height", this.offsetHeight); - - let x = 0; - let y = 0; - let maxX = 0; - const [defaultWidth, defaultHeight] = [50, 50]; - const [spaceX, spaceY] = [200, 200]; - - // const nodesG = svg.append("g").attr("class", "dag-nodes"); - - const rootNodes = Array.from(roots).map(rid => { - return computedNodes[rid]; - }); - - const calculateCords = (ns: ComputedNode[]) => { - const nexts: ComputedNode[] = []; - let maxHeight = defaultHeight; - ns.forEach(n => { - if (!n.x && !n.y) { - const nx = x; - x += (n.width ?? defaultWidth) + spaceX; - if (x > maxX) { - maxX = x; - } - n.x = nx; - n.y = y; - if (n.height && n.height > maxHeight) { - maxHeight = n.height; - } - nexts.push(...n.next); + currentLine?: d3.Selection; + + dragNode(event: MouseEvent) { + if (event.buttons === 1 && this.currentLine === undefined) { + const nodeElement = event.currentTarget as HTMLElement; + + if (nodeElement) { + let translateX = nodeElement.dataset.lastTranslateX + ? +nodeElement.dataset.lastTranslateX + : undefined; + let translateY = nodeElement.dataset.lastTranslateY + ? +nodeElement.dataset.lastTranslateY + : undefined; + if (!translateX || !translateY) { + const translate = getTranslateValues(nodeElement); + translateX = translate.translateX; + translateY = translate.translateY; } - }); - y += maxHeight + spaceY; - x = 0; - if (nexts.length > 0) calculateCords(nexts); - }; - calculateCords(rootNodes); - svg - .append("g") - .attr("class", "dag-nodes") - .selectAll("rect.dag-node") - .data(Object.values(computedNodes)) - .join("rect") - .attr("id", d => d.id) - .attr("class", "dag-node") - .attr("width", d => d.width ?? defaultWidth) - .attr("height", d => d.height ?? defaultHeight) - .attr("x", d => d.x as number) - .attr("rx", 8) - .attr("ry", 8) - .attr("y", d => d.y as number) - .attr("fill", "var(--color-surface-secondary)"); - const linkG = svg.append("g").attr("class", "dag-links"); - function createPathBetweenPoints(fromNode: ComputedNode, toNode: ComputedNode): void { - // Define the line generator - let { x: x1, y: y1 } = fromNode as Required; - let { x: x2, y: y2 } = toNode as Required; - if (x2 > x1 && y1 !== y2) { - x1 += fromNode.width ?? defaultWidth; - y1 += (fromNode.height ?? defaultHeight) / 2; - y2 += (toNode.height ?? defaultHeight) / 2; - } else if (x1 > x2 && y1 !== y2) { - y1 += (fromNode.height ?? defaultHeight) / 2; - y2 += (toNode.height ?? defaultHeight) / 2; - x2 += toNode.width ?? defaultWidth; - } else if (x1 === x2 && y2 > y1) { - y1 += fromNode.height ?? defaultHeight; - x1 += (fromNode.width ?? defaultWidth) / 2; - x2 += (toNode.width ?? defaultWidth) / 2; - } else if (x1 === x2 && y1 > y2) { - x1 += (fromNode.width ?? defaultWidth) / 2; - y2 += toNode.height ?? defaultHeight; - x2 += (toNode.width ?? defaultWidth) / 2; - } else if (y1 === y2 && x1 > x2) { - x2 += toNode.width ?? defaultWidth; - y1 += (fromNode.height ?? defaultHeight) / 2; - y2 += (toNode.height ?? defaultHeight) / 2; - } else if (y1 === y2 && x2 > x1) { - x1 += fromNode.width ?? defaultWidth; - y1 += (fromNode.height ?? defaultHeight) / 2; - y2 += (toNode.height ?? defaultHeight) / 2; + nodeElement.style.setProperty( + "transform", + `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` + ); + nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; + nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; + const dagLine = d3.selectAll(".dag-line"); + + dagLine + .attr("x2", function () { + return +d3.select(this).attr("x2") + event.movementX; + }) + .attr("y2", function () { + return +d3.select(this).attr("y2") + event.movementY; + }); } + } + } - // if (y2 > y1) { - // y1 += fromNode.height ?? defaultHeight; - // x1 += (fromNode.width ?? defaultWidth) / 2; - // x2 += (toNode.width ?? defaultWidth) / 2; - // } else if (y1 > y2) { - // x1 += (fromNode.width ?? defaultWidth) / 2; - // y2 += toNode.height ?? defaultHeight; - // x2 += (toNode.width ?? defaultWidth) / 2; - // } - - // Generate the path data - const pathData = `M ${x1} ${y1} - C ${(x1 + x2) / 2} ${y1}, - ${(x1 + x2) / 2} ${y2}, - ${x2} ${y2}`; - - // Append the path to the SVG - linkG - .append("path") - .attr("d", pathData || "") - .attr("id", `link-${fromNode.id}-${toNode.id}`) - .attr("stroke", "var(--color-border-default)") - .attr("stroke-width", 2) - .attr("fill", "none"); + plotLine(event: MouseEvent) { + event.stopPropagation(); + const circle = event.currentTarget as HTMLElement; + const rect = circle.getBoundingClientRect(); + const dagRect = this.getBoundingClientRect(); + const svg = d3.select(this.svgElement.value!); + this.currentLine = svg + .append("line") + .attr("class", "dag-line") + .attr("x2", rect.left - dagRect.left + 4) + .attr("y2", rect.top - dagRect.top + 4) + .attr("x1", event.clientX - dagRect.left) + .attr("y1", event.clientY - dagRect.top) + .attr("stroke", "var(--color-primary-default)"); + } + checkMouseMove(event: MouseEvent) { + if (event.buttons === 1 && this.currentLine) { + const dagRect = this.getBoundingClientRect(); + this.currentLine + .attr("x1", event.clientX - dagRect.left) + .attr("y1", event.clientY - dagRect.top); + } else { + this.currentLine = undefined; + //this.currentLine?.remove(); } + } - svg - .append("g") - .attr("class", "dag-nodes-labels") - .selectAll("text.dag-node-label") - .data(Object.values(computedNodes)) - .join("text") - .attr("id", d => `${d.id}-label`) - .attr("class", "dag-node-label") - .attr("x", d => { - if (d.x !== undefined) { - return d.x + (d.width ?? defaultWidth) / 2; - } - return 0; - }) - .attr("y", d => { - if (d.y !== undefined) { - return d.y + (d.height ?? defaultHeight) / 2; - } - return 0; - }) - .attr("fill", "var(--color-text-default)") - .attr("text-anchor", "middle") - .attr("dy", `12`) - .text(d => d.id); + render() { + return html` + + + + + + + + + Node + + + + + + `; + } + protected updated(changedProperties: PropertyValueMap | Map): void { + super.updated(changedProperties); - links.forEach(link => { - createPathBetweenPoints(computedNodes[link.from], computedNodes[link.to]); - }); + const svg = d3.select(this.svgElement.value!); - svg.attr("viewBox", `0 0 ${maxX + spaceX} ${y}`); + svg + .append("line") + .attr("class", "dag-line") + .attr("x1", this.offsetWidth / 2) + .attr("y1", this.offsetHeight / 2) + .attr("x2", 100) + .attr("y2", 48) + .attr("stroke", "var(--color-border-default)"); } } diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts index 8c61b57cf..7fb378178 100644 --- a/stories/flow-lineage/f-dag.stories.ts +++ b/stories/flow-lineage/f-dag.stories.ts @@ -7,6 +7,10 @@ export default { export const Basic = { render: () => { - return html` `; + return html` + + + `; } }; From e77311c111fbc9299f43ad1113e500e9ec2af36c Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 28 May 2024 18:02:57 +0530 Subject: [PATCH 08/64] f-dag-app more nodes added --- .../src/components/f-dag/f-dag.ts | 102 +++++++++++------- 1 file changed, 62 insertions(+), 40 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 4694ca2b3..fd67a450c 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -57,9 +57,19 @@ export class FDag extends FRoot { ); nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; - const dagLine = d3.selectAll(".dag-line"); + const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); - dagLine + fromLines + .attr("x1", function () { + return +d3.select(this).attr("x1") + event.movementX; + }) + .attr("y1", function () { + return +d3.select(this).attr("y1") + event.movementY; + }); + + const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); + + toLines .attr("x2", function () { return +d3.select(this).attr("x2") + event.movementX; }) @@ -79,21 +89,37 @@ export class FDag extends FRoot { this.currentLine = svg .append("line") .attr("class", "dag-line") - .attr("x2", rect.left - dagRect.left + 4) - .attr("y2", rect.top - dagRect.top + 4) - .attr("x1", event.clientX - dagRect.left) - .attr("y1", event.clientY - dagRect.top) + .attr("id", `${circle.dataset.nodeId}->`) + .attr("x1", rect.left - dagRect.left + 4) + .attr("y1", rect.top - dagRect.top + 4) + .attr("x2", event.clientX - dagRect.left) + .attr("y2", event.clientY - dagRect.top) .attr("stroke", "var(--color-primary-default)"); } checkMouseMove(event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { const dagRect = this.getBoundingClientRect(); this.currentLine - .attr("x1", event.clientX - dagRect.left) - .attr("y1", event.clientY - dagRect.top); + .attr("x2", event.clientX - dagRect.left) + .attr("y2", event.clientY - dagRect.top); } else { + this.currentLine?.remove(); + } + } + dropLine(event: MouseEvent) { + const circle = event.currentTarget as HTMLElement; + const rect = circle.getBoundingClientRect(); + const dagRect = this.getBoundingClientRect(); + + if (this.currentLine) { + this.currentLine + .attr("id", function () { + return d3.select(this).attr("id") + circle.dataset.nodeId; + }) + .attr("x2", rect.left - dagRect.left + 4) + .attr("y2", rect.top - dagRect.top + 4); + this.currentLine = undefined; - //this.currentLine?.remove(); } } @@ -114,41 +140,37 @@ export class FDag extends FRoot { - - - Node - - - - - + ${[1, 2, 3, 4].map(n => { + return html` + + Node ${n} + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + `; + })} `; } protected updated(changedProperties: PropertyValueMap | Map): void { super.updated(changedProperties); - - const svg = d3.select(this.svgElement.value!); - - svg - .append("line") - .attr("class", "dag-line") - .attr("x1", this.offsetWidth / 2) - .attr("y1", this.offsetHeight / 2) - .attr("x2", 100) - .attr("y2", 48) - .attr("stroke", "var(--color-border-default)"); } } From 390061bd44e92c68e4826678510939b84cdea198 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 29 May 2024 17:26:18 +0530 Subject: [PATCH 09/64] f-dag-app group and group clinks functionality --- .../src/components/f-dag/f-dag-global.scss | 4 + .../src/components/f-dag/f-dag.ts | 55 +- pnpm-lock.yaml | 1875 ++++++++++++++++- stories/flow-lineage/f-dag.stories.ts | 4 +- 4 files changed, 1924 insertions(+), 14 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 3ae18e101..35acbcd01 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -25,10 +25,13 @@ f-dag { position: absolute; width: 100%; height: 100%; + z-index: 10; + pointer-events: none; } .dag-node { overflow: visible; user-select: none; + position: absolute; &:active { cursor: grabbing; } @@ -39,6 +42,7 @@ f-dag { border: 1px solid var(--color-border-secondary); position: absolute; cursor: crosshair; + pointer-events: all; &:hover { border: 1px solid var(--color-primary-default); } diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index fd67a450c..400cd369f 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -35,9 +35,10 @@ export class FDag extends FRoot { currentLine?: d3.Selection; dragNode(event: MouseEvent) { + event.stopPropagation(); if (event.buttons === 1 && this.currentLine === undefined) { const nodeElement = event.currentTarget as HTMLElement; - + nodeElement.style.zIndex = `3`; if (nodeElement) { let translateX = nodeElement.dataset.lastTranslateX ? +nodeElement.dataset.lastTranslateX @@ -99,11 +100,22 @@ export class FDag extends FRoot { checkMouseMove(event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { const dagRect = this.getBoundingClientRect(); + const allGroups = this.querySelectorAll(`[data-node-type="group"]`); + + allGroups.forEach(n => { + n.style.pointerEvents = "none"; + }); this.currentLine .attr("x2", event.clientX - dagRect.left) .attr("y2", event.clientY - dagRect.top); } else { + const allGroups = this.querySelectorAll(`[data-node-type="group"]`); + + allGroups.forEach(n => { + n.style.pointerEvents = "all"; + }); this.currentLine?.remove(); + this.currentLine = undefined; } } dropLine(event: MouseEvent) { @@ -123,9 +135,17 @@ export class FDag extends FRoot { } } + nodeMouseUp(event: MouseEvent) { + const nodeElement = event.currentTarget as HTMLElement; + if (nodeElement.dataset.nodeType === "group") { + nodeElement.style.zIndex = `1`; + } else { + nodeElement.style.zIndex = `2`; + } + } + render() { - return html` + return html` Node ${n} @@ -167,6 +189,33 @@ export class FDag extends FRoot { })} `; })} + + + + + Group + + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + + `; } protected updated(changedProperties: PropertyValueMap | Map): void { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 272602ad9..448f25c7a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,5 @@ lockfileVersion: '9.0' +lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -700,30 +701,37 @@ importers: packages: + '@75lb/deep-merge@1.1.1': '@75lb/deep-merge@1.1.1': resolution: {integrity: sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==} engines: {node: '>=12.17'} + '@aashutoshrathi/word-wrap@1.2.6': '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} + '@ampproject/remapping@2.2.1': '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} + '@aw-web-design/x-default-browser@1.4.126': '@aw-web-design/x-default-browser@1.4.126': resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} hasBin: true + '@babel/code-frame@7.23.5': '@babel/code-frame@7.23.5': resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} + '@babel/compat-data@7.23.5': '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + '@babel/core@7.23.7': '@babel/core@7.23.7': resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} engines: {node: '>=6.9.0'} @@ -4052,6 +4060,9 @@ packages: resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} engines: {node: '>=12'} + d3-dag@1.1.0: + resolution: {integrity: sha512-N8IxsIHcUaIxLrV3cElTC47kVJGFiY3blqSuJubQhyhYBJs0syfFPTnRSj2Cq0LBxxi4mzJmcqCvHIv9sPdILQ==} + d3-delaunay@6.0.4: resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} engines: {node: '>=12'} @@ -4895,6 +4906,10 @@ packages: resolution: {integrity: sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==} engines: {node: '>=12.17'} + get-own-enumerable-keys@1.0.0: + resolution: {integrity: sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==} + engines: {node: '>=14.16'} + get-package-type@0.1.0: resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} engines: {node: '>=8.0.0'} @@ -5290,6 +5305,10 @@ packages: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} + is-obj@3.0.0: + resolution: {integrity: sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==} + engines: {node: '>=12'} + is-path-cwd@2.2.0: resolution: {integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==} engines: {node: '>=6'} @@ -5314,6 +5333,10 @@ packages: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} + is-regexp@3.1.0: + resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==} + engines: {node: '>=12'} + is-shared-array-buffer@1.0.2: resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} @@ -5406,6 +5429,9 @@ packages: engines: {node: '>=10'} hasBin: true + javascript-lp-solver@0.4.24: + resolution: {integrity: sha512-5edoDKnMrt/u3M6GnZKDDIPxOyFOg+WrwDv8mjNiMC2DePhy2H9/FFQgf4ggywaXT1utvkxusJcjQUER72cZmA==} + jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -6491,6 +6517,10 @@ packages: resolution: {integrity: sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==} engines: {node: '>=0.6'} + quadprog@1.6.1: + resolution: {integrity: sha512-fN5Jkcjlln/b3pJkseDKREf89JkKIyu6cKIVXisgL6ocKPQ0yTp9n6NZUAq3otEPPw78WZMG9K0o9WsfKyMWJw==} + engines: {node: '>=8.x'} + querystring@0.2.0: resolution: {integrity: sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==} engines: {node: '>=0.4.x'} @@ -7025,6 +7055,10 @@ packages: string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-object@5.0.0: + resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} + engines: {node: '>=14.16'} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -7855,6 +7889,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/generator@7.23.6': '@babel/generator@7.23.6': dependencies: '@babel/types': 7.23.6 @@ -7862,14 +7897,17 @@ snapshots: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + '@babel/helper-annotate-as-pure@7.22.5': '@babel/helper-annotate-as-pure@7.22.5': dependencies: '@babel/types': 7.23.6 + '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: '@babel/types': 7.23.6 + '@babel/helper-compilation-targets@7.23.6': '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.23.5 @@ -7878,6 +7916,7 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 + '@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7)': '@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7891,6 +7930,7 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 + '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7)': '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7898,6 +7938,7 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 + '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7)': '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7910,24 +7951,30 @@ snapshots: - supports-color '@babel/helper-environment-visitor@7.22.20': {} + '@babel/helper-environment-visitor@7.22.20': {} + '@babel/helper-function-name@7.23.0': '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 + '@babel/helper-hoist-variables@7.22.5': '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.23.6 + '@babel/helper-member-expression-to-functions@7.23.0': '@babel/helper-member-expression-to-functions@7.23.0': dependencies: '@babel/types': 7.23.6 + '@babel/helper-module-imports@7.22.15': '@babel/helper-module-imports@7.22.15': dependencies: '@babel/types': 7.23.6 + '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7)': '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7937,12 +7984,16 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + '@babel/helper-optimise-call-expression@7.22.5': '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.23.6 '@babel/helper-plugin-utils@7.22.5': {} + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7)': + '@babel/helper-plugin-utils@7.22.5': {} + '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7950,6 +8001,7 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 + '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7)': '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7957,30 +8009,38 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 + '@babel/helper-simple-access@7.22.5': '@babel/helper-simple-access@7.22.5': dependencies: '@babel/types': 7.23.6 + '@babel/helper-skip-transparent-expression-wrappers@7.22.5': '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: '@babel/types': 7.23.6 + '@babel/helper-split-export-declaration@7.22.6': '@babel/helper-split-export-declaration@7.22.6': dependencies: '@babel/types': 7.23.6 '@babel/helper-string-parser@7.23.4': {} + '@babel/helper-string-parser@7.23.4': {} + '@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.22.20': {} + '@babel/helper-validator-option@7.23.5': {} '@babel/helper-validator-option@7.23.5': {} + '@babel/helper-wrap-function@7.22.20': '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 '@babel/types': 7.23.6 + '@babel/helpers@7.23.8': '@babel/helpers@7.23.8': dependencies: '@babel/template': 7.22.15 @@ -7989,21 +8049,25 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/highlight@7.23.4': '@babel/highlight@7.23.4': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + '@babel/parser@7.23.6': '@babel/parser@7.23.6': dependencies: '@babel/types': 7.23.6 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7)': '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7)': '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8011,12 +8075,14 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7)': '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7)': '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8026,126 +8092,151 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7)': '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7)': '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7)': '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7)': '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7)': '@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8154,6 +8245,7 @@ snapshots: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) + '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8161,22 +8253,26 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) + '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8184,6 +8280,7 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7)': '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8196,58 +8293,68 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 + '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 + '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7)': '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8255,34 +8362,40 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8290,6 +8403,7 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 + '@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8298,35 +8412,41 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 + '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7)': '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) + '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8336,18 +8456,21 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) + '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8355,17 +8478,20 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) + '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8374,11 +8500,13 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) + '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8388,43 +8516,51 @@ snapshots: '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) '@babel/types': 7.23.6 + '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 + '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7)': '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8433,29 +8569,34 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) + '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 + '@babel/preset-env@7.23.8(@babel/core@7.23.7)': '@babel/preset-env@7.23.8(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8542,6 +8683,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/preset-flow@7.23.3(@babel/core@7.23.7)': '@babel/preset-flow@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8549,6 +8691,7 @@ snapshots: '@babel/helper-validator-option': 7.23.5 '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7) + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7)': '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8556,6 +8699,7 @@ snapshots: '@babel/types': 7.23.6 esutils: 2.0.3 + '@babel/preset-typescript@7.23.3(@babel/core@7.23.7)': '@babel/preset-typescript@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8565,6 +8709,7 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) + '@babel/register@7.23.7(@babel/core@7.23.7)': '@babel/register@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8575,17 +8720,21 @@ snapshots: source-map-support: 0.5.21 '@babel/regjsgen@0.8.0': {} + '@babel/regjsgen@0.8.0': {} + '@babel/runtime@7.23.8': '@babel/runtime@7.23.8': dependencies: regenerator-runtime: 0.14.1 + '@babel/template@7.22.15': '@babel/template@7.22.15': dependencies: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 + '@babel/traverse@7.23.7': '@babel/traverse@7.23.7': dependencies: '@babel/code-frame': 7.23.5 @@ -8601,6 +8750,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/types@7.23.6': '@babel/types@7.23.6': dependencies: '@babel/helper-string-parser': 7.23.4 @@ -8608,7 +8758,9 @@ snapshots: to-fast-properties: 2.0.0 '@bcoe/v8-coverage@0.2.3': {} + '@bcoe/v8-coverage@0.2.3': {} + '@changesets/apply-release-plan@7.0.0': '@changesets/apply-release-plan@7.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8625,6 +8777,7 @@ snapshots: resolve-from: 5.0.0 semver: 7.5.4 + '@changesets/assemble-release-plan@6.0.0': '@changesets/assemble-release-plan@6.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8634,10 +8787,12 @@ snapshots: '@manypkg/get-packages': 1.1.3 semver: 7.5.4 + '@changesets/changelog-git@0.2.0': '@changesets/changelog-git@0.2.0': dependencies: '@changesets/types': 6.0.0 + '@changesets/cli@2.27.1': '@changesets/cli@2.27.1': dependencies: '@babel/runtime': 7.23.8 @@ -8673,6 +8828,7 @@ snapshots: term-size: 2.2.1 tty-table: 4.2.3 + '@changesets/config@3.0.0': '@changesets/config@3.0.0': dependencies: '@changesets/errors': 0.2.0 @@ -8683,10 +8839,12 @@ snapshots: fs-extra: 7.0.1 micromatch: 4.0.5 + '@changesets/errors@0.2.0': '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 + '@changesets/get-dependents-graph@2.0.0': '@changesets/get-dependents-graph@2.0.0': dependencies: '@changesets/types': 6.0.0 @@ -8695,6 +8853,7 @@ snapshots: fs-extra: 7.0.1 semver: 7.5.4 + '@changesets/get-release-plan@4.0.0': '@changesets/get-release-plan@4.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8706,7 +8865,9 @@ snapshots: '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} + '@changesets/get-version-range-type@0.4.0': {} + '@changesets/git@3.0.0': '@changesets/git@3.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8717,15 +8878,18 @@ snapshots: micromatch: 4.0.5 spawndamnit: 2.0.0 + '@changesets/logger@0.1.0': '@changesets/logger@0.1.0': dependencies: chalk: 2.4.2 + '@changesets/parse@0.4.0': '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 + '@changesets/pre@2.0.0': '@changesets/pre@2.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8734,6 +8898,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 + '@changesets/read@0.6.0': '@changesets/read@0.6.0': dependencies: '@babel/runtime': 7.23.8 @@ -8746,9 +8911,12 @@ snapshots: p-filter: 2.1.0 '@changesets/types@4.1.0': {} + '@changesets/types@4.1.0': {} + '@changesets/types@6.0.0': {} '@changesets/types@6.0.0': {} + '@changesets/write@0.3.0': '@changesets/write@0.3.0': dependencies: '@babel/runtime': 7.23.8 @@ -8757,13 +8925,16 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 + '@colors/colors@1.5.0': '@colors/colors@1.5.0': optional: true + '@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 + '@custom-elements-manifest/analyzer@0.5.7': '@custom-elements-manifest/analyzer@0.5.7': dependencies: '@web/config-loader': 0.1.3 @@ -8775,6 +8946,7 @@ snapshots: globby: 11.0.4 typescript: 4.3.5 + '@custom-elements-manifest/analyzer@0.8.4': '@custom-elements-manifest/analyzer@0.8.4': dependencies: '@custom-elements-manifest/find-dependencies': 0.0.5 @@ -8788,229 +8960,304 @@ snapshots: globby: 11.0.4 typescript: 4.3.5 + '@custom-elements-manifest/find-dependencies@0.0.5': '@custom-elements-manifest/find-dependencies@0.0.5': dependencies: es-module-lexer: 0.9.3 '@discoveryjs/json-ext@0.5.7': {} + '@discoveryjs/json-ext@0.5.7': {} + '@emoji-mart/data@1.1.2': {} '@emoji-mart/data@1.1.2': {} + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': dependencies: react: 18.2.0 + '@esbuild/aix-ppc64@0.19.11': '@esbuild/aix-ppc64@0.19.11': optional: true + '@esbuild/android-arm64@0.17.19': '@esbuild/android-arm64@0.17.19': optional: true + '@esbuild/android-arm64@0.18.20': '@esbuild/android-arm64@0.18.20': optional: true + '@esbuild/android-arm64@0.19.11': '@esbuild/android-arm64@0.19.11': optional: true + '@esbuild/android-arm@0.17.19': '@esbuild/android-arm@0.17.19': optional: true + '@esbuild/android-arm@0.18.20': '@esbuild/android-arm@0.18.20': optional: true + '@esbuild/android-arm@0.19.11': '@esbuild/android-arm@0.19.11': optional: true + '@esbuild/android-x64@0.17.19': '@esbuild/android-x64@0.17.19': optional: true + '@esbuild/android-x64@0.18.20': '@esbuild/android-x64@0.18.20': optional: true + '@esbuild/android-x64@0.19.11': '@esbuild/android-x64@0.19.11': optional: true + '@esbuild/darwin-arm64@0.17.19': '@esbuild/darwin-arm64@0.17.19': optional: true + '@esbuild/darwin-arm64@0.18.20': '@esbuild/darwin-arm64@0.18.20': optional: true + '@esbuild/darwin-arm64@0.19.11': '@esbuild/darwin-arm64@0.19.11': optional: true + '@esbuild/darwin-x64@0.17.19': '@esbuild/darwin-x64@0.17.19': optional: true + '@esbuild/darwin-x64@0.18.20': '@esbuild/darwin-x64@0.18.20': optional: true + '@esbuild/darwin-x64@0.19.11': '@esbuild/darwin-x64@0.19.11': optional: true + '@esbuild/freebsd-arm64@0.17.19': '@esbuild/freebsd-arm64@0.17.19': optional: true + '@esbuild/freebsd-arm64@0.18.20': '@esbuild/freebsd-arm64@0.18.20': optional: true + '@esbuild/freebsd-arm64@0.19.11': '@esbuild/freebsd-arm64@0.19.11': optional: true + '@esbuild/freebsd-x64@0.17.19': '@esbuild/freebsd-x64@0.17.19': optional: true + '@esbuild/freebsd-x64@0.18.20': '@esbuild/freebsd-x64@0.18.20': optional: true + '@esbuild/freebsd-x64@0.19.11': '@esbuild/freebsd-x64@0.19.11': optional: true + '@esbuild/linux-arm64@0.17.19': '@esbuild/linux-arm64@0.17.19': optional: true + '@esbuild/linux-arm64@0.18.20': '@esbuild/linux-arm64@0.18.20': optional: true + '@esbuild/linux-arm64@0.19.11': '@esbuild/linux-arm64@0.19.11': optional: true + '@esbuild/linux-arm@0.17.19': '@esbuild/linux-arm@0.17.19': optional: true + '@esbuild/linux-arm@0.18.20': '@esbuild/linux-arm@0.18.20': optional: true + '@esbuild/linux-arm@0.19.11': '@esbuild/linux-arm@0.19.11': optional: true + '@esbuild/linux-ia32@0.17.19': '@esbuild/linux-ia32@0.17.19': optional: true + '@esbuild/linux-ia32@0.18.20': '@esbuild/linux-ia32@0.18.20': optional: true + '@esbuild/linux-ia32@0.19.11': '@esbuild/linux-ia32@0.19.11': optional: true + '@esbuild/linux-loong64@0.14.54': '@esbuild/linux-loong64@0.14.54': optional: true + '@esbuild/linux-loong64@0.17.19': '@esbuild/linux-loong64@0.17.19': optional: true + '@esbuild/linux-loong64@0.18.20': '@esbuild/linux-loong64@0.18.20': optional: true + '@esbuild/linux-loong64@0.19.11': '@esbuild/linux-loong64@0.19.11': optional: true + '@esbuild/linux-mips64el@0.17.19': '@esbuild/linux-mips64el@0.17.19': optional: true + '@esbuild/linux-mips64el@0.18.20': '@esbuild/linux-mips64el@0.18.20': optional: true + '@esbuild/linux-mips64el@0.19.11': '@esbuild/linux-mips64el@0.19.11': optional: true + '@esbuild/linux-ppc64@0.17.19': '@esbuild/linux-ppc64@0.17.19': optional: true + '@esbuild/linux-ppc64@0.18.20': '@esbuild/linux-ppc64@0.18.20': optional: true + '@esbuild/linux-ppc64@0.19.11': '@esbuild/linux-ppc64@0.19.11': optional: true + '@esbuild/linux-riscv64@0.17.19': '@esbuild/linux-riscv64@0.17.19': optional: true + '@esbuild/linux-riscv64@0.18.20': '@esbuild/linux-riscv64@0.18.20': optional: true + '@esbuild/linux-riscv64@0.19.11': '@esbuild/linux-riscv64@0.19.11': optional: true + '@esbuild/linux-s390x@0.17.19': '@esbuild/linux-s390x@0.17.19': optional: true + '@esbuild/linux-s390x@0.18.20': '@esbuild/linux-s390x@0.18.20': optional: true + '@esbuild/linux-s390x@0.19.11': '@esbuild/linux-s390x@0.19.11': optional: true + '@esbuild/linux-x64@0.17.19': '@esbuild/linux-x64@0.17.19': optional: true + '@esbuild/linux-x64@0.18.20': '@esbuild/linux-x64@0.18.20': optional: true + '@esbuild/linux-x64@0.19.11': '@esbuild/linux-x64@0.19.11': optional: true + '@esbuild/netbsd-x64@0.17.19': '@esbuild/netbsd-x64@0.17.19': optional: true + '@esbuild/netbsd-x64@0.18.20': '@esbuild/netbsd-x64@0.18.20': optional: true + '@esbuild/netbsd-x64@0.19.11': '@esbuild/netbsd-x64@0.19.11': optional: true + '@esbuild/openbsd-x64@0.17.19': '@esbuild/openbsd-x64@0.17.19': optional: true + '@esbuild/openbsd-x64@0.18.20': '@esbuild/openbsd-x64@0.18.20': optional: true + '@esbuild/openbsd-x64@0.19.11': '@esbuild/openbsd-x64@0.19.11': optional: true + '@esbuild/sunos-x64@0.17.19': '@esbuild/sunos-x64@0.17.19': optional: true + '@esbuild/sunos-x64@0.18.20': '@esbuild/sunos-x64@0.18.20': optional: true + '@esbuild/sunos-x64@0.19.11': '@esbuild/sunos-x64@0.19.11': optional: true + '@esbuild/win32-arm64@0.17.19': '@esbuild/win32-arm64@0.17.19': optional: true + '@esbuild/win32-arm64@0.18.20': '@esbuild/win32-arm64@0.18.20': optional: true + '@esbuild/win32-arm64@0.19.11': '@esbuild/win32-arm64@0.19.11': optional: true + '@esbuild/win32-ia32@0.17.19': '@esbuild/win32-ia32@0.17.19': optional: true + '@esbuild/win32-ia32@0.18.20': '@esbuild/win32-ia32@0.18.20': optional: true + '@esbuild/win32-ia32@0.19.11': '@esbuild/win32-ia32@0.19.11': optional: true + '@esbuild/win32-x64@0.17.19': '@esbuild/win32-x64@0.17.19': optional: true + '@esbuild/win32-x64@0.18.20': '@esbuild/win32-x64@0.18.20': optional: true + '@esbuild/win32-x64@0.19.11': '@esbuild/win32-x64@0.19.11': optional: true + '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': dependencies: eslint: 8.56.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.10.0': {} + '@eslint/eslintrc@2.1.4': '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -9026,15 +9273,20 @@ snapshots: - supports-color '@eslint/js@8.56.0': {} + '@eslint/js@8.56.0': {} + '@esm-bundle/chai@4.3.4-fix.0': '@esm-bundle/chai@4.3.4-fix.0': dependencies: '@types/chai': 4.3.11 '@faker-js/faker@8.3.1': {} + '@faker-js/faker@8.3.1': {} + '@fal-works/esbuild-plugin-global-externals@2.1.2': {} '@fal-works/esbuild-plugin-global-externals@2.1.2': {} + '@ferocia-oss/osnap@1.3.5': '@ferocia-oss/osnap@1.3.5': dependencies: execa: 7.2.0 @@ -9042,15 +9294,18 @@ snapshots: tempfile: 3.0.0 which: 3.0.1 + '@floating-ui/core@1.5.3': '@floating-ui/core@1.5.3': dependencies: '@floating-ui/utils': 0.2.1 + '@floating-ui/dom@1.5.4': '@floating-ui/dom@1.5.4': dependencies: '@floating-ui/core': 1.5.3 '@floating-ui/utils': 0.2.1 + '@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0)': '@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0)': dependencies: '@floating-ui/dom': 1.5.4 @@ -9058,15 +9313,20 @@ snapshots: react-dom: 18.2.0(react@18.2.0) '@floating-ui/utils@0.2.1': {} + '@floating-ui/utils@0.2.1': {} + '@github/catalyst@1.6.0': {} '@github/catalyst@1.6.0': {} + '@hapi/hoek@9.3.0': {} '@hapi/hoek@9.3.0': {} + '@hapi/topo@5.1.0': '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 + '@humanwhocodes/config-array@0.11.13': '@humanwhocodes/config-array@0.11.13': dependencies: '@humanwhocodes/object-schema': 2.0.1 @@ -9076,18 +9336,25 @@ snapshots: - supports-color '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/module-importer@1.0.1': {} + '@humanwhocodes/object-schema@2.0.1': {} '@humanwhocodes/object-schema@2.0.1': {} + '@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 + string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 strip-ansi-cjs: strip-ansi@6.0.1 + strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + '@istanbuljs/load-nyc-config@1.1.0': '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -9097,7 +9364,9 @@ snapshots: resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} + '@istanbuljs/schema@0.1.3': {} + '@jest/console@29.7.0': '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -9107,6 +9376,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 + '@jest/core@29.7.0(ts-node@10.9.2)': '@jest/core@29.7.0(ts-node@10.9.2)': dependencies: '@jest/console': 29.7.0 @@ -9142,6 +9412,7 @@ snapshots: - supports-color - ts-node + '@jest/environment@29.7.0': '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -9149,10 +9420,12 @@ snapshots: '@types/node': 18.19.6 jest-mock: 29.7.0 + '@jest/expect-utils@29.7.0': '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 + '@jest/expect@29.7.0': '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -9160,6 +9433,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/fake-timers@29.7.0': '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -9169,6 +9443,7 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 + '@jest/globals@29.7.0': '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -9178,6 +9453,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/reporters@29.7.0': '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -9207,16 +9483,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/schemas@29.6.3': '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 + '@jest/source-map@29.6.3': '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 graceful-fs: 4.2.11 + '@jest/test-result@29.7.0': '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 @@ -9224,6 +9503,7 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 + '@jest/test-sequencer@29.7.0': '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 @@ -9231,6 +9511,7 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 + '@jest/transform@29.7.0': '@jest/transform@29.7.0': dependencies: '@babel/core': 7.23.7 @@ -9251,6 +9532,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@jest/types@29.6.3': '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -9260,6 +9542,7 @@ snapshots: '@types/yargs': 17.0.32 chalk: 4.1.2 + '@jridgewell/gen-mapping@0.3.3': '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 @@ -9267,42 +9550,54 @@ snapshots: '@jridgewell/trace-mapping': 0.3.20 '@jridgewell/resolve-uri@3.1.1': {} + '@jridgewell/resolve-uri@3.1.1': {} + '@jridgewell/set-array@1.1.2': {} '@jridgewell/set-array@1.1.2': {} + '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/trace-mapping@0.3.20': '@jridgewell/trace-mapping@0.3.20': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping@0.3.9': '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 '@juggle/resize-observer@3.4.0': {} + '@juggle/resize-observer@3.4.0': {} + '@lit-labs/ssr-dom-shim@1.1.2': {} '@lit-labs/ssr-dom-shim@1.1.2': {} + '@lit-labs/virtualizer@2.0.12': '@lit-labs/virtualizer@2.0.12': dependencies: lit: 3.1.1 tslib: 2.6.2 + '@lit/reactive-element@2.0.3': '@lit/reactive-element@2.0.3': dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 + '@loki/browser@0.32.0': '@loki/browser@0.32.0': dependencies: '@loki/integration-core': 0.32.0 + '@loki/core@0.32.0': '@loki/core@0.32.0': dependencies: shelljs: 0.8.5 + '@loki/diff-graphics-magick@0.32.0': '@loki/diff-graphics-magick@0.32.0': dependencies: fs-extra: 9.1.0 @@ -9310,11 +9605,13 @@ snapshots: transitivePeerDependencies: - supports-color + '@loki/diff-looks-same@0.32.0': '@loki/diff-looks-same@0.32.0': dependencies: fs-extra: 9.1.0 looks-same: 4.1.0 + '@loki/diff-pixelmatch@0.32.0': '@loki/diff-pixelmatch@0.32.0': dependencies: fs-extra: 9.1.0 @@ -9323,18 +9620,24 @@ snapshots: '@loki/integration-core@0.32.0': {} + '@loki/integration-react-native@0.32.0': + '@loki/integration-core@0.32.0': {} + '@loki/integration-react-native@0.32.0': dependencies: '@loki/integration-core': 0.32.0 + '@loki/integration-react@0.32.0': '@loki/integration-react@0.32.0': dependencies: '@loki/browser': 0.32.0 + '@loki/integration-vue@0.32.0': '@loki/integration-vue@0.32.0': dependencies: '@loki/browser': 0.32.0 + '@loki/runner@0.32.0': '@loki/runner@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9363,6 +9666,7 @@ snapshots: - supports-color - utf-8-validate + '@loki/target-chrome-app@0.32.0': '@loki/target-chrome-app@0.32.0': dependencies: '@loki/target-chrome-core': 0.32.0 @@ -9374,6 +9678,7 @@ snapshots: - supports-color - utf-8-validate + '@loki/target-chrome-aws-lambda@0.32.0': '@loki/target-chrome-aws-lambda@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9382,6 +9687,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@loki/target-chrome-core@0.32.0': '@loki/target-chrome-core@0.32.0': dependencies: '@loki/browser': 0.32.0 @@ -9391,6 +9697,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@loki/target-chrome-docker@0.32.0': '@loki/target-chrome-docker@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9407,6 +9714,7 @@ snapshots: - supports-color - utf-8-validate + '@loki/target-native-android-emulator@0.32.0': '@loki/target-native-android-emulator@0.32.0': dependencies: '@ferocia-oss/osnap': 1.3.5 @@ -9419,6 +9727,7 @@ snapshots: - supports-color - utf-8-validate + '@loki/target-native-core@0.32.0': '@loki/target-native-core@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9429,6 +9738,7 @@ snapshots: - supports-color - utf-8-validate + '@loki/target-native-ios-simulator@0.32.0': '@loki/target-native-ios-simulator@0.32.0': dependencies: '@ferocia-oss/osnap': 1.3.5 @@ -9441,6 +9751,7 @@ snapshots: - supports-color - utf-8-validate + '@manypkg/find-root@1.1.0': '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.23.8 @@ -9448,6 +9759,7 @@ snapshots: find-up: 4.1.0 fs-extra: 8.1.0 + '@manypkg/get-packages@1.1.3': '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.23.8 @@ -9458,58 +9770,72 @@ snapshots: read-yaml-file: 1.1.0 '@mdn/browser-compat-data@4.2.1': {} + '@mdn/browser-compat-data@4.2.1': {} + '@mdx-js/react@2.3.0(react@18.2.0)': '@mdx-js/react@2.3.0(react@18.2.0)': dependencies: '@types/mdx': 2.0.10 '@types/react': 18.2.47 react: 18.2.0 + '@ndelangen/get-tarball@3.0.9': '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 pump: 3.0.0 tar-fs: 2.1.1 + '@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 '@nodelib/fs.stat@2.0.5': {} + '@nodelib/fs.stat@2.0.5': {} + '@nodelib/fs.walk@1.2.8': '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.16.0 + '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@packages+flow-core-config)': '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@packages+flow-core-config)': dependencies: '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@packages+flow-core-config)': '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@packages+flow-core-config)': dependencies: '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@packages+flow-core-config)': '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@packages+flow-core-config)': dependencies: '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@packages+flow-core-config)': '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@packages+flow-core-config)': dependencies: '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/prettier-config@2.1.0(prettier@3.0.3)': '@ollion/prettier-config@2.1.0(prettier@3.0.3)': dependencies: prettier: 3.0.3 '@open-wc/dedupe-mixin@1.4.0': {} + '@open-wc/dedupe-mixin@1.4.0': {} + '@open-wc/scoped-elements@2.2.4': '@open-wc/scoped-elements@2.2.4': dependencies: '@lit/reactive-element': 2.0.3 '@open-wc/dedupe-mixin': 1.4.0 + '@open-wc/semantic-dom-diff@0.20.1': '@open-wc/semantic-dom-diff@0.20.1': dependencies: '@types/chai': 4.3.11 @@ -9519,12 +9845,14 @@ snapshots: - supports-color - utf-8-validate + '@open-wc/testing-helpers@2.3.2': '@open-wc/testing-helpers@2.3.2': dependencies: '@open-wc/scoped-elements': 2.2.4 lit: 3.1.1 lit-html: 3.1.1 + '@open-wc/testing@3.2.2': '@open-wc/testing@3.2.2': dependencies: '@esm-bundle/chai': 4.3.4-fix.0 @@ -9538,9 +9866,11 @@ snapshots: - supports-color - utf-8-validate + '@pkgjs/parseargs@0.11.0': '@pkgjs/parseargs@0.11.0': optional: true + '@puppeteer/browsers@1.4.6(typescript@5.3.3)': '@puppeteer/browsers@1.4.6(typescript@5.3.3)': dependencies: debug: 4.3.4 @@ -9554,14 +9884,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@radix-ui/number@1.0.1': '@radix-ui/number@1.0.1': dependencies: '@babel/runtime': 7.23.8 + '@radix-ui/primitive@1.0.1': '@radix-ui/primitive@1.0.1': dependencies: '@babel/runtime': 7.23.8 + '@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9569,6 +9902,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9579,21 +9913,25 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-compose-refs@1.0.1(react@18.2.0)': '@radix-ui/react-compose-refs@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-context@1.0.1(react@18.2.0)': '@radix-ui/react-context@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-direction@1.0.1(react@18.2.0)': '@radix-ui/react-direction@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9605,11 +9943,13 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-focus-guards@1.0.1(react@18.2.0)': '@radix-ui/react-focus-guards@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9619,12 +9959,14 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-id@1.0.1(react@18.2.0)': '@radix-ui/react-id@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) react: 18.2.0 + '@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9641,6 +9983,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9648,6 +9991,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9655,6 +9999,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9670,6 +10015,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9697,6 +10043,7 @@ snapshots: react-dom: 18.2.0(react@18.2.0) react-remove-scroll: 2.5.5(react@18.2.0) + '@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9704,12 +10051,14 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-slot@1.0.2(react@18.2.0)': '@radix-ui/react-slot@1.0.2(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) react: 18.2.0 + '@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9723,6 +10072,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9732,6 +10082,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9745,45 +10096,53 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0)': '@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0)': '@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) react: 18.2.0 + '@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0)': '@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) react: 18.2.0 + '@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0)': '@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-use-previous@1.0.1(react@18.2.0)': '@radix-ui/react-use-previous@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + '@radix-ui/react-use-rect@1.0.1(react@18.2.0)': '@radix-ui/react-use-rect@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/rect': 1.0.1 react: 18.2.0 + '@radix-ui/react-use-size@1.0.1(react@18.2.0)': '@radix-ui/react-use-size@1.0.1(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) react: 18.2.0 + '@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0)': '@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 @@ -9791,10 +10150,12 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@radix-ui/rect@1.0.1': '@radix-ui/rect@1.0.1': dependencies: '@babel/runtime': 7.23.8 + '@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1)': '@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) @@ -9805,6 +10166,7 @@ snapshots: resolve: 1.22.8 rollup: 2.79.1 + '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) @@ -9815,6 +10177,7 @@ snapshots: resolve: 1.22.8 rollup: 3.29.4 + '@rollup/pluginutils@3.1.0(rollup@2.79.1)': '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: '@types/estree': 0.0.39 @@ -9822,6 +10185,7 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.1 + '@rollup/pluginutils@5.1.0(rollup@3.29.4)': '@rollup/pluginutils@5.1.0(rollup@3.29.4)': dependencies: '@types/estree': 1.0.5 @@ -9829,29 +10193,37 @@ snapshots: picomatch: 2.3.1 rollup: 3.29.4 + '@sideway/address@4.1.4': '@sideway/address@4.1.4': dependencies: '@hapi/hoek': 9.3.0 '@sideway/formula@3.0.1': {} + '@sideway/formula@3.0.1': {} + '@sideway/pinpoint@2.0.0': {} '@sideway/pinpoint@2.0.0': {} + '@sinclair/typebox@0.27.8': {} '@sinclair/typebox@0.27.8': {} + '@sinonjs/commons@3.0.0': '@sinonjs/commons@3.0.0': dependencies: type-detect: 4.0.8 + '@sinonjs/fake-timers@10.3.0': '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.0 + '@storybook/addon-a11y@7.6.12': '@storybook/addon-a11y@7.6.12': dependencies: '@storybook/addon-highlight': 7.6.12 axe-core: 4.8.3 + '@storybook/addon-actions@7.6.7': '@storybook/addon-actions@7.6.7': dependencies: '@storybook/core-events': 7.6.7 @@ -9861,12 +10233,14 @@ snapshots: polished: 4.2.2 uuid: 9.0.1 + '@storybook/addon-backgrounds@7.6.7': '@storybook/addon-backgrounds@7.6.7': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 + '@storybook/addon-controls@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/addon-controls@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@storybook/blocks': 7.6.7(react-dom@18.2.0)(react@18.2.0) @@ -9880,6 +10254,7 @@ snapshots: - react-dom - supports-color + '@storybook/addon-docs@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/addon-docs@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@jest/transform': 29.7.0 @@ -9909,6 +10284,7 @@ snapshots: - encoding - supports-color + '@storybook/addon-essentials@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/addon-essentials@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@storybook/addon-actions': 7.6.7 @@ -9933,14 +10309,17 @@ snapshots: - encoding - supports-color + '@storybook/addon-highlight@7.6.12': '@storybook/addon-highlight@7.6.12': dependencies: '@storybook/global': 5.0.0 + '@storybook/addon-highlight@7.6.7': '@storybook/addon-highlight@7.6.7': dependencies: '@storybook/global': 5.0.0 + '@storybook/addon-links@7.6.7(react@18.2.0)': '@storybook/addon-links@7.6.7(react@18.2.0)': dependencies: '@storybook/csf': 0.1.2 @@ -9948,6 +10327,7 @@ snapshots: react: 18.2.0 ts-dedent: 2.2.0 + '@storybook/addon-mdx-gfm@7.6.7': '@storybook/addon-mdx-gfm@7.6.7': dependencies: '@storybook/node-logger': 7.6.7 @@ -9956,16 +10336,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/addon-measure@7.6.7': '@storybook/addon-measure@7.6.7': dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.1 + '@storybook/addon-outline@7.6.7': '@storybook/addon-outline@7.6.7': dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 + '@storybook/addon-storysource@7.6.7': '@storybook/addon-storysource@7.6.7': dependencies: '@storybook/source-loader': 7.6.7 @@ -9973,11 +10356,14 @@ snapshots: tiny-invariant: 1.3.1 '@storybook/addon-toolbars@7.6.7': {} + '@storybook/addon-toolbars@7.6.7': {} + '@storybook/addon-viewport@7.6.7': '@storybook/addon-viewport@7.6.7': dependencies: memoizerific: 1.11.3 + '@storybook/blocks@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/blocks@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@storybook/channels': 7.6.7 @@ -10011,6 +10397,7 @@ snapshots: - encoding - supports-color + '@storybook/builder-manager@7.6.7': '@storybook/builder-manager@7.6.7': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 @@ -10033,6 +10420,7 @@ snapshots: - encoding - supports-color + '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1)': '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1)': dependencies: '@storybook/channels': 7.6.7 @@ -10057,6 +10445,7 @@ snapshots: - encoding - supports-color + '@storybook/channels@7.6.7': '@storybook/channels@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 @@ -10066,6 +10455,7 @@ snapshots: telejson: 7.2.0 tiny-invariant: 1.3.1 + '@storybook/cli@7.6.7': '@storybook/cli@7.6.7': dependencies: '@babel/core': 7.23.7 @@ -10115,10 +10505,12 @@ snapshots: - supports-color - utf-8-validate + '@storybook/client-logger@7.6.7': '@storybook/client-logger@7.6.7': dependencies: '@storybook/global': 5.0.0 + '@storybook/codemod@7.6.7': '@storybook/codemod@7.6.7': dependencies: '@babel/core': 7.23.7 @@ -10138,6 +10530,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/components@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/components@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) @@ -10156,11 +10549,13 @@ snapshots: - '@types/react' - '@types/react-dom' + '@storybook/core-client@7.6.7': '@storybook/core-client@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 '@storybook/preview-api': 7.6.7 + '@storybook/core-common@7.6.7': '@storybook/core-common@7.6.7': dependencies: '@storybook/core-events': 7.6.7 @@ -10190,10 +10585,12 @@ snapshots: - encoding - supports-color + '@storybook/core-events@7.6.7': '@storybook/core-events@7.6.7': dependencies: ts-dedent: 2.2.0 + '@storybook/core-server@7.6.7': '@storybook/core-server@7.6.7': dependencies: '@aw-web-design/x-default-browser': 1.4.126 @@ -10243,6 +10640,7 @@ snapshots: - supports-color - utf-8-validate + '@storybook/csf-plugin@7.6.7': '@storybook/csf-plugin@7.6.7': dependencies: '@storybook/csf-tools': 7.6.7 @@ -10250,6 +10648,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/csf-tools@7.6.7': '@storybook/csf-tools@7.6.7': dependencies: '@babel/generator': 7.23.6 @@ -10264,16 +10663,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/csf@0.0.1': '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 + '@storybook/csf@0.1.2': '@storybook/csf@0.1.2': dependencies: type-fest: 2.19.0 '@storybook/docs-mdx@0.1.0': {} + '@storybook/docs-mdx@0.1.0': {} + '@storybook/docs-tools@7.6.7': '@storybook/docs-tools@7.6.7': dependencies: '@storybook/core-common': 7.6.7 @@ -10288,7 +10691,9 @@ snapshots: - supports-color '@storybook/global@5.0.0': {} + '@storybook/global@5.0.0': {} + '@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@storybook/channels': 7.6.7 @@ -10310,13 +10715,18 @@ snapshots: - react-dom '@storybook/manager@7.6.7': {} + '@storybook/manager@7.6.7': {} + '@storybook/mdx2-csf@1.1.0': {} '@storybook/mdx2-csf@1.1.0': {} + '@storybook/node-logger@7.6.7': {} '@storybook/node-logger@7.6.7': {} + '@storybook/postinstall@7.6.7': {} '@storybook/postinstall@7.6.7': {} + '@storybook/preview-api@7.6.7': '@storybook/preview-api@7.6.7': dependencies: '@storybook/channels': 7.6.7 @@ -10336,17 +10746,22 @@ snapshots: '@storybook/preview@7.6.7': {} + '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/preview@7.6.7': {} + '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@storybook/router@7.6.7': '@storybook/router@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 memoizerific: 1.11.3 qs: 6.11.2 + '@storybook/source-loader@7.6.7': '@storybook/source-loader@7.6.7': dependencies: '@storybook/csf': 0.1.2 @@ -10355,6 +10770,7 @@ snapshots: lodash: 4.17.21 prettier: 2.8.8 + '@storybook/telemetry@7.6.7': '@storybook/telemetry@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 @@ -10369,6 +10785,7 @@ snapshots: - encoding - supports-color + '@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0)': '@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) @@ -10378,6 +10795,7 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + '@storybook/types@7.6.7': '@storybook/types@7.6.7': dependencies: '@storybook/channels': 7.6.7 @@ -10385,6 +10803,7 @@ snapshots: '@types/express': 4.17.21 file-system-cache: 2.3.0 + '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)': '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)': dependencies: '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1) @@ -10405,6 +10824,7 @@ snapshots: - vite - vite-plugin-glimmerx + '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)': '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)': dependencies: '@storybook/client-logger': 7.6.7 @@ -10424,21 +10844,29 @@ snapshots: - supports-color '@tootallnate/quickjs-emscripten@0.23.0': {} + '@tootallnate/quickjs-emscripten@0.23.0': {} + '@tsconfig/node10@1.0.9': {} '@tsconfig/node10@1.0.9': {} + '@tsconfig/node12@1.0.11': {} '@tsconfig/node12@1.0.11': {} + '@tsconfig/node14@1.0.3': {} '@tsconfig/node14@1.0.3': {} + '@tsconfig/node16@1.0.4': {} '@tsconfig/node16@1.0.4': {} + '@types/accepts@1.3.7': '@types/accepts@1.3.7': dependencies: '@types/node': 18.19.6 '@types/babel__code-frame@7.0.6': {} + '@types/babel__code-frame@7.0.6': {} + '@types/babel__core@7.20.5': '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.23.6 @@ -10447,45 +10875,57 @@ snapshots: '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 + '@types/babel__generator@7.6.8': '@types/babel__generator@7.6.8': dependencies: '@babel/types': 7.23.6 + '@types/babel__template@7.4.4': '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 + '@types/babel__traverse@7.20.5': '@types/babel__traverse@7.20.5': dependencies: '@babel/types': 7.23.6 + '@types/body-parser@1.19.5': '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 '@types/node': 18.19.6 + '@types/chai-dom@1.11.3': '@types/chai-dom@1.11.3': dependencies: '@types/chai': 4.3.11 '@types/chai@4.3.11': {} + '@types/chai@4.3.11': {} + '@types/co-body@6.1.3': '@types/co-body@6.1.3': dependencies: '@types/node': 18.19.6 '@types/qs': 6.9.11 '@types/command-line-args@5.2.3': {} + '@types/command-line-args@5.2.3': {} + '@types/connect@3.4.38': '@types/connect@3.4.38': dependencies: '@types/node': 18.19.6 '@types/content-disposition@0.5.8': {} + '@types/content-disposition@0.5.8': {} + '@types/convert-source-map@2.0.3': {} '@types/convert-source-map@2.0.3': {} + '@types/cookies@0.7.10': '@types/cookies@0.7.10': dependencies: '@types/connect': 3.4.38 @@ -10493,96 +10933,126 @@ snapshots: '@types/keygrip': 1.0.6 '@types/node': 18.19.6 + '@types/cross-spawn@6.0.6': '@types/cross-spawn@6.0.6': dependencies: '@types/node': 18.19.6 '@types/d3-array@3.2.1': {} + '@types/d3-array@3.2.1': {} + '@types/d3-axis@3.0.6': '@types/d3-axis@3.0.6': dependencies: '@types/d3-selection': 3.0.10 + '@types/d3-brush@3.0.6': '@types/d3-brush@3.0.6': dependencies: '@types/d3-selection': 3.0.10 '@types/d3-chord@3.0.6': {} + '@types/d3-chord@3.0.6': {} + '@types/d3-color@3.1.3': {} '@types/d3-color@3.1.3': {} + '@types/d3-contour@3.0.6': '@types/d3-contour@3.0.6': dependencies: '@types/d3-array': 3.2.1 '@types/geojson': 7946.0.13 '@types/d3-delaunay@6.0.4': {} + '@types/d3-delaunay@6.0.4': {} + '@types/d3-dispatch@3.0.6': {} '@types/d3-dispatch@3.0.6': {} + '@types/d3-drag@3.0.7': '@types/d3-drag@3.0.7': dependencies: '@types/d3-selection': 3.0.10 '@types/d3-dsv@3.0.7': {} + '@types/d3-dsv@3.0.7': {} + '@types/d3-ease@3.0.2': {} '@types/d3-ease@3.0.2': {} + '@types/d3-fetch@3.0.7': '@types/d3-fetch@3.0.7': dependencies: '@types/d3-dsv': 3.0.7 '@types/d3-force@3.0.9': {} + '@types/d3-force@3.0.9': {} + '@types/d3-format@3.0.4': {} '@types/d3-format@3.0.4': {} + '@types/d3-geo@3.1.0': '@types/d3-geo@3.1.0': dependencies: '@types/geojson': 7946.0.13 '@types/d3-hierarchy@3.1.6': {} + '@types/d3-hierarchy@3.1.6': {} + '@types/d3-interpolate@3.0.4': '@types/d3-interpolate@3.0.4': dependencies: '@types/d3-color': 3.1.3 '@types/d3-path@3.0.2': {} + '@types/d3-path@3.0.2': {} + '@types/d3-polygon@3.0.2': {} '@types/d3-polygon@3.0.2': {} + '@types/d3-quadtree@3.0.6': {} '@types/d3-quadtree@3.0.6': {} + '@types/d3-random@3.0.3': {} '@types/d3-random@3.0.3': {} + '@types/d3-scale-chromatic@3.0.3': {} '@types/d3-scale-chromatic@3.0.3': {} + '@types/d3-scale@4.0.8': '@types/d3-scale@4.0.8': dependencies: '@types/d3-time': 3.0.3 '@types/d3-selection@3.0.10': {} + '@types/d3-selection@3.0.10': {} + '@types/d3-shape@3.1.6': '@types/d3-shape@3.1.6': dependencies: '@types/d3-path': 3.0.2 '@types/d3-time-format@4.0.3': {} + '@types/d3-time-format@4.0.3': {} + '@types/d3-time@3.0.3': {} '@types/d3-time@3.0.3': {} + '@types/d3-timer@3.0.2': {} '@types/d3-timer@3.0.2': {} + '@types/d3-transition@3.0.8': '@types/d3-transition@3.0.8': dependencies: '@types/d3-selection': 3.0.10 + '@types/d3-zoom@3.0.8': '@types/d3-zoom@3.0.8': dependencies: '@types/d3-interpolate': 3.0.4 '@types/d3-selection': 3.0.10 - /@types/d3@7.4.3: - resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/d3@7.4.3': dependencies: '@types/d3-array': 3.2.1 '@types/d3-axis': 3.0.6 @@ -10616,28 +11086,38 @@ snapshots: '@types/d3-zoom': 3.0.8 '@types/debounce@1.2.4': {} + '@types/debounce@1.2.4': {} + '@types/debug@4.1.12': '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 '@types/detect-port@1.3.5': {} + '@types/detect-port@1.3.5': {} + '@types/doctrine@0.0.3': {} '@types/doctrine@0.0.3': {} + '@types/ejs@3.1.5': {} '@types/ejs@3.1.5': {} + '@types/emscripten@1.39.10': {} '@types/emscripten@1.39.10': {} + '@types/eslint@8.56.1': '@types/eslint@8.56.1': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 '@types/estree@0.0.39': {} + '@types/estree@0.0.39': {} + '@types/estree@1.0.5': {} '@types/estree@1.0.5': {} + '@types/express-serve-static-core@4.17.41': '@types/express-serve-static-core@4.17.41': dependencies: '@types/node': 18.19.6 @@ -10645,6 +11125,7 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 + '@types/express@4.17.21': '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 @@ -10653,44 +11134,58 @@ snapshots: '@types/serve-static': 1.15.5 '@types/find-cache-dir@3.2.1': {} + '@types/find-cache-dir@3.2.1': {} + '@types/geojson@7946.0.13': {} '@types/geojson@7946.0.13': {} + '@types/graceful-fs@4.1.9': '@types/graceful-fs@4.1.9': dependencies: '@types/node': 18.19.6 '@types/http-assert@1.5.5': {} + '@types/http-assert@1.5.5': {} + '@types/http-errors@2.0.4': {} '@types/http-errors@2.0.4': {} + '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-coverage@2.0.6': {} + '@types/istanbul-lib-report@3.0.3': '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 + '@types/istanbul-reports@3.0.4': '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 + '@types/jest@29.5.5': '@types/jest@29.5.5': dependencies: expect: 29.7.0 pretty-format: 29.7.0 + '@types/jquery@3.5.29': '@types/jquery@3.5.29': dependencies: '@types/sizzle': 2.3.8 '@types/json-schema@7.0.15': {} + '@types/json-schema@7.0.15': {} + '@types/keygrip@1.0.6': {} '@types/keygrip@1.0.6': {} + '@types/koa-compose@3.2.8': '@types/koa-compose@3.2.8': dependencies: '@types/koa': 2.14.0 + '@types/koa@2.14.0': '@types/koa@2.14.0': dependencies: '@types/accepts': 1.3.7 @@ -10702,87 +11197,117 @@ snapshots: '@types/koa-compose': 3.2.8 '@types/node': 18.19.6 + '@types/lodash-es@4.17.12': '@types/lodash-es@4.17.12': dependencies: '@types/lodash': 4.14.202 '@types/lodash@4.14.202': {} + '@types/lodash@4.14.202': {} + '@types/mark.js@8.11.12': '@types/mark.js@8.11.12': dependencies: '@types/jquery': 3.5.29 + '@types/mdast@3.0.15': '@types/mdast@3.0.15': dependencies: '@types/unist': 2.0.10 '@types/mdx@2.0.10': {} + '@types/mdx@2.0.10': {} + '@types/mime-types@2.1.4': {} '@types/mime-types@2.1.4': {} + '@types/mime@1.3.5': {} '@types/mime@1.3.5': {} + '@types/mime@3.0.4': {} '@types/mime@3.0.4': {} + '@types/minimist@1.2.5': {} '@types/minimist@1.2.5': {} + '@types/mocha@8.2.3': {} '@types/mocha@8.2.3': {} + '@types/ms@0.7.34': {} '@types/ms@0.7.34': {} + '@types/node-fetch@2.6.10': '@types/node-fetch@2.6.10': dependencies: '@types/node': 18.19.6 form-data: 4.0.0 '@types/node@12.20.55': {} + '@types/node@12.20.55': {} + '@types/node@18.19.6': '@types/node@18.19.6': dependencies: undici-types: 5.26.5 '@types/normalize-package-data@2.4.4': {} + '@types/normalize-package-data@2.4.4': {} + '@types/parse-json@4.0.2': {} '@types/parse-json@4.0.2': {} + '@types/parse5@6.0.3': {} '@types/parse5@6.0.3': {} + '@types/prettier@3.0.0': '@types/prettier@3.0.0': dependencies: prettier: 3.0.3 '@types/pretty-hrtime@1.0.3': {} + '@types/pretty-hrtime@1.0.3': {} + '@types/prop-types@15.7.11': {} '@types/prop-types@15.7.11': {} + '@types/qs@6.9.11': {} '@types/qs@6.9.11': {} + '@types/raf@3.4.3': '@types/raf@3.4.3': optional: true '@types/range-parser@1.2.7': {} + '@types/range-parser@1.2.7': {} + '@types/react@18.2.47': '@types/react@18.2.47': dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 + '@types/resolve@1.17.1': '@types/resolve@1.17.1': dependencies: '@types/node': 18.19.6 '@types/resolve@1.20.2': {} + '@types/resolve@1.20.2': {} + '@types/scheduler@0.16.8': {} '@types/scheduler@0.16.8': {} + '@types/semver@7.5.6': {} '@types/semver@7.5.6': {} + '@types/send@0.17.4': '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 '@types/node': 18.19.6 + '@types/serve-static@1.15.5': '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 @@ -10790,38 +11315,51 @@ snapshots: '@types/node': 18.19.6 '@types/showdown@2.0.6': {} + '@types/showdown@2.0.6': {} + '@types/sinon-chai@3.2.12': '@types/sinon-chai@3.2.12': dependencies: '@types/chai': 4.3.11 '@types/sinon': 17.0.3 + '@types/sinon@17.0.3': '@types/sinon@17.0.3': dependencies: '@types/sinonjs__fake-timers': 8.1.5 '@types/sinonjs__fake-timers@8.1.5': {} + '@types/sinonjs__fake-timers@8.1.5': {} + '@types/sizzle@2.3.8': {} '@types/sizzle@2.3.8': {} + '@types/stack-utils@2.0.3': {} '@types/stack-utils@2.0.3': {} + '@types/trusted-types@2.0.7': {} '@types/trusted-types@2.0.7': {} + '@types/unist@2.0.10': {} '@types/unist@2.0.10': {} + '@types/uuid@9.0.7': {} '@types/uuid@9.0.7': {} + '@types/ws@7.4.7': '@types/ws@7.4.7': dependencies: '@types/node': 18.19.6 '@types/yargs-parser@21.0.3': {} + '@types/yargs-parser@21.0.3': {} + '@types/yargs@17.0.32': '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 + '@types/yauzl@2.10.3': '@types/yauzl@2.10.3': dependencies: '@types/node': 18.19.6 @@ -10829,6 +11367,9 @@ snapshots: '@types/yoga-layout@1.9.2': {} + '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)': + '@types/yoga-layout@1.9.2': {} + '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.10.0 @@ -10848,6 +11389,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.18.1 @@ -10860,16 +11402,19 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/scope-manager@5.62.0': '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 + '@typescript-eslint/scope-manager@6.18.1': '@typescript-eslint/scope-manager@6.18.1': dependencies: '@typescript-eslint/types': 6.18.1 '@typescript-eslint/visitor-keys': 6.18.1 + '@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) @@ -10885,6 +11430,11 @@ snapshots: '@typescript-eslint/types@6.18.1': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)': + '@typescript-eslint/types@5.62.0': {} + + '@typescript-eslint/types@6.18.1': {} + '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -10898,6 +11448,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3)': '@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 6.18.1 @@ -10912,6 +11463,7 @@ snapshots: transitivePeerDependencies: - supports-color + '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -10927,6 +11479,7 @@ snapshots: - supports-color - typescript + '@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -10941,38 +11494,47 @@ snapshots: - supports-color - typescript + '@typescript-eslint/visitor-keys@5.62.0': '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 + '@typescript-eslint/visitor-keys@6.18.1': '@typescript-eslint/visitor-keys@6.18.1': dependencies: '@typescript-eslint/types': 6.18.1 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} + '@ungap/structured-clone@1.2.0': {} + '@web/browser-logs@0.2.6': '@web/browser-logs@0.2.6': dependencies: errorstacks: 2.4.1 + '@web/browser-logs@0.3.4': '@web/browser-logs@0.3.4': dependencies: errorstacks: 2.4.1 + '@web/browser-logs@0.4.0': '@web/browser-logs@0.4.0': dependencies: errorstacks: 2.4.1 + '@web/config-loader@0.1.3': '@web/config-loader@0.1.3': dependencies: semver: 7.5.4 + '@web/config-loader@0.2.2': '@web/config-loader@0.2.2': dependencies: semver: 7.5.4 + '@web/dev-server-core@0.4.1': '@web/dev-server-core@0.4.1': dependencies: '@types/koa': 2.14.0 @@ -10998,6 +11560,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-core@0.6.3': '@web/dev-server-core@0.6.3': dependencies: '@types/koa': 2.14.0 @@ -11023,6 +11586,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-core@0.7.0': '@web/dev-server-core@0.7.0': dependencies: '@types/koa': 2.14.0 @@ -11048,6 +11612,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-esbuild@0.3.6': '@web/dev-server-esbuild@0.3.6': dependencies: '@mdn/browser-compat-data': 4.2.1 @@ -11060,6 +11625,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-esbuild@0.4.4': '@web/dev-server-esbuild@0.4.4': dependencies: '@mdn/browser-compat-data': 4.2.1 @@ -11072,6 +11638,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-rollup@0.4.1': '@web/dev-server-rollup@0.4.1': dependencies: '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.1) @@ -11085,6 +11652,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server-rollup@0.5.4': '@web/dev-server-rollup@0.5.4': dependencies: '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) @@ -11098,6 +11666,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server@0.1.38': '@web/dev-server@0.1.38': dependencies: '@babel/code-frame': 7.23.5 @@ -11119,6 +11688,7 @@ snapshots: - supports-color - utf-8-validate + '@web/dev-server@0.3.7': '@web/dev-server@0.3.7': dependencies: '@babel/code-frame': 7.23.5 @@ -11140,16 +11710,19 @@ snapshots: - supports-color - utf-8-validate + '@web/parse5-utils@1.3.1': '@web/parse5-utils@1.3.1': dependencies: '@types/parse5': 6.0.3 parse5: 6.0.1 + '@web/parse5-utils@2.1.0': '@web/parse5-utils@2.1.0': dependencies: '@types/parse5': 6.0.3 parse5: 6.0.1 + '@web/test-runner-chrome@0.10.7': '@web/test-runner-chrome@0.10.7': dependencies: '@web/test-runner-core': 0.10.29 @@ -11162,6 +11735,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-chrome@0.14.4(typescript@5.3.3)': '@web/test-runner-chrome@0.14.4(typescript@5.3.3)': dependencies: '@web/test-runner-core': 0.12.0 @@ -11176,6 +11750,7 @@ snapshots: - typescript - utf-8-validate + '@web/test-runner-commands@0.6.6': '@web/test-runner-commands@0.6.6': dependencies: '@web/test-runner-core': 0.10.29 @@ -11185,6 +11760,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-commands@0.8.3': '@web/test-runner-commands@0.8.3': dependencies: '@web/test-runner-core': 0.12.0 @@ -11194,6 +11770,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-commands@0.9.0': '@web/test-runner-commands@0.9.0': dependencies: '@web/test-runner-core': 0.13.0 @@ -11203,6 +11780,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-core@0.10.29': '@web/test-runner-core@0.10.29': dependencies: '@babel/code-frame': 7.23.5 @@ -11236,6 +11814,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-core@0.12.0': '@web/test-runner-core@0.12.0': dependencies: '@babel/code-frame': 7.23.5 @@ -11269,6 +11848,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-core@0.13.0': '@web/test-runner-core@0.13.0': dependencies: '@babel/code-frame': 7.23.5 @@ -11302,6 +11882,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-coverage-v8@0.4.9': '@web/test-runner-coverage-v8@0.4.9': dependencies: '@web/test-runner-core': 0.10.29 @@ -11313,6 +11894,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-coverage-v8@0.7.3': '@web/test-runner-coverage-v8@0.7.3': dependencies: '@web/test-runner-core': 0.12.0 @@ -11325,6 +11907,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-mocha@0.7.5': '@web/test-runner-mocha@0.7.5': dependencies: '@types/mocha': 8.2.3 @@ -11334,6 +11917,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner-mocha@0.8.2': '@web/test-runner-mocha@0.8.2': dependencies: '@web/test-runner-core': 0.12.0 @@ -11342,6 +11926,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner@0.13.31': '@web/test-runner@0.13.31': dependencies: '@web/browser-logs': 0.2.6 @@ -11366,6 +11951,7 @@ snapshots: - supports-color - utf-8-validate + '@web/test-runner@0.17.3(typescript@5.3.3)': '@web/test-runner@0.17.3(typescript@5.3.3)': dependencies: '@web/browser-logs': 0.3.4 @@ -11391,26 +11977,31 @@ snapshots: - typescript - utf-8-validate + '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': dependencies: esbuild: 0.18.20 tslib: 2.6.2 + '@yarnpkg/fslib@2.10.3': '@yarnpkg/fslib@2.10.3': dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 + '@yarnpkg/libzip@2.3.0': '@yarnpkg/libzip@2.3.0': dependencies: '@types/emscripten': 1.39.10 tslib: 1.14.1 + accepts@1.3.8: accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 + acorn-jsx@5.3.2(acorn@8.11.3): acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 @@ -11423,23 +12014,36 @@ snapshots: agent-base@5.1.1: {} + agent-base@6.0.2: + + acorn-walk@8.3.1: {} + + acorn@8.11.3: {} + + address@1.2.2: {} + + agent-base@5.1.1: {} + agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + agent-base@7.1.0: agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color + aggregate-error@3.1.0: aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 + ajv@6.12.6: ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -11448,71 +12052,96 @@ snapshots: uri-js: 4.4.1 anser@2.1.1: {} + anser@2.1.1: {} + ansi-colors@4.1.3: {} ansi-colors@4.1.3: {} + ansi-escapes@4.3.2: ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 + ansi-escapes@5.0.0: ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 ansi-regex@5.0.1: {} + ansi-regex@5.0.1: {} + ansi-regex@6.0.1: {} ansi-regex@6.0.1: {} + ansi-styles@3.2.1: ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 + ansi-styles@4.3.0: ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} + ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} ansi-styles@6.2.1: {} + anymatch@3.1.3: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 app-root-dir@1.0.2: {} + app-root-dir@1.0.2: {} + arg@4.1.3: {} arg@4.1.3: {} + argparse@1.0.10: argparse@1.0.10: dependencies: sprintf-js: 1.0.3 argparse@2.0.1: {} + argparse@2.0.1: {} + aria-hidden@1.2.3: aria-hidden@1.2.3: dependencies: tslib: 2.6.2 array-back@3.1.0: {} + array-back@3.1.0: {} + array-back@4.0.2: {} array-back@4.0.2: {} + array-back@6.2.2: {} array-back@6.2.2: {} + array-buffer-byte-length@1.0.0: array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 array-flatten@1.1.1: {} + array-flatten@1.1.1: {} + array-parallel@0.1.3: {} array-parallel@0.1.3: {} + array-series@0.1.5: {} array-series@0.1.5: {} + array-union@2.1.0: {} array-union@2.1.0: {} + array.prototype.flat@1.3.2: array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.5 @@ -11520,6 +12149,7 @@ snapshots: es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 + arraybuffer.prototype.slice@1.0.2: arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 @@ -11531,7 +12161,9 @@ snapshots: is-shared-array-buffer: 1.0.2 arrify@1.0.1: {} + arrify@1.0.1: {} + assert@2.1.0: assert@2.1.0: dependencies: call-bind: 1.0.5 @@ -11540,22 +12172,28 @@ snapshots: object.assign: 4.1.5 util: 0.12.5 + ast-types@0.13.4: ast-types@0.13.4: dependencies: tslib: 2.6.2 + ast-types@0.16.1: ast-types@0.16.1: dependencies: tslib: 2.6.2 astral-regex@2.0.0: {} + astral-regex@2.0.0: {} + async-limiter@1.0.1: {} async-limiter@1.0.1: {} + async-mutex@0.4.0: async-mutex@0.4.0: dependencies: tslib: 2.6.2 + async@2.6.4: async@2.6.4: dependencies: lodash: 4.17.21 @@ -11572,6 +12210,20 @@ snapshots: available-typed-arrays@1.0.5: {} + aws-sdk@2.1532.0: + + async@3.2.5: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + atob@2.1.2: {} + + auto-bind@4.0.0: {} + + available-typed-arrays@1.0.5: {} + aws-sdk@2.1532.0: dependencies: buffer: 4.9.2 @@ -11586,13 +12238,16 @@ snapshots: xml2js: 0.5.0 axe-core@4.8.3: {} + axe-core@4.8.3: {} + axios@0.21.4(debug@4.3.4): axios@0.21.4(debug@4.3.4): dependencies: follow-redirects: 1.15.4(debug@4.3.4) transitivePeerDependencies: - debug + axios@0.27.2: axios@0.27.2: dependencies: follow-redirects: 1.15.4(debug@4.3.4) @@ -11601,11 +12256,14 @@ snapshots: - debug b4a@1.6.4: {} + b4a@1.6.4: {} + babel-core@7.0.0-bridge.0(@babel/core@7.23.7): babel-core@7.0.0-bridge.0(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 + babel-jest@29.7.0(@babel/core@7.23.7): babel-jest@29.7.0(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -11619,6 +12277,7 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-istanbul@6.1.1: babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.22.5 @@ -11629,6 +12288,7 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-jest-hoist@29.6.3: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.22.15 @@ -11636,6 +12296,7 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 + babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): dependencies: '@babel/compat-data': 7.23.5 @@ -11645,6 +12306,7 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -11653,6 +12315,7 @@ snapshots: transitivePeerDependencies: - supports-color + babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -11660,6 +12323,7 @@ snapshots: transitivePeerDependencies: - supports-color + babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -11676,6 +12340,7 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) + babel-preset-jest@29.6.3(@babel/core@7.23.7): babel-preset-jest@29.6.3(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -11683,34 +12348,46 @@ snapshots: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) bail@2.0.2: {} + bail@2.0.2: {} + + balanced-match@1.0.2: {} + base64-arraybuffer@1.0.2: balanced-match@1.0.2: {} base64-arraybuffer@1.0.2: optional: true base64-js@1.5.1: {} + base64-js@1.5.1: {} + basic-ftp@5.0.4: {} basic-ftp@5.0.4: {} + better-opn@3.0.2: better-opn@3.0.2: dependencies: open: 8.4.2 + better-path-resolve@1.0.0: better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 big-integer@1.6.52: {} + big-integer@1.6.52: {} + binary-extensions@2.2.0: {} binary-extensions@2.2.0: {} + bl@4.1.0: bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + body-parser@1.20.1: body-parser@1.20.1: dependencies: bytes: 3.1.2 @@ -11728,33 +12405,41 @@ snapshots: transitivePeerDependencies: - supports-color + bplist-parser@0.2.0: bplist-parser@0.2.0: dependencies: big-integer: 1.6.52 + brace-expansion@1.1.11: brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 + brace-expansion@2.0.1: brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 + braces@3.0.2: braces@3.0.2: dependencies: fill-range: 7.0.1 + breakword@1.0.6: breakword@1.0.6: dependencies: wcwidth: 1.0.1 browser-assert@1.2.1: {} + browser-assert@1.2.1: {} + browserify-zlib@0.1.4: browserify-zlib@0.1.4: dependencies: pako: 0.2.9 + browserslist@4.22.2: browserslist@4.22.2: dependencies: caniuse-lite: 1.0.30001576 @@ -11762,10 +12447,12 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + bs-logger@0.2.6: bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 + bser@2.1.1: bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -11776,44 +12463,62 @@ snapshots: buffer-from@1.1.2: {} + buffer@4.9.2: + + btoa@1.2.1: {} + + buffer-crc32@0.2.13: {} + + buffer-from@1.1.2: {} + buffer@4.9.2: dependencies: base64-js: 1.5.1 ieee754: 1.1.13 isarray: 1.0.0 + buffer@5.7.1: buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 builtin-modules@3.3.0: {} + builtin-modules@3.3.0: {} + bytes@3.0.0: {} bytes@3.0.0: {} + bytes@3.1.2: {} bytes@3.1.2: {} + cache-content-type@1.0.1: cache-content-type@1.0.1: dependencies: mime-types: 2.1.35 ylru: 1.3.2 + call-bind@1.0.5: call-bind@1.0.5: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 + caller-callsite@4.1.0: caller-callsite@4.1.0: dependencies: callsites: 3.1.0 + caller-path@3.0.1: caller-path@3.0.1: dependencies: caller-callsite: 4.1.0 callsites@3.1.0: {} + callsites@3.1.0: {} + camelcase-keys@6.2.2: camelcase-keys@6.2.2: dependencies: camelcase: 5.3.1 @@ -11821,11 +12526,15 @@ snapshots: quick-lru: 4.0.1 camelcase@5.3.1: {} + camelcase@5.3.1: {} + camelcase@6.3.0: {} camelcase@6.3.0: {} + caniuse-lite@1.0.30001576: {} caniuse-lite@1.0.30001576: {} + canvg@3.0.10: canvg@3.0.10: dependencies: '@babel/runtime': 7.23.8 @@ -11839,34 +12548,44 @@ snapshots: optional: true ccount@2.0.1: {} + ccount@2.0.1: {} + chai-a11y-axe@1.5.0: chai-a11y-axe@1.5.0: dependencies: axe-core: 4.8.3 + chalk-template@0.4.0: chalk-template@0.4.0: dependencies: chalk: 4.1.2 + chalk@2.4.2: chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + chalk@4.1.2: chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 chalk@5.3.0: {} + chalk@5.3.0: {} + char-regex@1.0.2: {} char-regex@1.0.2: {} + character-entities@2.0.2: {} character-entities@2.0.2: {} + chardet@0.7.0: {} chardet@0.7.0: {} + chokidar@3.5.2: chokidar@3.5.2: dependencies: anymatch: 3.1.3 @@ -11879,6 +12598,7 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + chokidar@3.5.3: chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -11892,9 +12612,12 @@ snapshots: fsevents: 2.3.3 chownr@1.1.4: {} + chownr@1.1.4: {} + chownr@2.0.0: {} chownr@2.0.0: {} + chrome-launcher@0.14.2: chrome-launcher@0.14.2: dependencies: '@types/node': 18.19.6 @@ -11904,6 +12627,7 @@ snapshots: transitivePeerDependencies: - supports-color + chrome-launcher@0.15.2: chrome-launcher@0.15.2: dependencies: '@types/node': 18.19.6 @@ -11913,6 +12637,7 @@ snapshots: transitivePeerDependencies: - supports-color + chrome-remote-interface@0.32.2: chrome-remote-interface@0.32.2: dependencies: commander: 2.11.0 @@ -11921,63 +12646,79 @@ snapshots: - bufferutil - utf-8-validate + chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): dependencies: devtools-protocol: 0.0.1147663 mitt: 3.0.0 ci-info@2.0.0: {} + ci-info@2.0.0: {} + ci-info@3.9.0: {} ci-info@3.9.0: {} + citty@0.1.5: citty@0.1.5: dependencies: consola: 3.2.3 cjs-module-lexer@1.2.3: {} + cjs-module-lexer@1.2.3: {} + clean-stack@2.2.0: {} clean-stack@2.2.0: {} + cli-boxes@2.2.1: {} cli-boxes@2.2.1: {} + cli-cursor@3.1.0: cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 + cli-cursor@4.0.0: cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 cli-spinners@2.9.2: {} + cli-spinners@2.9.2: {} + cli-table3@0.6.3: cli-table3@0.6.3: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 + cli-truncate@2.1.0: cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 + cli-truncate@3.1.0: cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 + cliui@6.0.0: cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 + cliui@8.0.1: cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + clone-deep@4.0.1: clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -11985,9 +12726,12 @@ snapshots: shallow-clone: 3.0.1 clone@1.0.4: {} + clone@1.0.4: {} + clone@2.1.2: {} clone@2.1.2: {} + co-body@6.1.0: co-body@6.1.0: dependencies: inflation: 2.1.0 @@ -11996,35 +12740,47 @@ snapshots: type-is: 1.6.18 co@4.6.0: {} + co@4.6.0: {} + code-excerpt@3.0.0: code-excerpt@3.0.0: dependencies: convert-to-spaces: 1.0.2 collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.2: {} + color-convert@0.5.3: {} color-convert@0.5.3: {} + color-convert@1.9.3: color-convert@1.9.3: dependencies: color-name: 1.1.3 + color-convert@2.0.1: color-convert@2.0.1: dependencies: color-name: 1.1.4 color-diff@1.4.0: {} + color-diff@1.4.0: {} + color-name@1.1.3: {} color-name@1.1.3: {} + color-name@1.1.4: {} color-name@1.1.4: {} + colorette@2.0.20: {} colorette@2.0.20: {} + combined-stream@1.0.8: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + command-line-args@5.1.2: command-line-args@5.1.2: dependencies: array-back: 6.2.2 @@ -12032,6 +12788,7 @@ snapshots: lodash.camelcase: 4.3.0 typical: 4.0.0 + command-line-args@5.2.1: command-line-args@5.2.1: dependencies: array-back: 3.1.0 @@ -12039,6 +12796,7 @@ snapshots: lodash.camelcase: 4.3.0 typical: 4.0.0 + command-line-usage@6.1.3: command-line-usage@6.1.3: dependencies: array-back: 4.0.2 @@ -12046,6 +12804,7 @@ snapshots: table-layout: 1.0.2 typical: 5.2.0 + command-line-usage@7.0.1: command-line-usage@7.0.1: dependencies: array-back: 6.2.2 @@ -12054,23 +12813,32 @@ snapshots: typical: 7.1.1 commander@11.0.0: {} + commander@11.0.0: {} + commander@2.11.0: {} commander@2.11.0: {} + commander@6.2.1: {} commander@6.2.1: {} + commander@7.2.0: {} commander@7.2.0: {} + commander@9.5.0: {} commander@9.5.0: {} + comment-parser@1.2.4: {} comment-parser@1.2.4: {} + commondir@1.0.1: {} commondir@1.0.1: {} + compressible@2.0.18: compressible@2.0.18: dependencies: mime-db: 1.52.0 + compression@1.7.4: compression@1.7.4: dependencies: accepts: 1.3.8 @@ -12084,7 +12852,9 @@ snapshots: - supports-color concat-map@0.0.1: {} + concat-map@0.0.1: {} + concat-stream@1.6.2: concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 @@ -12092,6 +12862,7 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 + concurrently@8.2.2: concurrently@8.2.2: dependencies: chalk: 4.1.2 @@ -12105,37 +12876,50 @@ snapshots: yargs: 17.7.2 consola@3.2.3: {} + consola@3.2.3: {} + content-disposition@0.5.4: content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 content-type@1.0.5: {} + content-type@1.0.5: {} + convert-source-map@1.9.0: {} convert-source-map@1.9.0: {} + convert-source-map@2.0.0: {} convert-source-map@2.0.0: {} + convert-to-spaces@1.0.2: {} convert-to-spaces@1.0.2: {} + cookie-signature@1.0.6: {} cookie-signature@1.0.6: {} + cookie@0.5.0: {} cookie@0.5.0: {} + cookies@0.9.1: cookies@0.9.1: dependencies: depd: 2.0.0 keygrip: 1.1.0 + core-js-compat@3.35.0: core-js-compat@3.35.0: dependencies: browserslist: 4.22.2 + core-js@3.35.0: core-js@3.35.0: optional: true core-util-is@1.0.3: {} + core-util-is@1.0.3: {} + cosmiconfig@7.1.0: cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -12144,6 +12928,7 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): dependencies: '@jest/types': 29.6.3 @@ -12160,30 +12945,36 @@ snapshots: - ts-node create-require@1.1.1: {} + create-require@1.1.1: {} + cross-fetch@3.1.5: cross-fetch@3.1.5: dependencies: node-fetch: 2.6.7 transitivePeerDependencies: - encoding + cross-fetch@4.0.0: cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding + cross-spawn@4.0.2: cross-spawn@4.0.2: dependencies: lru-cache: 4.1.5 which: 1.3.1 + cross-spawn@5.1.0: cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 + cross-spawn@7.0.3: cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -12191,20 +12982,27 @@ snapshots: which: 2.0.2 crypto-random-string@2.0.0: {} + crypto-random-string@2.0.0: {} + css-line-break@2.1.0: css-line-break@2.1.0: dependencies: utrie: 1.0.2 optional: true csstype@3.1.3: {} + csstype@3.1.3: {} + csv-generate@3.4.3: {} csv-generate@3.4.3: {} + csv-parse@4.16.3: {} csv-parse@4.16.3: {} + csv-stringify@5.6.5: {} csv-stringify@5.6.5: {} + csv@5.5.3: csv@5.5.3: dependencies: csv-generate: 3.4.3 @@ -12213,13 +13011,17 @@ snapshots: stream-transform: 2.1.3 custom-elements-manifest@1.0.0: {} + custom-elements-manifest@1.0.0: {} + d3-array@3.2.4: d3-array@3.2.4: dependencies: internmap: 2.0.3 d3-axis@3.0.0: {} + d3-axis@3.0.0: {} + d3-brush@3.0.0: d3-brush@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -12228,27 +13030,41 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) + d3-chord@3.0.1: d3-chord@3.0.1: dependencies: d3-path: 3.1.0 d3-color@3.1.0: {} + d3-color@3.1.0: {} d3-contour@4.0.2: + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-dag@1.1.0: dependencies: d3-array: 3.2.4 + javascript-lp-solver: 0.4.24 + quadprog: 1.6.1 + stringify-object: 5.0.0 + d3-delaunay@6.0.4: d3-delaunay@6.0.4: dependencies: delaunator: 5.0.0 d3-dispatch@3.0.1: {} + d3-dispatch@3.0.1: {} + d3-drag@3.0.0: d3-drag@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-selection: 3.0.0 + d3-dsv@3.0.1: d3-dsv@3.0.1: dependencies: commander: 7.2.0 @@ -12256,11 +13072,14 @@ snapshots: rw: 1.3.3 d3-ease@3.0.1: {} + d3-ease@3.0.1: {} + d3-fetch@3.0.1: d3-fetch@3.0.1: dependencies: d3-dsv: 3.0.1 + d3-force@3.0.0: d3-force@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -12268,30 +13087,40 @@ snapshots: d3-timer: 3.0.1 d3-format@3.1.0: {} + d3-format@3.1.0: {} + d3-geo@3.1.0: d3-geo@3.1.0: dependencies: d3-array: 3.2.4 d3-hierarchy@3.1.2: {} + d3-hierarchy@3.1.2: {} + d3-interpolate@3.0.1: d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 d3-path@3.1.0: {} + d3-path@3.1.0: {} + d3-polygon@3.0.1: {} d3-polygon@3.0.1: {} + d3-quadtree@3.0.1: {} d3-quadtree@3.0.1: {} + d3-random@3.0.1: {} d3-random@3.0.1: {} + d3-scale-chromatic@3.0.0: d3-scale-chromatic@3.0.0: dependencies: d3-color: 3.1.0 d3-interpolate: 3.0.1 + d3-scale@4.0.2: d3-scale@4.0.2: dependencies: d3-array: 3.2.4 @@ -12301,21 +13130,29 @@ snapshots: d3-time-format: 4.1.0 d3-selection@3.0.0: {} + d3-selection@3.0.0: {} + d3-shape@3.2.0: d3-shape@3.2.0: dependencies: d3-path: 3.1.0 + d3-time-format@4.1.0: d3-time-format@4.1.0: dependencies: d3-time: 3.1.0 + d3-time@3.1.0: d3-time@3.1.0: dependencies: d3-array: 3.2.4 d3-timer@3.0.1: {} + d3-transition@3.0.1(d3-selection@3.0.0): + + d3-timer@3.0.1: {} + d3-transition@3.0.1(d3-selection@3.0.0): dependencies: d3-color: 3.1.0 @@ -12325,6 +13162,7 @@ snapshots: d3-selection: 3.0.0 d3-timer: 3.0.1 + d3-zoom@3.0.0: d3-zoom@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -12333,6 +13171,7 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) + d3@7.8.5: d3@7.8.5: dependencies: d3-array: 3.2.4 @@ -12367,32 +13206,45 @@ snapshots: d3-zoom: 3.0.0 data-uri-to-buffer@6.0.1: {} + data-uri-to-buffer@6.0.1: {} + date-fns@2.30.0: date-fns@2.30.0: dependencies: '@babel/runtime': 7.23.8 debounce@1.2.1: {} + debug@2.6.9: + + debounce@1.2.1: {} + debug@2.6.9: dependencies: ms: 2.0.0 + debug@3.2.7: + debug@3.2.7: dependencies: ms: 2.1.3 + debug@4.3.4: + debug@4.3.4: dependencies: ms: 2.1.2 + decamelize-keys@1.1.1: decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 decamelize@1.2.0: {} + decamelize@1.2.0: {} + decode-named-character-reference@1.0.2: decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -12407,15 +13259,29 @@ snapshots: deepmerge@4.3.1: {} + default-browser-id@3.0.0: + + dedent@1.5.1: {} + + deep-equal@1.0.1: {} + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + default-browser-id@3.0.0: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 + defaults@1.0.4: defaults@1.0.4: dependencies: clone: 1.0.4 + define-data-property@1.1.1: define-data-property@1.1.1: dependencies: get-intrinsic: 1.2.2 @@ -12423,7 +13289,9 @@ snapshots: has-property-descriptors: 1.0.1 define-lazy-prop@2.0.0: {} + define-lazy-prop@2.0.0: {} + define-properties@1.2.1: define-properties@1.2.1: dependencies: define-data-property: 1.1.1 @@ -12431,13 +13299,16 @@ snapshots: object-keys: 1.1.1 defu@6.1.4: {} + defu@6.1.4: {} + degenerator@5.0.1: degenerator@5.0.1: dependencies: ast-types: 0.13.4 escodegen: 2.1.0 esprima: 4.0.1 + del@6.1.1: del@6.1.1: dependencies: globby: 11.1.0 @@ -12449,34 +13320,47 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 + delaunator@5.0.0: delaunator@5.0.0: dependencies: robust-predicates: 3.0.2 delayed-stream@1.0.0: {} + delayed-stream@1.0.0: {} + delegates@1.0.0: {} delegates@1.0.0: {} + depd@1.1.2: {} depd@1.1.2: {} + depd@2.0.0: {} depd@2.0.0: {} + dependency-graph@0.11.0: {} dependency-graph@0.11.0: {} + dequal@2.0.3: {} dequal@2.0.3: {} + destroy@1.2.0: {} destroy@1.2.0: {} + detect-indent@6.1.0: {} detect-indent@6.1.0: {} + detect-newline@3.1.0: {} detect-newline@3.1.0: {} + detect-node-es@1.1.0: {} detect-node-es@1.1.0: {} + detect-package-manager@2.0.1: detect-package-manager@2.0.1: dependencies: execa: 5.1.1 + detect-port@1.5.1: detect-port@1.5.1: dependencies: address: 1.2.2 @@ -12485,30 +13369,41 @@ snapshots: - supports-color devtools-protocol@0.0.1147663: {} + devtools-protocol@0.0.1147663: {} + devtools-protocol@0.0.981744: {} devtools-protocol@0.0.981744: {} + diff-sequences@29.6.3: {} diff-sequences@29.6.3: {} + diff@4.0.2: {} diff@4.0.2: {} + diff@5.1.0: {} diff@5.1.0: {} + dir-glob@3.0.1: dir-glob@3.0.1: dependencies: path-type: 4.0.0 + doctrine@3.0.0: doctrine@3.0.0: dependencies: esutils: 2.0.3 + dompurify@2.4.7: dompurify@2.4.7: optional: true dotenv-expand@10.0.0: {} + dotenv-expand@10.0.0: {} + dotenv@16.0.3: {} dotenv@16.0.3: {} + duplexify@3.7.1: duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 @@ -12517,29 +13412,40 @@ snapshots: stream-shift: 1.0.1 eastasianwidth@0.2.0: {} + eastasianwidth@0.2.0: {} + ee-first@1.1.1: {} ee-first@1.1.1: {} + ejs@3.1.9: ejs@3.1.9: dependencies: jake: 10.8.7 electron-to-chromium@1.4.626: {} + electron-to-chromium@1.4.626: {} + emittery@0.13.1: {} emittery@0.13.1: {} + emoji-mart@5.5.2: {} emoji-mart@5.5.2: {} + emoji-regex@8.0.0: {} emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} emoji-regex@9.2.2: {} + encodeurl@1.0.2: {} encodeurl@1.0.2: {} + end-of-stream@1.4.4: end-of-stream@1.4.4: dependencies: once: 1.4.0 + enquirer@2.4.1: enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -12547,12 +13453,18 @@ snapshots: envinfo@7.11.0: {} + error-ex@1.3.2: + + envinfo@7.11.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 errorstacks@2.4.1: {} + errorstacks@2.4.1: {} + es-abstract@1.22.3: es-abstract@1.22.3: dependencies: array-buffer-byte-length: 1.0.0 @@ -12596,75 +13508,98 @@ snapshots: which-typed-array: 1.1.13 es-module-lexer@0.9.3: {} + es-module-lexer@0.9.3: {} + es-module-lexer@1.4.1: {} es-module-lexer@1.4.1: {} + es-set-tostringtag@2.0.2: es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 + es-shim-unscopables@1.0.2: es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.0 + es-to-primitive@1.2.1: es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 + esbuild-android-64@0.14.54: esbuild-android-64@0.14.54: optional: true + esbuild-android-arm64@0.14.54: esbuild-android-arm64@0.14.54: optional: true + esbuild-darwin-64@0.14.54: esbuild-darwin-64@0.14.54: optional: true + esbuild-darwin-arm64@0.14.54: esbuild-darwin-arm64@0.14.54: optional: true + esbuild-freebsd-64@0.14.54: esbuild-freebsd-64@0.14.54: optional: true + esbuild-freebsd-arm64@0.14.54: esbuild-freebsd-arm64@0.14.54: optional: true + esbuild-linux-32@0.14.54: esbuild-linux-32@0.14.54: optional: true + esbuild-linux-64@0.14.54: esbuild-linux-64@0.14.54: optional: true + esbuild-linux-arm64@0.14.54: esbuild-linux-arm64@0.14.54: optional: true + esbuild-linux-arm@0.14.54: esbuild-linux-arm@0.14.54: optional: true + esbuild-linux-mips64le@0.14.54: esbuild-linux-mips64le@0.14.54: optional: true + esbuild-linux-ppc64le@0.14.54: esbuild-linux-ppc64le@0.14.54: optional: true + esbuild-linux-riscv64@0.14.54: esbuild-linux-riscv64@0.14.54: optional: true + esbuild-linux-s390x@0.14.54: esbuild-linux-s390x@0.14.54: optional: true + esbuild-netbsd-64@0.14.54: esbuild-netbsd-64@0.14.54: optional: true + esbuild-openbsd-64@0.14.54: esbuild-openbsd-64@0.14.54: optional: true esbuild-plugin-alias@0.2.1: {} + esbuild-plugin-alias@0.2.1: {} + esbuild-register@3.5.0(esbuild@0.18.20): esbuild-register@3.5.0(esbuild@0.18.20): dependencies: debug: 4.3.4 @@ -12672,23 +13607,29 @@ snapshots: transitivePeerDependencies: - supports-color + esbuild-sass-plugin@2.2.6: esbuild-sass-plugin@2.2.6: dependencies: esbuild: 0.14.54 sass: 1.69.7 + esbuild-sunos-64@0.14.54: esbuild-sunos-64@0.14.54: optional: true + esbuild-windows-32@0.14.54: esbuild-windows-32@0.14.54: optional: true + esbuild-windows-64@0.14.54: esbuild-windows-64@0.14.54: optional: true + esbuild-windows-arm64@0.14.54: esbuild-windows-arm64@0.14.54: optional: true + esbuild@0.14.54: esbuild@0.14.54: optionalDependencies: '@esbuild/linux-loong64': 0.14.54 @@ -12713,6 +13654,7 @@ snapshots: esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 + esbuild@0.17.19: esbuild@0.17.19: optionalDependencies: '@esbuild/android-arm': 0.17.19 @@ -12738,6 +13680,7 @@ snapshots: '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 + esbuild@0.18.20: esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 @@ -12763,6 +13706,7 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + esbuild@0.19.11: esbuild@0.19.11: optionalDependencies: '@esbuild/aix-ppc64': 0.19.11 @@ -12790,17 +13734,24 @@ snapshots: '@esbuild/win32-x64': 0.19.11 escalade@3.1.1: {} + escalade@3.1.1: {} + escape-html@1.0.3: {} escape-html@1.0.3: {} + escape-string-regexp@1.0.5: {} escape-string-regexp@1.0.5: {} + escape-string-regexp@2.0.0: {} escape-string-regexp@2.0.0: {} + escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} escape-string-regexp@5.0.0: {} + escodegen@2.1.0: escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -12809,10 +13760,12 @@ snapshots: optionalDependencies: source-map: 0.6.1 + eslint-config-prettier@9.1.0(eslint@8.56.0): eslint-config-prettier@9.1.0(eslint@8.56.0): dependencies: eslint: 8.56.0 + eslint-plugin-storybook@0.6.15(eslint@8.56.0)(typescript@5.3.3): eslint-plugin-storybook@0.6.15(eslint@8.56.0)(typescript@5.3.3): dependencies: '@storybook/csf': 0.0.1 @@ -12824,18 +13777,22 @@ snapshots: - supports-color - typescript + eslint-scope@5.1.1: eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 + eslint-scope@7.2.2: eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} + eslint-visitor-keys@3.4.3: {} + eslint@8.56.0: eslint@8.56.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -12879,6 +13836,7 @@ snapshots: transitivePeerDependencies: - supports-color + espree@9.6.1: espree@9.6.1: dependencies: acorn: 8.11.3 @@ -12887,30 +13845,44 @@ snapshots: esprima@4.0.1: {} + esquery@1.5.0: + + esprima@4.0.1: {} + esquery@1.5.0: dependencies: estraverse: 5.3.0 + esrecurse@4.3.0: esrecurse@4.3.0: dependencies: estraverse: 5.3.0 estraverse@4.3.0: {} + estraverse@4.3.0: {} + estraverse@5.3.0: {} estraverse@5.3.0: {} + estree-walker@1.0.1: {} estree-walker@1.0.1: {} + estree-walker@2.0.2: {} estree-walker@2.0.2: {} + esutils@2.0.3: {} esutils@2.0.3: {} + etag@1.8.1: {} etag@1.8.1: {} + eventemitter3@5.0.1: {} eventemitter3@5.0.1: {} + events@1.1.1: {} events@1.1.1: {} + execa@5.1.1: execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -12923,6 +13895,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 + execa@7.2.0: execa@7.2.0: dependencies: cross-spawn: 7.0.3 @@ -12935,6 +13908,7 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 + execa@8.0.1: execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -12948,7 +13922,9 @@ snapshots: strip-final-newline: 3.0.0 exit@0.1.2: {} + exit@0.1.2: {} + expect@29.7.0: expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -12957,6 +13933,7 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 + express@4.18.2: express@4.18.2: dependencies: accepts: 1.3.8 @@ -12994,15 +13971,19 @@ snapshots: - supports-color extend@3.0.2: {} + extend@3.0.2: {} + extendable-error@0.1.7: {} extendable-error@0.1.7: {} + external-editor@3.1.0: external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 + extract-zip@1.7.0: extract-zip@1.7.0: dependencies: concat-stream: 1.6.2 @@ -13012,6 +13993,7 @@ snapshots: transitivePeerDependencies: - supports-color + extract-zip@2.0.1: extract-zip@2.0.1: dependencies: debug: 4.3.4 @@ -13023,9 +14005,12 @@ snapshots: - supports-color fast-deep-equal@3.1.3: {} + fast-deep-equal@3.1.3: {} + fast-fifo@1.3.2: {} fast-fifo@1.3.2: {} + fast-glob@3.3.2: fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -13035,42 +14020,54 @@ snapshots: micromatch: 4.0.5 fast-json-stable-stringify@2.1.0: {} + fast-json-stable-stringify@2.1.0: {} + fast-levenshtein@2.0.6: {} fast-levenshtein@2.0.6: {} + fastq@1.16.0: fastq@1.16.0: dependencies: reusify: 1.0.4 + fb-watchman@2.0.2: fb-watchman@2.0.2: dependencies: bser: 2.1.1 + fd-slicer@1.1.0: fd-slicer@1.1.0: dependencies: pend: 1.2.0 fetch-retry@5.0.6: {} + fetch-retry@5.0.6: {} + fflate@0.4.8: {} fflate@0.4.8: {} + file-entry-cache@6.0.1: file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 + file-system-cache@2.3.0: file-system-cache@2.3.0: dependencies: fs-extra: 11.1.1 ramda: 0.29.0 + filelist@1.0.4: filelist@1.0.4: dependencies: minimatch: 5.1.6 + fill-range@7.0.1: fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 + finalhandler@1.2.0: finalhandler@1.2.0: dependencies: debug: 2.6.9 @@ -13083,12 +14080,14 @@ snapshots: transitivePeerDependencies: - supports-color + find-cache-dir@2.1.0: find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 + find-cache-dir@3.3.2: find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -13096,30 +14095,37 @@ snapshots: pkg-dir: 4.2.0 find-free-port-sync@1.0.0: {} + find-free-port-sync@1.0.0: {} + find-replace@3.0.0: find-replace@3.0.0: dependencies: array-back: 3.1.0 + find-up@3.0.0: find-up@3.0.0: dependencies: locate-path: 3.0.0 + find-up@4.1.0: find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 + find-up@5.0.0: find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 + find-yarn-workspace-root2@1.2.16: find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 + flat-cache@3.2.0: flat-cache@3.2.0: dependencies: flatted: 3.2.9 @@ -13132,19 +14138,30 @@ snapshots: flow-parser@0.226.0: {} + follow-redirects@1.15.4(debug@4.3.4): + + flatpickr@4.6.13: {} + + flatted@3.2.9: {} + + flow-parser@0.226.0: {} + follow-redirects@1.15.4(debug@4.3.4): dependencies: debug: 4.3.4 + for-each@0.3.3: for-each@0.3.3: dependencies: is-callable: 1.2.7 + foreground-child@3.1.1: foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 + form-data@4.0.0: form-data@4.0.0: dependencies: asynckit: 0.4.0 @@ -13152,35 +14169,43 @@ snapshots: mime-types: 2.1.35 forwarded@0.2.0: {} + forwarded@0.2.0: {} + fresh@0.5.2: {} fresh@0.5.2: {} + fs-constants@1.0.0: {} fs-constants@1.0.0: {} + fs-extra@11.1.1: fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@11.2.0: fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 + fs-extra@7.0.1: fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + fs-extra@8.1.0: fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 + fs-extra@9.1.0: fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 @@ -13188,17 +14213,24 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 + fs-minipass@2.1.0: fs-minipass@2.1.0: dependencies: minipass: 3.3.6 fs.realpath@1.0.0: {} + fsevents@2.3.3: + + fs.realpath@1.0.0: {} + fsevents@2.3.3: optional: true function-bind@1.1.2: {} + function-bind@1.1.2: {} + function.prototype.name@1.1.6: function.prototype.name@1.1.6: dependencies: call-bind: 1.0.5 @@ -13207,11 +14239,15 @@ snapshots: functions-have-names: 1.2.3 functions-have-names@1.2.3: {} + functions-have-names@1.2.3: {} + gensync@1.0.0-beta.2: {} gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} get-caller-file@2.0.5: {} + get-intrinsic@1.2.2: get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 @@ -13223,6 +14259,8 @@ snapshots: get-npm-tarball-url@2.1.0: {} + get-own-enumerable-keys@1.0.0: {} + get-package-type@0.1.0: {} get-port@5.1.1: {} @@ -13232,14 +14270,18 @@ snapshots: pump: 3.0.0 get-stream@6.0.1: {} + get-stream@6.0.1: {} + get-stream@8.0.1: {} get-stream@8.0.1: {} + get-symbol-description@1.0.0: get-symbol-description@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 + get-uri@6.0.2: get-uri@6.0.2: dependencies: basic-ftp: 5.0.4 @@ -13249,6 +14291,7 @@ snapshots: transitivePeerDependencies: - supports-color + giget@1.2.1: giget@1.2.1: dependencies: citty: 0.1.5 @@ -13261,17 +14304,22 @@ snapshots: tar: 6.2.0 github-slugger@1.5.0: {} + github-slugger@1.5.0: {} + glob-parent@5.1.2: glob-parent@5.1.2: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: glob-parent@6.0.2: dependencies: is-glob: 4.0.3 glob-to-regexp@0.4.1: {} + glob-to-regexp@0.4.1: {} + glob@10.3.10: glob@10.3.10: dependencies: foreground-child: 3.1.1 @@ -13280,6 +14328,7 @@ snapshots: minipass: 7.0.4 path-scurry: 1.10.1 + glob@7.2.3: glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -13290,15 +14339,19 @@ snapshots: path-is-absolute: 1.0.1 globals@11.12.0: {} + globals@11.12.0: {} + globals@13.24.0: globals@13.24.0: dependencies: type-fest: 0.20.2 + globalthis@1.0.3: globalthis@1.0.3: dependencies: define-properties: 1.2.1 + globby@11.0.4: globby@11.0.4: dependencies: array-union: 2.1.0 @@ -13308,6 +14361,7 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + globby@11.1.0: globby@11.1.0: dependencies: array-union: 2.1.0 @@ -13317,6 +14371,7 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 + gm@1.25.0: gm@1.25.0: dependencies: array-parallel: 0.1.3 @@ -13326,18 +14381,24 @@ snapshots: transitivePeerDependencies: - supports-color + gopd@1.0.1: gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 graceful-fs@4.2.11: {} + graceful-fs@4.2.11: {} + grapheme-splitter@1.0.4: {} grapheme-splitter@1.0.4: {} + graphemer@1.4.0: {} graphemer@1.4.0: {} + gridstack@9.5.1: {} gridstack@9.5.1: {} + gunzip-maybe@1.4.2: gunzip-maybe@1.4.2: dependencies: browserify-zlib: 0.1.4 @@ -13347,6 +14408,7 @@ snapshots: pumpify: 1.5.1 through2: 2.0.5 + handlebars@4.7.8: handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -13357,44 +14419,58 @@ snapshots: uglify-js: 3.17.4 hard-rejection@2.1.0: {} + hard-rejection@2.1.0: {} + has-bigints@1.0.2: {} has-bigints@1.0.2: {} + has-flag@3.0.0: {} has-flag@3.0.0: {} + has-flag@4.0.0: {} has-flag@4.0.0: {} + has-property-descriptors@1.0.1: has-property-descriptors@1.0.1: dependencies: get-intrinsic: 1.2.2 has-proto@1.0.1: {} + has-proto@1.0.1: {} + has-symbols@1.0.3: {} has-symbols@1.0.3: {} + has-tostringtag@1.0.0: has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 + hasown@2.0.0: hasown@2.0.0: dependencies: function-bind: 1.1.2 hosted-git-info@2.8.9: {} + hosted-git-info@2.8.9: {} + html-escaper@2.0.2: {} html-escaper@2.0.2: {} + html2canvas@1.4.1: html2canvas@1.4.1: dependencies: css-line-break: 2.1.0 text-segmentation: 1.0.3 optional: true + http-assert@1.5.0: http-assert@1.5.0: dependencies: deep-equal: 1.0.1 http-errors: 1.8.1 + http-errors@1.6.3: http-errors@1.6.3: dependencies: depd: 1.1.2 @@ -13402,6 +14478,7 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 + http-errors@1.8.1: http-errors@1.8.1: dependencies: depd: 1.1.2 @@ -13410,6 +14487,7 @@ snapshots: statuses: 1.5.0 toidentifier: 1.0.1 + http-errors@2.0.0: http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -13418,6 +14496,7 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 + http-proxy-agent@7.0.0: http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 @@ -13425,6 +14504,7 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@4.0.0: https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 @@ -13432,6 +14512,7 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@5.0.1: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -13439,6 +14520,7 @@ snapshots: transitivePeerDependencies: - supports-color + https-proxy-agent@7.0.2: https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 @@ -13456,27 +14538,46 @@ snapshots: husky@8.0.3: {} + iconv-lite@0.4.24: + + human-id@1.0.2: {} + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + human-signals@5.0.0: {} + + husky@8.0.3: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.6.3: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 ieee754@1.1.13: {} + ieee754@1.1.13: {} + ieee754@1.2.1: {} ieee754@1.2.1: {} + ignore@5.3.0: {} ignore@5.3.0: {} + immutable@4.3.4: {} immutable@4.3.4: {} + import-fresh@3.3.0: import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 + import-jsx@4.0.1: import-jsx@4.0.1: dependencies: '@babel/core': 7.23.7 @@ -13491,17 +14592,22 @@ snapshots: transitivePeerDependencies: - supports-color + import-local@3.1.0: import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 imurmurhash@0.1.4: {} + imurmurhash@0.1.4: {} + indent-string@4.0.0: {} indent-string@4.0.0: {} + inflation@2.1.0: {} inflation@2.1.0: {} + inflight@1.0.6: inflight@1.0.6: dependencies: once: 1.4.0 @@ -13511,6 +14617,12 @@ snapshots: inherits@2.0.4: {} + ink@3.2.0(react@17.0.2): + + inherits@2.0.3: {} + + inherits@2.0.4: {} + ink@3.2.0(react@17.0.2): dependencies: ansi-escapes: 4.3.2 @@ -13541,6 +14653,7 @@ snapshots: - bufferutil - utf-8-validate + internal-slot@1.0.6: internal-slot@1.0.6: dependencies: get-intrinsic: 1.2.2 @@ -13548,26 +14661,35 @@ snapshots: side-channel: 1.0.4 internmap@2.0.3: {} + internmap@2.0.3: {} + interpret@1.4.0: {} interpret@1.4.0: {} + invariant@2.2.4: invariant@2.2.4: dependencies: loose-envify: 1.4.0 ip@1.1.8: {} + ip@1.1.8: {} + ip@2.0.0: {} ip@2.0.0: {} + ipaddr.js@1.9.1: {} ipaddr.js@1.9.1: {} + is-absolute-url@3.0.3: {} is-absolute-url@3.0.3: {} + is-arguments@1.1.1: is-arguments@1.1.1: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + is-array-buffer@3.0.2: is-array-buffer@3.0.2: dependencies: call-bind: 1.0.5 @@ -13575,36 +14697,46 @@ snapshots: is-typed-array: 1.1.12 is-arrayish@0.2.1: {} + is-arrayish@0.2.1: {} + is-bigint@1.0.4: is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 + is-binary-path@2.1.0: is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 + is-boolean-object@1.1.2: is-boolean-object@1.1.2: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 is-buffer@2.0.5: {} + is-buffer@2.0.5: {} + is-builtin-module@3.2.1: is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 is-callable@1.2.7: {} + is-callable@1.2.7: {} + is-ci@2.0.0: is-ci@2.0.0: dependencies: ci-info: 2.0.0 + is-core-module@2.13.1: is-core-module@2.13.1: dependencies: hasown: 2.0.0 + is-date-object@1.0.5: is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 @@ -13621,33 +14753,56 @@ snapshots: is-generator-fn@2.1.0: {} + is-generator-function@1.0.10: + + is-deflate@1.0.0: {} + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-generator-fn@2.1.0: {} + is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 + is-glob@4.0.3: is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-gzip@1.0.0: {} + is-gzip@1.0.0: {} + is-interactive@1.0.0: {} is-interactive@1.0.0: {} + is-module@1.0.0: {} is-module@1.0.0: {} + is-nan@1.3.2: is-nan@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 is-negative-zero@2.0.2: {} + is-negative-zero@2.0.2: {} + is-number-object@1.0.7: is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 is-number@7.0.0: {} + is-obj@3.0.0: {} + is-path-cwd@2.2.0: {} is-path-inside@3.0.3: {} @@ -13660,59 +14815,80 @@ snapshots: dependencies: isobject: 3.0.1 + is-regex@1.1.4: is-regex@1.1.4: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 + is-regexp@3.1.0: {} + + is-shared-array-buffer@1.0.2: is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.5 is-stream@2.0.1: {} + is-stream@2.0.1: {} + is-stream@3.0.0: {} is-stream@3.0.0: {} + is-string@1.0.7: is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 + is-subdir@1.2.0: is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 + is-symbol@1.0.4: is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 + is-typed-array@1.1.12: is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.13 is-unicode-supported@0.1.0: {} + is-unicode-supported@0.1.0: {} + is-weakref@1.0.2: is-weakref@1.0.2: dependencies: call-bind: 1.0.5 is-windows@1.0.2: {} + is-windows@1.0.2: {} + is-wsl@2.2.0: is-wsl@2.2.0: dependencies: is-docker: 2.2.1 isarray@1.0.0: {} + isarray@1.0.0: {} + isarray@2.0.5: {} isarray@2.0.5: {} + isbinaryfile@5.0.0: {} isbinaryfile@5.0.0: {} + isexe@2.0.0: {} isexe@2.0.0: {} + isobject@3.0.1: {} isobject@3.0.1: {} + istanbul-lib-coverage@3.2.2: {} istanbul-lib-coverage@3.2.2: {} + istanbul-lib-instrument@5.2.1: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.23.7 @@ -13723,6 +14899,7 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-lib-instrument@6.0.1: istanbul-lib-instrument@6.0.1: dependencies: '@babel/core': 7.23.7 @@ -13733,12 +14910,14 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-lib-report@3.0.1: istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 + istanbul-lib-source-maps@4.0.1: istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4 @@ -13747,17 +14926,20 @@ snapshots: transitivePeerDependencies: - supports-color + istanbul-reports@3.1.6: istanbul-reports@3.1.6: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 + jackspeak@2.3.6: jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jake@10.8.7: jake@10.8.7: dependencies: async: 3.2.5 @@ -13765,12 +14947,16 @@ snapshots: filelist: 1.0.4 minimatch: 3.1.2 + javascript-lp-solver@0.4.24: {} + + jest-changed-files@29.7.0: jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 + jest-circus@29.7.0: jest-circus@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -13797,6 +14983,7 @@ snapshots: - babel-plugin-macros - supports-color + jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2) @@ -13816,6 +15003,7 @@ snapshots: - supports-color - ts-node + jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): dependencies: '@babel/core': 7.23.7 @@ -13846,6 +15034,7 @@ snapshots: - babel-plugin-macros - supports-color + jest-diff@29.7.0: jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -13853,10 +15042,12 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-docblock@29.7.0: jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 + jest-each@29.7.0: jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -13865,6 +15056,7 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 + jest-environment-node@29.7.0: jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -13875,7 +15067,9 @@ snapshots: jest-util: 29.7.0 jest-get-type@29.6.3: {} + jest-get-type@29.6.3: {} + jest-haste-map@29.7.0: jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -13892,11 +15086,13 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + jest-leak-detector@29.7.0: jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-matcher-utils@29.7.0: jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 @@ -13904,6 +15100,7 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 + jest-message-util@29.7.0: jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.23.5 @@ -13916,18 +15113,22 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 + jest-mock@29.7.0: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 '@types/node': 18.19.6 jest-util: 29.7.0 + jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): dependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} + jest-regex-util@29.6.3: {} + jest-resolve-dependencies@29.7.0: jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -13935,6 +15136,7 @@ snapshots: transitivePeerDependencies: - supports-color + jest-resolve@29.7.0: jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -13947,6 +15149,7 @@ snapshots: resolve.exports: 2.0.2 slash: 3.0.0 + jest-runner@29.7.0: jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 @@ -13973,6 +15176,7 @@ snapshots: transitivePeerDependencies: - supports-color + jest-runtime@29.7.0: jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -14000,6 +15204,7 @@ snapshots: transitivePeerDependencies: - supports-color + jest-snapshot@29.7.0: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.23.7 @@ -14025,6 +15230,7 @@ snapshots: transitivePeerDependencies: - supports-color + jest-util@29.7.0: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -14034,6 +15240,7 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 + jest-validate@29.7.0: jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -14043,6 +15250,7 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 + jest-watcher@29.7.0: jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 @@ -14054,6 +15262,7 @@ snapshots: jest-util: 29.7.0 string-length: 4.0.2 + jest-worker@29.7.0: jest-worker@29.7.0: dependencies: '@types/node': 18.19.6 @@ -14061,6 +15270,7 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): dependencies: '@jest/core': 29.7.0(ts-node@10.9.2) @@ -14074,7 +15284,9 @@ snapshots: - ts-node jmespath@0.16.0: {} + jmespath@0.16.0: {} + joi@17.11.0: joi@17.11.0: dependencies: '@hapi/hoek': 9.3.0 @@ -14084,16 +15296,20 @@ snapshots: '@sideway/pinpoint': 2.0.0 js-tokens@4.0.0: {} + js-tokens@4.0.0: {} + js-yaml@3.14.1: js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.1.0: js-yaml@4.1.0: dependencies: argparse: 2.0.1 + jscodeshift@0.15.1(@babel/preset-env@7.23.8): jscodeshift@0.15.1(@babel/preset-env@7.23.8): dependencies: '@babel/core': 7.23.7 @@ -14134,16 +15350,34 @@ snapshots: json5@2.2.3: {} + jsonfile@4.0.0: + + jsesc@0.5.0: {} + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json5@2.2.3: {} + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 + jsonfile@6.1.0: jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 + jspdf@2.5.1: jspdf@2.5.1: dependencies: '@babel/runtime': 7.23.8 @@ -14156,31 +15390,40 @@ snapshots: dompurify: 2.4.7 html2canvas: 1.4.1 + keygrip@1.1.0: keygrip@1.1.0: dependencies: tsscmp: 1.0.6 + keyv@4.5.4: keyv@4.5.4: dependencies: json-buffer: 3.0.1 kind-of@6.0.3: {} + kind-of@6.0.3: {} + kleur@3.0.3: {} kleur@3.0.3: {} + kleur@4.1.5: {} kleur@4.1.5: {} + koa-compose@4.1.0: {} koa-compose@4.1.0: {} + koa-convert@2.0.0: koa-convert@2.0.0: dependencies: co: 4.6.0 koa-compose: 4.1.0 + koa-etag@4.0.0: koa-etag@4.0.0: dependencies: etag: 1.8.1 + koa-send@5.0.1: koa-send@5.0.1: dependencies: debug: 4.3.4 @@ -14189,6 +15432,7 @@ snapshots: transitivePeerDependencies: - supports-color + koa-static@5.0.0: koa-static@5.0.0: dependencies: debug: 3.2.7 @@ -14196,6 +15440,7 @@ snapshots: transitivePeerDependencies: - supports-color + koa@2.15.0: koa@2.15.0: dependencies: accepts: 1.3.8 @@ -14224,6 +15469,7 @@ snapshots: transitivePeerDependencies: - supports-color + lazy-universal-dotenv@4.0.0: lazy-universal-dotenv@4.0.0: dependencies: app-root-dir: 1.0.2 @@ -14231,12 +15477,15 @@ snapshots: dotenv-expand: 10.0.0 leven@3.1.0: {} + leven@3.1.0: {} + levn@0.4.1: levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 + lighthouse-logger@1.4.2: lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 @@ -14245,9 +15494,12 @@ snapshots: - supports-color lilconfig@2.1.0: {} + lilconfig@2.1.0: {} + lines-and-columns@1.2.4: {} lines-and-columns@1.2.4: {} + lint-staged@14.0.1: lint-staged@14.0.1: dependencies: chalk: 5.3.0 @@ -14264,6 +15516,7 @@ snapshots: - enquirer - supports-color + listr2@6.6.1: listr2@6.6.1: dependencies: cli-truncate: 3.1.0 @@ -14273,22 +15526,26 @@ snapshots: rfdc: 1.3.0 wrap-ansi: 8.1.0 + lit-element@4.0.3: lit-element@4.0.3: dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 '@lit/reactive-element': 2.0.3 lit-html: 3.1.1 + lit-html@3.1.1: lit-html@3.1.1: dependencies: '@types/trusted-types': 2.0.7 + lit@3.1.1: lit@3.1.1: dependencies: '@lit/reactive-element': 2.0.3 lit-element: 4.0.3 lit-html: 3.1.1 + load-yaml-file@0.2.0: load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 @@ -14296,40 +15553,53 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + locate-path@3.0.0: locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 + locate-path@5.0.0: locate-path@5.0.0: dependencies: p-locate: 4.1.0 + locate-path@6.0.0: locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash-es@4.17.21: {} + lodash-es@4.17.21: {} + lodash.assignwith@4.2.0: {} lodash.assignwith@4.2.0: {} + lodash.camelcase@4.3.0: {} lodash.camelcase@4.3.0: {} + lodash.debounce@4.0.8: {} lodash.debounce@4.0.8: {} + lodash.memoize@4.1.2: {} lodash.memoize@4.1.2: {} + lodash.merge@4.6.2: {} lodash.merge@4.6.2: {} + lodash.startcase@4.4.0: {} lodash.startcase@4.4.0: {} + lodash@4.17.21: {} lodash@4.17.21: {} + log-symbols@4.1.0: log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 + log-update@4.0.0: log-update@4.0.0: dependencies: ansi-escapes: 4.3.2 @@ -14337,6 +15607,7 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 + log-update@5.0.1: log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 @@ -14345,6 +15616,7 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 8.1.0 + loki@0.32.0: loki@0.32.0: dependencies: '@loki/integration-react': 0.32.0 @@ -14365,7 +15637,9 @@ snapshots: - utf-8-validate longest-streak@3.1.0: {} + longest-streak@3.1.0: {} + looks-same@4.1.0: looks-same@4.1.0: dependencies: color-diff: 1.4.0 @@ -14374,48 +15648,61 @@ snapshots: parse-color: 1.0.0 pngjs: 3.4.0 + loose-envify@1.4.0: loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 lru-cache@10.1.0: {} + lru-cache@10.1.0: {} + lru-cache@4.1.5: lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 + lru-cache@5.1.1: lru-cache@5.1.1: dependencies: yallist: 3.1.1 + lru-cache@6.0.0: lru-cache@6.0.0: dependencies: yallist: 4.0.0 lru-cache@7.18.3: {} + lru-cache@7.18.3: {} + lru-cache@8.0.5: {} lru-cache@8.0.5: {} + magic-string@0.30.5: magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 + make-dir@2.1.0: make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 + make-dir@3.1.0: make-dir@3.1.0: dependencies: semver: 6.3.1 + make-dir@4.0.0: make-dir@4.0.0: dependencies: semver: 7.5.4 make-error@1.3.6: {} + make-error@1.3.6: {} + makeerror@1.0.12: makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -14430,16 +15717,31 @@ snapshots: markdown-table@3.0.3: {} + markdown-to-jsx@7.4.0(react@18.2.0): + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + map-or-similar@1.5.0: {} + + mark.js@8.11.1: {} + + markdown-table@3.0.3: {} + markdown-to-jsx@7.4.0(react@18.2.0): dependencies: react: 18.2.0 marky@1.2.5: {} + marky@1.2.5: {} + mdast-util-definitions@4.0.0: mdast-util-definitions@4.0.0: dependencies: unist-util-visit: 2.0.3 + mdast-util-find-and-replace@2.2.2: mdast-util-find-and-replace@2.2.2: dependencies: '@types/mdast': 3.0.15 @@ -14447,6 +15749,7 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 + mdast-util-from-markdown@1.3.1: mdast-util-from-markdown@1.3.1: dependencies: '@types/mdast': 3.0.15 @@ -14464,6 +15767,7 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm-autolink-literal@1.0.3: mdast-util-gfm-autolink-literal@1.0.3: dependencies: '@types/mdast': 3.0.15 @@ -14471,17 +15775,20 @@ snapshots: mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 + mdast-util-gfm-footnote@1.0.2: mdast-util-gfm-footnote@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 + mdast-util-gfm-strikethrough@1.0.3: mdast-util-gfm-strikethrough@1.0.3: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm-table@1.0.7: mdast-util-gfm-table@1.0.7: dependencies: '@types/mdast': 3.0.15 @@ -14491,11 +15798,13 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-gfm-task-list-item@1.0.2: mdast-util-gfm-task-list-item@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 + mdast-util-gfm@2.0.2: mdast-util-gfm@2.0.2: dependencies: mdast-util-from-markdown: 1.3.1 @@ -14508,11 +15817,13 @@ snapshots: transitivePeerDependencies: - supports-color + mdast-util-phrasing@3.0.1: mdast-util-phrasing@3.0.1: dependencies: '@types/mdast': 3.0.15 unist-util-is: 5.2.1 + mdast-util-to-markdown@1.5.0: mdast-util-to-markdown@1.5.0: dependencies: '@types/mdast': 3.0.15 @@ -14525,17 +15836,22 @@ snapshots: zwitch: 2.0.4 mdast-util-to-string@1.1.0: {} + mdast-util-to-string@1.1.0: {} + mdast-util-to-string@3.2.0: mdast-util-to-string@3.2.0: dependencies: '@types/mdast': 3.0.15 media-typer@0.3.0: {} + media-typer@0.3.0: {} + memoizerific@1.11.3: memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 + meow@6.1.1: meow@6.1.1: dependencies: '@types/minimist': 1.2.5 @@ -14551,13 +15867,18 @@ snapshots: yargs-parser: 18.1.3 merge-descriptors@1.0.1: {} + merge-descriptors@1.0.1: {} + merge-stream@2.0.0: {} merge-stream@2.0.0: {} + merge2@1.4.1: {} merge2@1.4.1: {} + methods@1.1.2: {} methods@1.1.2: {} + micromark-core-commonmark@1.1.0: micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -14577,6 +15898,7 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-autolink-literal@1.0.5: micromark-extension-gfm-autolink-literal@1.0.5: dependencies: micromark-util-character: 1.2.0 @@ -14584,6 +15906,7 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-extension-gfm-footnote@1.1.2: micromark-extension-gfm-footnote@1.1.2: dependencies: micromark-core-commonmark: 1.1.0 @@ -14595,6 +15918,7 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-strikethrough@1.0.7: micromark-extension-gfm-strikethrough@1.0.7: dependencies: micromark-util-chunked: 1.1.0 @@ -14604,6 +15928,7 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-table@1.0.7: micromark-extension-gfm-table@1.0.7: dependencies: micromark-factory-space: 1.1.0 @@ -14612,10 +15937,12 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm-tagfilter@1.0.2: micromark-extension-gfm-tagfilter@1.0.2: dependencies: micromark-util-types: 1.1.0 + micromark-extension-gfm-task-list-item@1.0.5: micromark-extension-gfm-task-list-item@1.0.5: dependencies: micromark-factory-space: 1.1.0 @@ -14624,6 +15951,7 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-extension-gfm@2.0.3: micromark-extension-gfm@2.0.3: dependencies: micromark-extension-gfm-autolink-literal: 1.0.5 @@ -14635,12 +15963,14 @@ snapshots: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-destination@1.1.0: micromark-factory-destination@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-label@1.1.0: micromark-factory-label@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -14648,11 +15978,13 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 + micromark-factory-space@1.1.0: micromark-factory-space@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 + micromark-factory-title@1.1.0: micromark-factory-title@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -14660,6 +15992,7 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-factory-whitespace@1.1.0: micromark-factory-whitespace@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -14667,30 +16000,36 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-character@1.2.0: micromark-util-character@1.2.0: dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-chunked@1.1.0: micromark-util-chunked@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-classify-character@1.1.0: micromark-util-classify-character@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-combine-extensions@1.1.0: micromark-util-combine-extensions@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 + micromark-util-decode-numeric-character-reference@1.1.0: micromark-util-decode-numeric-character-reference@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-decode-string@1.1.0: micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -14699,23 +16038,29 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-encode@1.1.0: {} + micromark-util-encode@1.1.0: {} + micromark-util-html-tag-name@1.2.0: {} micromark-util-html-tag-name@1.2.0: {} + micromark-util-normalize-identifier@1.1.0: micromark-util-normalize-identifier@1.1.0: dependencies: micromark-util-symbol: 1.1.0 + micromark-util-resolve-all@1.1.0: micromark-util-resolve-all@1.1.0: dependencies: micromark-util-types: 1.1.0 + micromark-util-sanitize-uri@1.2.0: micromark-util-sanitize-uri@1.2.0: dependencies: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 + micromark-util-subtokenize@1.1.0: micromark-util-subtokenize@1.1.0: dependencies: micromark-util-chunked: 1.1.0 @@ -14724,9 +16069,12 @@ snapshots: uvu: 0.5.6 micromark-util-symbol@1.1.0: {} + micromark-util-symbol@1.1.0: {} + micromark-util-types@1.1.0: {} micromark-util-types@1.1.0: {} + micromark@3.2.0: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 @@ -14749,13 +16097,16 @@ snapshots: transitivePeerDependencies: - supports-color + micromatch@4.0.5: micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 mime-db@1.52.0: {} + mime-db@1.52.0: {} + mime-types@2.1.35: mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -14770,18 +16121,32 @@ snapshots: min-indent@1.0.1: {} + minimatch@3.1.2: + mime@1.6.0: {} + + mime@2.6.0: {} + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 + minimatch@5.1.6: minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 + minimatch@9.0.3: minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 + minimist-options@4.1.0: minimist-options@4.1.0: dependencies: arrify: 1.0.1 @@ -14789,26 +16154,35 @@ snapshots: kind-of: 6.0.3 minimist@1.2.8: {} + minimist@1.2.8: {} + minipass@3.3.6: minipass@3.3.6: dependencies: yallist: 4.0.0 minipass@5.0.0: {} + minipass@5.0.0: {} + minipass@7.0.4: {} minipass@7.0.4: {} + minizlib@2.1.2: minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 mitt@3.0.0: {} + mitt@3.0.0: {} + mixme@0.5.10: {} mixme@0.5.10: {} + mkdirp-classic@0.5.3: {} mkdirp-classic@0.5.3: {} + mkdirp@0.5.6: mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -14837,24 +16211,57 @@ snapshots: netmask@2.0.2: {} + node-dir@0.1.17: + + mkdirp@1.0.4: {} + + monaco-editor@0.38.0: {} + + mri@1.2.0: {} + + ms@2.0.0: {} + + ms@2.1.2: {} + + ms@2.1.3: {} + + nanocolors@0.2.13: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + negotiator@0.6.3: {} + + neo-async@2.6.2: {} + + netmask@2.0.2: {} + node-dir@0.1.17: dependencies: minimatch: 3.1.2 node-fetch-native@1.6.1: {} + node-fetch@2.6.7: + node-fetch-native@1.6.1: {} + node-fetch@2.6.7: dependencies: whatwg-url: 5.0.0 + node-fetch@2.7.0: node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 node-int64@0.4.0: {} + node-int64@0.4.0: {} + node-releases@2.0.14: {} node-releases@2.0.14: {} + normalize-package-data@2.5.0: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -14863,15 +16270,19 @@ snapshots: validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} + normalize-path@3.0.0: {} + npm-run-path@4.0.1: npm-run-path@4.0.1: dependencies: path-key: 3.1.1 + npm-run-path@5.2.0: npm-run-path@5.2.0: dependencies: path-key: 4.0.0 + nypm@0.3.4: nypm@0.3.4: dependencies: citty: 0.1.5 @@ -14880,16 +16291,21 @@ snapshots: ufo: 1.3.2 object-assign@4.1.1: {} + object-assign@4.1.1: {} + object-inspect@1.13.1: {} object-inspect@1.13.1: {} + object-is@1.1.5: object-is@1.1.5: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 object-keys@1.1.1: {} + object-keys@1.1.1: {} + object.assign@4.1.5: object.assign@4.1.5: dependencies: call-bind: 1.0.5 @@ -14898,33 +16314,42 @@ snapshots: object-keys: 1.1.1 ohash@1.1.3: {} + ohash@1.1.3: {} + on-finished@2.4.1: on-finished@2.4.1: dependencies: ee-first: 1.1.1 on-headers@1.0.2: {} + on-headers@1.0.2: {} + once@1.4.0: once@1.4.0: dependencies: wrappy: 1.0.2 + onetime@5.1.2: onetime@5.1.2: dependencies: mimic-fn: 2.1.0 + onetime@6.0.0: onetime@6.0.0: dependencies: mimic-fn: 4.0.0 only@0.0.2: {} + only@0.0.2: {} + open@8.4.2: open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 + optionator@0.9.3: optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -14934,6 +16359,7 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + ora@5.4.1: ora@5.4.1: dependencies: bl: 4.1.0 @@ -14947,41 +16373,53 @@ snapshots: wcwidth: 1.0.1 os-tmpdir@1.0.2: {} + os-tmpdir@1.0.2: {} + outdent@0.5.0: {} outdent@0.5.0: {} + p-filter@2.1.0: p-filter@2.1.0: dependencies: p-map: 2.1.0 + p-limit@2.3.0: p-limit@2.3.0: dependencies: p-try: 2.2.0 + p-limit@3.1.0: p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 + p-locate@3.0.0: p-locate@3.0.0: dependencies: p-limit: 2.3.0 + p-locate@4.1.0: p-locate@4.1.0: dependencies: p-limit: 2.3.0 + p-locate@5.0.0: p-locate@5.0.0: dependencies: p-limit: 3.1.0 p-map@2.1.0: {} + p-map@2.1.0: {} + p-map@4.0.0: p-map@4.0.0: dependencies: aggregate-error: 3.1.0 p-try@2.2.0: {} + p-try@2.2.0: {} + pac-proxy-agent@7.0.1: pac-proxy-agent@7.0.1: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -14995,6 +16433,7 @@ snapshots: transitivePeerDependencies: - supports-color + pac-resolver@7.0.0: pac-resolver@7.0.0: dependencies: degenerator: 5.0.1 @@ -15002,15 +16441,19 @@ snapshots: netmask: 2.0.2 pako@0.2.9: {} + pako@0.2.9: {} + parent-module@1.0.1: parent-module@1.0.1: dependencies: callsites: 3.1.0 + parse-color@1.0.0: parse-color@1.0.0: dependencies: color-convert: 0.5.3 + parse-json@5.2.0: parse-json@5.2.0: dependencies: '@babel/code-frame': 7.23.5 @@ -15019,34 +16462,48 @@ snapshots: lines-and-columns: 1.2.4 parse5@6.0.1: {} + parse5@6.0.1: {} + parseurl@1.3.3: {} parseurl@1.3.3: {} + patch-console@1.0.0: {} patch-console@1.0.0: {} + path-exists@3.0.0: {} path-exists@3.0.0: {} + path-exists@4.0.0: {} path-exists@4.0.0: {} + path-is-absolute@1.0.1: {} path-is-absolute@1.0.1: {} + path-key@3.1.1: {} path-key@3.1.1: {} + path-key@4.0.0: {} path-key@4.0.0: {} + path-parse@1.0.7: {} path-parse@1.0.7: {} + path-scurry@1.10.1: path-scurry@1.10.1: dependencies: lru-cache: 10.1.0 minipass: 7.0.4 path-to-regexp@0.1.7: {} + path-to-regexp@0.1.7: {} + path-type@4.0.0: {} path-type@4.0.0: {} + pathe@1.1.1: {} pathe@1.1.1: {} + peek-stream@1.1.3: peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 @@ -15054,7 +16511,9 @@ snapshots: through2: 2.0.5 pend@1.2.0: {} + pend@1.2.0: {} + performance-now@2.1.0: performance-now@2.1.0: optional: true @@ -15068,32 +16527,51 @@ snapshots: pirates@4.0.6: {} + pixelmatch@5.3.0: + picocolors@1.0.0: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@4.0.1: {} + + pirates@4.0.6: {} + pixelmatch@5.3.0: dependencies: pngjs: 6.0.0 + pkg-dir@3.0.0: pkg-dir@3.0.0: dependencies: find-up: 3.0.0 + pkg-dir@4.2.0: pkg-dir@4.2.0: dependencies: find-up: 4.1.0 + pkg-dir@5.0.0: pkg-dir@5.0.0: dependencies: find-up: 5.0.0 pngjs@3.4.0: {} + pngjs@3.4.0: {} + pngjs@4.0.1: {} pngjs@4.0.1: {} + pngjs@6.0.0: {} pngjs@6.0.0: {} + polished@4.2.2: polished@4.2.2: dependencies: '@babel/runtime': 7.23.8 + portfinder@1.0.32: portfinder@1.0.32: dependencies: async: 2.6.4 @@ -15102,12 +16580,14 @@ snapshots: transitivePeerDependencies: - supports-color + postcss@8.4.33: postcss@8.4.33: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + preferred-pm@3.1.2: preferred-pm@3.1.2: dependencies: find-up: 5.0.0 @@ -15123,6 +16603,16 @@ snapshots: prettier@3.0.3: {} + pretty-format@29.7.0: + + prelude-ls@1.2.1: {} + + prettier@2.6.2: {} + + prettier@2.8.8: {} + + prettier@3.0.3: {} + pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -15130,23 +16620,30 @@ snapshots: react-is: 18.2.0 pretty-hrtime@1.0.3: {} + pretty-hrtime@1.0.3: {} + process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {} + process@0.11.10: {} process@0.11.10: {} + progress@2.0.3: {} progress@2.0.3: {} + prompts@2.4.2: prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 + proxy-addr@2.0.7: proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-agent@6.3.0: proxy-agent@6.3.0: dependencies: agent-base: 7.1.0 @@ -15161,19 +16658,24 @@ snapshots: - supports-color proxy-from-env@1.1.0: {} + proxy-from-env@1.1.0: {} + pseudomap@1.0.2: {} pseudomap@1.0.2: {} + pump@2.0.1: pump@2.0.1: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + pump@3.0.0: pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 + pumpify@1.5.1: pumpify@1.5.1: dependencies: duplexify: 3.7.1 @@ -15181,9 +16683,12 @@ snapshots: pump: 2.0.1 punycode@1.3.2: {} + punycode@1.3.2: {} + punycode@2.3.1: {} punycode@2.3.1: {} + puppeteer-core@13.7.0: puppeteer-core@13.7.0: dependencies: cross-fetch: 3.1.5 @@ -15204,6 +16709,7 @@ snapshots: - supports-color - utf-8-validate + puppeteer-core@2.1.1: puppeteer-core@2.1.1: dependencies: '@types/mime-types': 2.1.4 @@ -15221,6 +16727,7 @@ snapshots: - supports-color - utf-8-validate + puppeteer-core@20.9.0(typescript@5.3.3): puppeteer-core@20.9.0(typescript@5.3.3): dependencies: '@puppeteer/browsers': 1.4.6(typescript@5.3.3) @@ -15237,15 +16744,20 @@ snapshots: - utf-8-validate pure-rand@6.0.4: {} + pure-rand@6.0.4: {} + qs@6.11.0: qs@6.11.0: dependencies: side-channel: 1.0.4 + qs@6.11.2: qs@6.11.2: dependencies: side-channel: 1.0.4 + quadprog@1.6.1: {} + querystring@0.2.0: {} queue-microtask@1.2.3: {} @@ -15260,11 +16772,15 @@ snapshots: optional: true ramda@0.27.2: {} + ramda@0.27.2: {} + ramda@0.29.0: {} ramda@0.29.0: {} + range-parser@1.2.1: {} range-parser@1.2.1: {} + raw-body@2.5.1: raw-body@2.5.1: dependencies: bytes: 3.1.2 @@ -15272,6 +16788,7 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + raw-body@2.5.2: raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -15279,11 +16796,13 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 + react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + react-devtools-core@4.28.5: react-devtools-core@4.28.5: dependencies: shell-quote: 1.8.1 @@ -15292,6 +16811,7 @@ snapshots: - bufferutil - utf-8-validate + react-dom@18.2.0(react@18.2.0): react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 @@ -15300,6 +16820,10 @@ snapshots: react-is@18.2.0: {} + react-reconciler@0.26.2(react@17.0.2): + + react-is@18.2.0: {} + react-reconciler@0.26.2(react@17.0.2): dependencies: loose-envify: 1.4.0 @@ -15307,12 +16831,14 @@ snapshots: react: 17.0.2 scheduler: 0.20.2 + react-remove-scroll-bar@2.3.4(react@18.2.0): react-remove-scroll-bar@2.3.4(react@18.2.0): dependencies: react: 18.2.0 react-style-singleton: 2.2.1(react@18.2.0) tslib: 2.6.2 + react-remove-scroll@2.5.5(react@18.2.0): react-remove-scroll@2.5.5(react@18.2.0): dependencies: react: 18.2.0 @@ -15322,6 +16848,7 @@ snapshots: use-callback-ref: 1.3.1(react@18.2.0) use-sidecar: 1.1.2(react@18.2.0) + react-style-singleton@2.2.1(react@18.2.0): react-style-singleton@2.2.1(react@18.2.0): dependencies: get-nonce: 1.0.1 @@ -15329,21 +16856,25 @@ snapshots: react: 18.2.0 tslib: 2.6.2 + react@17.0.2: react@17.0.2: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 + react@18.2.0: react@18.2.0: dependencies: loose-envify: 1.4.0 + read-pkg-up@7.0.1: read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 + read-pkg@5.2.0: read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -15351,6 +16882,7 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 + read-yaml-file@1.1.0: read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -15358,6 +16890,7 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@2.3.8: readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -15368,16 +16901,19 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readable-stream@3.6.2: readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@3.6.0: readdirp@3.6.0: dependencies: picomatch: 2.3.1 + recast@0.23.4: recast@0.23.4: dependencies: assert: 2.1.0 @@ -15386,38 +16922,48 @@ snapshots: source-map: 0.6.1 tslib: 2.6.2 + rechoir@0.6.2: rechoir@0.6.2: dependencies: resolve: 1.22.8 + redent@3.0.0: redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 reduce-flatten@2.0.0: {} + reduce-flatten@2.0.0: {} + regenerate-unicode-properties@10.1.1: regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 regenerate@1.4.2: {} + regenerate@1.4.2: {} + regenerator-runtime@0.13.11: regenerator-runtime@0.13.11: optional: true regenerator-runtime@0.14.1: {} + regenerator-runtime@0.14.1: {} + regenerator-transform@0.15.2: regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.23.8 + regexp.prototype.flags@1.5.1: regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 + regexpu-core@5.3.2: regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 @@ -15427,10 +16973,12 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 + regjsparser@0.9.1: regjsparser@0.9.1: dependencies: jsesc: 0.5.0 + remark-external-links@8.0.0: remark-external-links@8.0.0: dependencies: extend: 3.0.2 @@ -15439,6 +16987,7 @@ snapshots: space-separated-tokens: 1.1.5 unist-util-visit: 2.0.3 + remark-gfm@3.0.1: remark-gfm@3.0.1: dependencies: '@types/mdast': 3.0.15 @@ -15448,6 +16997,7 @@ snapshots: transitivePeerDependencies: - supports-color + remark-slug@6.1.0: remark-slug@6.1.0: dependencies: github-slugger: 1.5.0 @@ -15455,39 +17005,51 @@ snapshots: unist-util-visit: 2.0.3 require-directory@2.1.1: {} + require-directory@2.1.1: {} + require-main-filename@2.0.0: {} require-main-filename@2.0.0: {} + requireindex@1.2.0: {} requireindex@1.2.0: {} + resolve-cwd@3.0.0: resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 resolve-from@3.0.0: {} + resolve-from@3.0.0: {} + resolve-from@4.0.0: {} resolve-from@4.0.0: {} + resolve-from@5.0.0: {} resolve-from@5.0.0: {} + resolve-path@1.4.0: resolve-path@1.4.0: dependencies: http-errors: 1.6.3 path-is-absolute: 1.0.1 resolve.exports@2.0.2: {} + resolve.exports@2.0.2: {} + resolve@1.22.8: resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@3.1.0: restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 + restore-cursor@4.0.0: restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -15497,49 +17059,67 @@ snapshots: rfdc@1.3.0: {} + rgbcolor@1.0.1: + + reusify@1.0.4: {} + + rfdc@1.3.0: {} + rgbcolor@1.0.1: optional: true + rimraf@2.6.3: rimraf@2.6.3: dependencies: glob: 7.2.3 + rimraf@2.7.1: rimraf@2.7.1: dependencies: glob: 7.2.3 + rimraf@3.0.2: rimraf@3.0.2: dependencies: glob: 7.2.3 robust-predicates@3.0.2: {} + robust-predicates@3.0.2: {} + rollup@2.79.1: rollup@2.79.1: optionalDependencies: fsevents: 2.3.3 + rollup@3.29.4: rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 + run-parallel@1.2.0: run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 rw@1.3.3: {} + rw@1.3.3: {} + rxjs@6.6.7: rxjs@6.6.7: dependencies: tslib: 1.14.1 + rxjs@7.8.1: rxjs@7.8.1: dependencies: tslib: 2.6.2 + sade@1.8.1: sade@1.8.1: dependencies: mri: 1.2.0 + safe-array-concat@1.0.1: safe-array-concat@1.0.1: dependencies: call-bind: 1.0.5 @@ -15548,9 +17128,12 @@ snapshots: isarray: 2.0.5 safe-buffer@5.1.2: {} + safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} safe-buffer@5.2.1: {} + safe-regex-test@1.0.1: safe-regex-test@1.0.1: dependencies: call-bind: 1.0.5 @@ -15558,7 +17141,9 @@ snapshots: is-regex: 1.1.4 safer-buffer@2.1.2: {} + safer-buffer@2.1.2: {} + sass@1.69.7: sass@1.69.7: dependencies: chokidar: 3.5.3 @@ -15566,24 +17151,31 @@ snapshots: source-map-js: 1.0.2 sax@1.2.1: {} + sax@1.2.1: {} + scheduler@0.20.2: scheduler@0.20.2: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 + scheduler@0.23.0: scheduler@0.23.0: dependencies: loose-envify: 1.4.0 semver@5.7.2: {} + semver@5.7.2: {} + semver@6.3.1: {} semver@6.3.1: {} + semver@7.5.4: semver@7.5.4: dependencies: lru-cache: 6.0.0 + send@0.18.0: send@0.18.0: dependencies: debug: 2.6.9 @@ -15602,6 +17194,7 @@ snapshots: transitivePeerDependencies: - supports-color + serve-static@1.15.0: serve-static@1.15.0: dependencies: encodeurl: 1.0.2 @@ -15612,7 +17205,9 @@ snapshots: - supports-color set-blocking@2.0.0: {} + set-blocking@2.0.0: {} + set-function-length@1.1.1: set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 @@ -15620,6 +17215,7 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.1 + set-function-name@2.0.1: set-function-name@2.0.1: dependencies: define-data-property: 1.1.1 @@ -15627,37 +17223,48 @@ snapshots: has-property-descriptors: 1.0.1 setprototypeof@1.1.0: {} + setprototypeof@1.1.0: {} + setprototypeof@1.2.0: {} setprototypeof@1.2.0: {} + shallow-clone@3.0.1: shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 + shebang-command@1.2.0: shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 + shebang-command@2.0.0: shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@1.0.0: {} + shebang-regex@1.0.0: {} + shebang-regex@3.0.0: {} shebang-regex@3.0.0: {} + shell-quote@1.8.1: {} shell-quote@1.8.1: {} + shelljs@0.8.5: shelljs@0.8.5: dependencies: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 + showdown@2.1.0: showdown@2.1.0: dependencies: commander: 9.5.0 + side-channel@1.0.4: side-channel@1.0.4: dependencies: call-bind: 1.0.5 @@ -15665,36 +17272,46 @@ snapshots: object-inspect: 1.13.1 signal-exit@3.0.7: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} signal-exit@4.1.0: {} + simple-update-notifier@2.0.0: simple-update-notifier@2.0.0: dependencies: semver: 7.5.4 sisteransi@1.0.5: {} + sisteransi@1.0.5: {} + slash@3.0.0: {} slash@3.0.0: {} + slice-ansi@3.0.0: slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + slice-ansi@4.0.0: slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 + slice-ansi@5.0.0: slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 smart-buffer@4.2.0: {} + smart-buffer@4.2.0: {} + smartwrap@2.0.2: smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.2 @@ -15704,6 +17321,7 @@ snapshots: wcwidth: 1.0.1 yargs: 15.4.1 + socks-proxy-agent@8.0.2: socks-proxy-agent@8.0.2: dependencies: agent-base: 7.1.0 @@ -15712,65 +17330,85 @@ snapshots: transitivePeerDependencies: - supports-color + socks@2.7.1: socks@2.7.1: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 source-map-js@1.0.2: {} + source-map-js@1.0.2: {} + source-map-support@0.5.13: source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 + source-map-support@0.5.21: source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 source-map@0.6.1: {} + source-map@0.6.1: {} + source-map@0.7.4: {} source-map@0.7.4: {} + space-separated-tokens@1.1.5: {} space-separated-tokens@1.1.5: {} + spawn-command@0.0.2: {} spawn-command@0.0.2: {} + spawndamnit@2.0.0: spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 + spdx-correct@3.2.0: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.16 spdx-exceptions@2.3.0: {} + spdx-exceptions@2.3.0: {} + spdx-expression-parse@3.0.1: spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.16 spdx-license-ids@3.0.16: {} + spdx-license-ids@3.0.16: {} + sprintf-js@1.0.3: {} sprintf-js@1.0.3: {} + stack-utils@2.0.6: stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 + stackblur-canvas@2.6.0: stackblur-canvas@2.6.0: optional: true statuses@1.5.0: {} + statuses@1.5.0: {} + statuses@2.0.1: {} statuses@2.0.1: {} + store2@2.14.2: {} store2@2.14.2: {} + storybook@7.6.7: storybook@7.6.7: dependencies: '@storybook/cli': 7.6.7 @@ -15781,115 +17419,138 @@ snapshots: - utf-8-validate stream-read-all@3.0.1: {} + stream-read-all@3.0.1: {} + stream-shift@1.0.1: {} stream-shift@1.0.1: {} + stream-transform@2.1.3: stream-transform@2.1.3: dependencies: mixme: 0.5.10 + streamx@2.15.6: streamx@2.15.6: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 string-argv@0.3.2: {} + string-argv@0.3.2: {} + string-length@4.0.2: string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 + string-width@4.2.3: string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 + string.prototype.trim@1.2.8: string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + string.prototype.trimend@1.0.7: string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + string.prototype.trimstart@1.0.7: string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 + string_decoder@1.1.1: string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 + string_decoder@1.3.0: string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 - /stringify-object@5.0.0: - resolution: {integrity: sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==} - engines: {node: '>=14.16'} + stringify-object@5.0.0: dependencies: get-own-enumerable-keys: 1.0.0 is-obj: 3.0.0 is-regexp: 3.1.0 - dev: false - /strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 + strip-ansi@7.1.0: strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 strip-bom@3.0.0: {} + strip-bom@3.0.0: {} + strip-bom@4.0.0: {} strip-bom@4.0.0: {} + strip-final-newline@2.0.0: {} strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-final-newline@3.0.0: {} + strip-indent@3.0.0: strip-indent@3.0.0: dependencies: min-indent: 1.0.1 strip-json-comments@3.1.1: {} + strip-json-comments@3.1.1: {} + supports-color@5.5.0: supports-color@5.5.0: dependencies: has-flag: 3.0.0 + supports-color@7.2.0: supports-color@7.2.0: dependencies: has-flag: 4.0.0 + supports-color@8.1.1: supports-color@8.1.1: dependencies: has-flag: 4.0.0 supports-preserve-symlinks-flag@1.0.0: {} + svg-pathdata@6.0.3: + supports-preserve-symlinks-flag@1.0.0: {} + svg-pathdata@6.0.3: optional: true synchronous-promise@2.0.17: {} + synchronous-promise@2.0.17: {} + table-layout@1.0.2: table-layout@1.0.2: dependencies: array-back: 4.0.2 @@ -15897,6 +17558,7 @@ snapshots: typical: 5.2.0 wordwrapjs: 4.0.1 + table-layout@3.0.2: table-layout@3.0.2: dependencies: '@75lb/deep-merge': 1.1.1 @@ -15907,6 +17569,7 @@ snapshots: typical: 7.1.1 wordwrapjs: 5.1.0 + tar-fs@2.1.1: tar-fs@2.1.1: dependencies: chownr: 1.1.4 @@ -15914,12 +17577,14 @@ snapshots: pump: 3.0.0 tar-stream: 2.2.0 + tar-fs@3.0.4: tar-fs@3.0.4: dependencies: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 3.1.6 + tar-stream@2.2.0: tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -15928,12 +17593,14 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 + tar-stream@3.1.6: tar-stream@3.1.6: dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 streamx: 2.15.6 + tar@6.2.0: tar@6.2.0: dependencies: chownr: 2.0.0 @@ -15943,21 +17610,26 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + telejson@7.2.0: telejson@7.2.0: dependencies: memoizerific: 1.11.3 temp-dir@2.0.0: {} + temp-dir@2.0.0: {} + temp@0.8.4: temp@0.8.4: dependencies: rimraf: 2.6.3 + tempfile@3.0.0: tempfile@3.0.0: dependencies: temp-dir: 2.0.0 uuid: 3.4.0 + tempy@1.0.1: tempy@1.0.1: dependencies: del: 6.1.1 @@ -15967,51 +17639,67 @@ snapshots: unique-string: 2.0.0 term-size@2.2.1: {} + term-size@2.2.1: {} + test-exclude@6.0.0: test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 + text-segmentation@1.0.3: text-segmentation@1.0.3: dependencies: utrie: 1.0.2 optional: true text-table@0.2.0: {} + text-table@0.2.0: {} + through2@2.0.5: through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 through@2.3.8: {} + through@2.3.8: {} + tiny-invariant@1.3.1: {} tiny-invariant@1.3.1: {} + tmp@0.0.33: tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 tmpl@1.0.5: {} + tmpl@1.0.5: {} + to-fast-properties@2.0.0: {} to-fast-properties@2.0.0: {} + to-regex-range@5.0.1: to-regex-range@5.0.1: dependencies: is-number: 7.0.0 tocbot@4.25.0: {} + tocbot@4.25.0: {} + toidentifier@1.0.1: {} toidentifier@1.0.1: {} + tr46@0.0.3: {} tr46@0.0.3: {} + tr46@3.0.0: tr46@3.0.0: dependencies: punycode: 2.3.1 + transliteration@2.3.5: transliteration@2.3.5: dependencies: yargs: 17.7.2 @@ -16022,12 +17710,24 @@ snapshots: trough@2.1.0: {} + ts-api-utils@1.0.3(typescript@5.3.3): + + tree-kill@1.2.2: {} + + trim-newlines@3.0.1: {} + + trough@2.1.0: {} + ts-api-utils@1.0.3(typescript@5.3.3): dependencies: typescript: 5.3.3 ts-dedent@2.2.0: {} + ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3): + + ts-dedent@2.2.0: {} + ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3): dependencies: '@babel/core': 7.23.7 @@ -16043,6 +17743,7 @@ snapshots: typescript: 5.3.3 yargs-parser: 21.1.1 + ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3): ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -16069,11 +17770,21 @@ snapshots: tsscmp@1.0.6: {} + tsutils@3.21.0(typescript@5.3.3): + ts-simple-type@2.0.0-next.0: {} + + tslib@1.14.1: {} + + tslib@2.6.2: {} + + tsscmp@1.0.6: {} + tsutils@3.21.0(typescript@5.3.3): dependencies: tslib: 1.14.1 typescript: 5.3.3 + tty-table@4.2.3: tty-table@4.2.3: dependencies: chalk: 4.1.2 @@ -16084,41 +17795,55 @@ snapshots: wcwidth: 1.0.1 yargs: 17.7.2 + type-check@0.4.0: type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-detect@4.0.8: {} + type-detect@4.0.8: {} + type-fest@0.12.0: {} type-fest@0.12.0: {} + type-fest@0.13.1: {} type-fest@0.13.1: {} + type-fest@0.16.0: {} type-fest@0.16.0: {} + type-fest@0.20.2: {} type-fest@0.20.2: {} + type-fest@0.21.3: {} type-fest@0.21.3: {} + type-fest@0.6.0: {} type-fest@0.6.0: {} + type-fest@0.8.1: {} type-fest@0.8.1: {} + type-fest@1.4.0: {} type-fest@1.4.0: {} + type-fest@2.19.0: {} type-fest@2.19.0: {} + type-is@1.6.18: type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 + typed-array-buffer@1.0.0: typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 + typed-array-byte-length@1.0.0: typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.5 @@ -16126,6 +17851,7 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-byte-offset@1.0.0: typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 @@ -16134,6 +17860,7 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 + typed-array-length@1.0.4: typed-array-length@1.0.4: dependencies: call-bind: 1.0.5 @@ -16158,9 +17885,30 @@ snapshots: ufo@1.3.2: {} + uglify-js@3.17.4: + + typedarray@0.0.6: {} + + typescript@4.3.5: {} + + typescript@5.2.2: {} + + typescript@5.3.3: {} + + typical@4.0.0: {} + + typical@5.2.0: {} + + typical@7.1.1: {} + + ua-parser-js@1.0.37: {} + + ufo@1.3.2: {} + uglify-js@3.17.4: optional: true + unbox-primitive@1.0.2: unbox-primitive@1.0.2: dependencies: call-bind: 1.0.5 @@ -16168,24 +17916,31 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 + unbzip2-stream@1.4.3: unbzip2-stream@1.4.3: dependencies: buffer: 5.7.1 through: 2.3.8 undici-types@5.26.5: {} + undici-types@5.26.5: {} + unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-match-property-ecmascript@2.0.0: unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 unicode-match-property-value-ecmascript@2.1.0: {} + unicode-match-property-value-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.1.0: {} unicode-property-aliases-ecmascript@2.1.0: {} + unified@10.1.2: unified@10.1.2: dependencies: '@types/unist': 2.0.10 @@ -16196,36 +17951,44 @@ snapshots: trough: 2.1.0 vfile: 5.3.7 + unique-string@2.0.0: unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 unist-util-is@4.1.0: {} + unist-util-is@4.1.0: {} + unist-util-is@5.2.1: unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.10 + unist-util-stringify-position@3.0.3: unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.10 + unist-util-visit-parents@3.1.1: unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 + unist-util-visit-parents@5.1.3: unist-util-visit-parents@5.1.3: dependencies: '@types/unist': 2.0.10 unist-util-is: 5.2.1 + unist-util-visit@2.0.3: unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 + unist-util-visit@4.1.2: unist-util-visit@4.1.2: dependencies: '@types/unist': 2.0.10 @@ -16233,11 +17996,15 @@ snapshots: unist-util-visit-parents: 5.1.3 universalify@0.1.2: {} + universalify@0.1.2: {} + universalify@2.0.1: {} universalify@2.0.1: {} + unpipe@1.0.0: {} unpipe@1.0.0: {} + unplugin@1.6.0: unplugin@1.6.0: dependencies: acorn: 8.11.3 @@ -16247,32 +18014,41 @@ snapshots: untildify@4.0.0: {} + update-browserslist-db@1.0.13(browserslist@4.22.2): + + untildify@4.0.0: {} + update-browserslist-db@1.0.13(browserslist@4.22.2): dependencies: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 + uri-js@4.4.1: uri-js@4.4.1: dependencies: punycode: 2.3.1 + url@0.10.3: url@0.10.3: dependencies: punycode: 1.3.2 querystring: 0.2.0 + use-callback-ref@1.3.1(react@18.2.0): use-callback-ref@1.3.1(react@18.2.0): dependencies: react: 18.2.0 tslib: 2.6.2 + use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): dependencies: '@juggle/resize-observer': 3.4.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + use-sidecar@1.1.2(react@18.2.0): use-sidecar@1.1.2(react@18.2.0): dependencies: detect-node-es: 1.1.0 @@ -16280,7 +18056,9 @@ snapshots: tslib: 2.6.2 util-deprecate@1.0.2: {} + util-deprecate@1.0.2: {} + util@0.12.5: util@0.12.5: dependencies: inherits: 2.0.4 @@ -16290,7 +18068,9 @@ snapshots: which-typed-array: 1.1.13 utils-merge@1.0.1: {} + utils-merge@1.0.1: {} + utrie@1.0.2: utrie@1.0.2: dependencies: base64-arraybuffer: 1.0.2 @@ -16302,6 +18082,13 @@ snapshots: uuid@9.0.1: {} + uvu@0.5.6: + uuid@3.4.0: {} + + uuid@8.0.0: {} + + uuid@9.0.1: {} + uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -16310,13 +18097,16 @@ snapshots: sade: 1.8.1 v8-compile-cache-lib@3.0.1: {} + v8-compile-cache-lib@3.0.1: {} + v8-to-istanbul@8.1.1: v8-to-istanbul@8.1.1: dependencies: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 1.9.0 source-map: 0.7.4 + v8-to-istanbul@9.2.0: v8-to-istanbul@9.2.0: dependencies: '@jridgewell/trace-mapping': 0.3.20 @@ -16324,21 +18114,27 @@ snapshots: convert-source-map: 2.0.0 validate-color@2.2.4: {} + validate-color@2.2.4: {} + validate-npm-package-license@3.0.4: validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 vanilla-colorful@0.7.2: {} + vanilla-colorful@0.7.2: {} + vary@1.1.2: {} vary@1.1.2: {} + vfile-message@3.1.4: vfile-message@3.1.4: dependencies: '@types/unist': 2.0.10 unist-util-stringify-position: 3.0.3 + vfile@5.3.7: vfile@5.3.7: dependencies: '@types/unist': 2.0.10 @@ -16346,6 +18142,7 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 + vite@4.5.1(sass@1.69.7): vite@4.5.1(sass@1.69.7): dependencies: esbuild: 0.18.20 @@ -16356,7 +18153,9 @@ snapshots: fsevents: 2.3.3 vue@2.6.14: {} + vue@2.6.14: {} + wait-on@5.3.0(debug@4.3.4): wait-on@5.3.0(debug@4.3.4): dependencies: axios: 0.21.4(debug@4.3.4) @@ -16367,19 +18166,23 @@ snapshots: transitivePeerDependencies: - debug + walker@1.0.8: walker@1.0.8: dependencies: makeerror: 1.0.12 + watchpack@2.4.0: watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 + wcwidth@1.0.1: wcwidth@1.0.1: dependencies: defaults: 1.0.4 + web-component-analyzer@2.0.0: web-component-analyzer@2.0.0: dependencies: fast-glob: 3.3.2 @@ -16388,23 +18191,30 @@ snapshots: yargs: 17.7.2 webidl-conversions@3.0.1: {} + webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} webidl-conversions@7.0.0: {} + webpack-sources@3.2.3: {} webpack-sources@3.2.3: {} + webpack-virtual-modules@0.6.1: {} webpack-virtual-modules@0.6.1: {} + whatwg-url@11.0.0: whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 + whatwg-url@5.0.0: whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 + which-boxed-primitive@1.0.2: which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -16414,12 +18224,15 @@ snapshots: is-symbol: 1.0.4 which-module@2.0.1: {} + which-module@2.0.1: {} + which-pm@2.0.0: which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 + which-typed-array@1.1.13: which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 @@ -16428,43 +18241,53 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.0 + which@1.3.1: which@1.3.1: dependencies: isexe: 2.0.0 + which@2.0.2: which@2.0.2: dependencies: isexe: 2.0.0 + which@3.0.1: which@3.0.1: dependencies: isexe: 2.0.0 + widest-line@3.1.0: widest-line@3.1.0: dependencies: string-width: 4.2.3 wordwrap@1.0.0: {} + wordwrap@1.0.0: {} + wordwrapjs@4.0.1: wordwrapjs@4.0.1: dependencies: reduce-flatten: 2.0.0 typical: 5.2.0 wordwrapjs@5.1.0: {} + wordwrapjs@5.1.0: {} + wrap-ansi@6.2.0: wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@7.0.0: wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 @@ -16472,18 +18295,22 @@ snapshots: strip-ansi: 7.1.0 wrappy@1.0.2: {} + wrappy@1.0.2: {} + write-file-atomic@2.4.3: write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 + write-file-atomic@4.0.2: write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 + ws@6.2.2: ws@6.2.2: dependencies: async-limiter: 1.0.1 @@ -16496,36 +18323,58 @@ snapshots: ws@8.5.0: {} + xml2js@0.5.0: + + ws@7.5.9: {} + + ws@8.13.0: {} + + ws@8.16.0: {} + + ws@8.5.0: {} + xml2js@0.5.0: dependencies: sax: 1.2.1 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} + xmlbuilder@11.0.1: {} + xtend@4.0.2: {} xtend@4.0.2: {} + y18n@4.0.3: {} y18n@4.0.3: {} + y18n@5.0.8: {} y18n@5.0.8: {} + yallist@2.1.2: {} yallist@2.1.2: {} + yallist@3.1.1: {} yallist@3.1.1: {} + yallist@4.0.0: {} yallist@4.0.0: {} + yaml@1.10.2: {} yaml@1.10.2: {} + yaml@2.3.1: {} yaml@2.3.1: {} + yargs-parser@18.1.3: yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 yargs-parser@21.1.1: {} + yargs-parser@21.1.1: {} + yargs@15.4.1: yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -16540,6 +18389,7 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 + yargs@17.7.1: yargs@17.7.1: dependencies: cliui: 8.0.1 @@ -16550,6 +18400,7 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@17.7.2: yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -16560,19 +18411,25 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yauzl@2.10.0: yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 ylru@1.3.2: {} + ylru@1.3.2: {} + yn@3.1.1: {} yn@3.1.1: {} + yocto-queue@0.1.0: {} yocto-queue@0.1.0: {} + yoga-layout-prebuilt@1.10.0: yoga-layout-prebuilt@1.10.0: dependencies: '@types/yoga-layout': 1.9.2 zwitch@2.0.4: {} + zwitch@2.0.4: {} diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts index 7fb378178..8a151e9bf 100644 --- a/stories/flow-lineage/f-dag.stories.ts +++ b/stories/flow-lineage/f-dag.stories.ts @@ -7,9 +7,9 @@ export default { export const Basic = { render: () => { - return html` - + `; } From 338eade5103f88b2a8c141ce89b9b1b699293741 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 29 May 2024 17:44:38 +0530 Subject: [PATCH 10/64] f-dag-app droping node inside group and moving --- .../src/components/f-dag/f-dag.ts | 108 ++++++++++++------ 1 file changed, 73 insertions(+), 35 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 400cd369f..94e206311 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -34,49 +34,61 @@ export class FDag extends FRoot { svgElement: Ref = createRef(); currentLine?: d3.Selection; + moveElement(nodeElement: HTMLElement, event: MouseEvent) { + let translateX = nodeElement.dataset.lastTranslateX + ? +nodeElement.dataset.lastTranslateX + : undefined; + let translateY = nodeElement.dataset.lastTranslateY + ? +nodeElement.dataset.lastTranslateY + : undefined; + if (!translateX || !translateY) { + const translate = getTranslateValues(nodeElement); + translateX = translate.translateX; + translateY = translate.translateY; + } + + nodeElement.style.setProperty( + "transform", + `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` + ); + nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; + nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; + const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); + + fromLines + .attr("x1", function () { + return +d3.select(this).attr("x1") + event.movementX; + }) + .attr("y1", function () { + return +d3.select(this).attr("y1") + event.movementY; + }); + + const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); + + toLines + .attr("x2", function () { + return +d3.select(this).attr("x2") + event.movementX; + }) + .attr("y2", function () { + return +d3.select(this).attr("y2") + event.movementY; + }); + } dragNode(event: MouseEvent) { event.stopPropagation(); if (event.buttons === 1 && this.currentLine === undefined) { const nodeElement = event.currentTarget as HTMLElement; nodeElement.style.zIndex = `3`; if (nodeElement) { - let translateX = nodeElement.dataset.lastTranslateX - ? +nodeElement.dataset.lastTranslateX - : undefined; - let translateY = nodeElement.dataset.lastTranslateY - ? +nodeElement.dataset.lastTranslateY - : undefined; - if (!translateX || !translateY) { - const translate = getTranslateValues(nodeElement); - translateX = translate.translateX; - translateY = translate.translateY; - } + this.moveElement(nodeElement, event); - nodeElement.style.setProperty( - "transform", - `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` - ); - nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; - nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; - const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); - - fromLines - .attr("x1", function () { - return +d3.select(this).attr("x1") + event.movementX; - }) - .attr("y1", function () { - return +d3.select(this).attr("y1") + event.movementY; - }); - - const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); - - toLines - .attr("x2", function () { - return +d3.select(this).attr("x2") + event.movementX; - }) - .attr("y2", function () { - return +d3.select(this).attr("y2") + event.movementY; + if (nodeElement.dataset.nodeType === "group") { + const groupNodes = this.querySelectorAll( + `[data-group="${nodeElement.getAttribute("id")}"]` + ); + groupNodes.forEach(gn => { + this.moveElement(gn, event); }); + } } } } @@ -137,11 +149,37 @@ export class FDag extends FRoot { nodeMouseUp(event: MouseEvent) { const nodeElement = event.currentTarget as HTMLElement; + const { + top: nodeTop, + height: nodeHeight, + left: nodeLeft, + width: nodeWidth + } = nodeElement.getBoundingClientRect(); if (nodeElement.dataset.nodeType === "group") { nodeElement.style.zIndex = `1`; } else { nodeElement.style.zIndex = `2`; } + + const allGroups = this.querySelectorAll(`[data-node-type="group"]`); + let insideGroup = false; + for (let index = 0; index < allGroups.length; index++) { + const group = allGroups.item(index); + const { top, height, left, width } = group.getBoundingClientRect(); + if ( + nodeTop > top && + nodeLeft > left && + nodeTop + nodeHeight < top + height && + nodeLeft + nodeWidth < left + width + ) { + insideGroup = true; + nodeElement.dataset.group = group.getAttribute("id")!; + } + } + + if (!insideGroup) { + delete nodeElement.dataset.group; + } } render() { From e82863fcfe0fac08a5aa36173a1f22377e07d28c Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 30 May 2024 15:03:24 +0530 Subject: [PATCH 11/64] f-dag-app node drag and link conneciton bug solved --- .../src/components/f-dag/f-dag.ts | 86 +++++++++---------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 94e206311..228fd7f69 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -5,6 +5,7 @@ import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; +import { queryAll } from "lit/decorators.js"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent @@ -26,6 +27,9 @@ export class FDag extends FRoot { */ static styles = [unsafeCSS(globalStyle)]; + @queryAll(`[data-node-type="group"],[data-group]`) + allGroups?: HTMLElement[]; + createRenderRoot() { return this; } @@ -93,8 +97,11 @@ export class FDag extends FRoot { } } - plotLine(event: MouseEvent) { + startPlottingLine(event: MouseEvent) { event.stopPropagation(); + this.allGroups?.forEach(n => { + n.style.pointerEvents = "none"; + }); const circle = event.currentTarget as HTMLElement; const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); @@ -109,23 +116,13 @@ export class FDag extends FRoot { .attr("y2", event.clientY - dagRect.top) .attr("stroke", "var(--color-primary-default)"); } - checkMouseMove(event: MouseEvent) { + updateLinePath(event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { const dagRect = this.getBoundingClientRect(); - const allGroups = this.querySelectorAll(`[data-node-type="group"]`); - - allGroups.forEach(n => { - n.style.pointerEvents = "none"; - }); this.currentLine .attr("x2", event.clientX - dagRect.left) .attr("y2", event.clientY - dagRect.top); } else { - const allGroups = this.querySelectorAll(`[data-node-type="group"]`); - - allGroups.forEach(n => { - n.style.pointerEvents = "all"; - }); this.currentLine?.remove(); this.currentLine = undefined; } @@ -134,7 +131,9 @@ export class FDag extends FRoot { const circle = event.currentTarget as HTMLElement; const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); - + this.allGroups?.forEach(n => { + n.style.pointerEvents = "all"; + }); if (this.currentLine) { this.currentLine .attr("id", function () { @@ -147,7 +146,7 @@ export class FDag extends FRoot { } } - nodeMouseUp(event: MouseEvent) { + updateNodePosition(event: MouseEvent) { const nodeElement = event.currentTarget as HTMLElement; const { top: nodeTop, @@ -183,7 +182,7 @@ export class FDag extends FRoot { } render() { - return html` + return html` Node ${n} @@ -222,37 +221,38 @@ export class FDag extends FRoot { data-node-id=${`d-node-${n}`} class="circle ${side}" @mouseup=${this.dropLine} - @mousedown=${this.plotLine} + @mousedown=${this.startPlottingLine} + >`; + })} + `; + })} + ${[1, 2].map(g => { + return html` + + + Group ${g} + + ${["left", "right", "top", "bottom"].map(side => { + return html``; })} `; })} - - - - - Group - - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - `; } From 0d51fbf93ebfeb2dbd2441671fc28e0276492747 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 30 May 2024 16:52:25 +0530 Subject: [PATCH 12/64] f-dag-app save and view dag graph from schema --- .../src/components/f-dag/f-dag.ts | 210 +++++++++++++++--- stories/flow-lineage/dag-config.ts | 172 ++++++++++++++ stories/flow-lineage/f-dag.stories.ts | 3 +- 3 files changed, 357 insertions(+), 28 deletions(-) create mode 100644 stories/flow-lineage/dag-config.ts diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 228fd7f69..bee81a884 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -5,11 +5,36 @@ import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; -import { queryAll } from "lit/decorators.js"; +import { property, queryAll } from "lit/decorators.js"; +import { ifDefined } from "lit-html/directives/if-defined.js"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent +export type CoOrdinates = { + x: number; + y: number; +}; +export type FDagElement = { + id: string; + label: string; + icon: string; + height: string; + width: string; + group?: string; +} & CoOrdinates; + +export type FDagLink = { + from: CoOrdinates & { elementId: string }; + to: CoOrdinates & { elementId: string }; +}; + +export type FDagConfig = { + nodes: FDagElement[]; + links: FDagLink[]; + groups: FDagElement[]; +}; + function getTranslateValues(element: HTMLElement) { const style = window.getComputedStyle(element); const matrix = new DOMMatrixReadOnly(style.transform); @@ -26,6 +51,10 @@ export class FDag extends FRoot { * css loaded from scss file */ static styles = [unsafeCSS(globalStyle)]; + readonly required = ["config"]; + + @property({ type: Object, reflect: false }) + config!: FDagConfig; @queryAll(`[data-node-type="group"],[data-group]`) allGroups?: HTMLElement[]; @@ -77,6 +106,18 @@ export class FDag extends FRoot { return +d3.select(this).attr("y2") + event.movementY; }); } + + dragNestedGroups(groupElement: HTMLElement, event: MouseEvent) { + if (groupElement.dataset.nodeType === "group") { + const groupNodes = this.querySelectorAll( + `[data-group="${groupElement.getAttribute("id")}"]` + ); + groupNodes.forEach(gn => { + this.moveElement(gn, event); + this.dragNestedGroups(gn, event); + }); + } + } dragNode(event: MouseEvent) { event.stopPropagation(); if (event.buttons === 1 && this.currentLine === undefined) { @@ -84,15 +125,7 @@ export class FDag extends FRoot { nodeElement.style.zIndex = `3`; if (nodeElement) { this.moveElement(nodeElement, event); - - if (nodeElement.dataset.nodeType === "group") { - const groupNodes = this.querySelectorAll( - `[data-group="${nodeElement.getAttribute("id")}"]` - ); - groupNodes.forEach(gn => { - this.moveElement(gn, event); - }); - } + this.dragNestedGroups(nodeElement, event); } } } @@ -135,17 +168,66 @@ export class FDag extends FRoot { n.style.pointerEvents = "all"; }); if (this.currentLine) { + const linkElement = this.currentLine; + const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); + const toNodeId = circle.dataset.nodeId!; + const x2 = rect.left - dagRect.left + 4; + const y2 = rect.top - dagRect.top + 4; + + this.updateLink( + fromNodeId, + toNodeId, + +linkElement.attr("x1"), + +linkElement.attr("y1"), + x2, + y2 + ); + this.currentLine .attr("id", function () { - return d3.select(this).attr("id") + circle.dataset.nodeId; + return linkElement.attr("id") + circle.dataset.nodeId; }) - .attr("x2", rect.left - dagRect.left + 4) - .attr("y2", rect.top - dagRect.top + 4); + .attr("x2", x2) + .attr("y2", y2); this.currentLine = undefined; } } + updateLink(fromNodeId: string, toNodeId: string, x1: number, y1: number, x2: number, y2: number) { + let linkObject = this.config.links.find( + l => l.from.elementId === fromNodeId && l.to.elementId === toNodeId + ); + + if (!linkObject) { + linkObject = { + from: { + elementId: fromNodeId, + x: x1, + y: y1 + }, + to: { + elementId: toNodeId, + x: x2, + y: y2 + } + }; + + this.config.links.push(linkObject); + } else { + linkObject.from = { + elementId: fromNodeId, + x: x1, + y: y1 + }; + linkObject.to = { + elementId: toNodeId, + x: x2, + y: y2 + }; + } + } + updateNodePosition(event: MouseEvent) { const nodeElement = event.currentTarget as HTMLElement; const { @@ -179,6 +261,53 @@ export class FDag extends FRoot { if (!insideGroup) { delete nodeElement.dataset.group; } + + let elementConfig; + if (nodeElement.dataset.nodeType === "group") { + elementConfig = this.config.groups.find(n => n.id === nodeElement.getAttribute("id")); + } else { + elementConfig = this.config.nodes.find(n => n.id === nodeElement.getAttribute("id")); + } + + if (elementConfig) { + elementConfig.group = nodeElement.dataset.group; + const { translateX, translateY } = getTranslateValues(nodeElement); + elementConfig.x = translateX; + elementConfig.y = translateY; + } + + const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); + const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); + + // eslint-disable-next-line @typescript-eslint/no-this-alias + const that = this; + fromLines.each(function () { + const lineElement = d3.select(this as SVGLineElement); + const [fromNodeId, toNodeId] = lineElement.attr("id")!.split("->"); + that.updateLink( + fromNodeId, + toNodeId, + +lineElement.attr("x1"), + +lineElement.attr("y1"), + +lineElement.attr("x2"), + +lineElement.attr("y2") + ); + }); + + toLines.each(function () { + const lineElement = d3.select(this as SVGLineElement); + const [fromNodeId, toNodeId] = lineElement.attr("id")!.split("->"); + that.updateLink( + fromNodeId, + toNodeId, + +lineElement.attr("x1"), + +lineElement.attr("y1"), + +lineElement.attr("x2"), + +lineElement.attr("y2") + ); + }); + + console.log(this.config); } render() { @@ -197,28 +326,30 @@ export class FDag extends FRoot { - ${[1, 2, 3, 4].map(n => { + ${this.config.nodes.map(n => { return html` - - Node ${n} + + ${n.label} ${["left", "right", "top", "bottom"].map(side => { return html``; })} - ${[1, 2].map(g => { + ${this.config.groups.map(g => { return html` - - Group ${g} + + ${g.label} ${["left", "right", "top", "bottom"].map(side => { return html` | Map): void { super.updated(changedProperties); + + const svg = d3.select(this.svgElement.value!); + svg + .selectAll("line.dag-line") + .data(this.config.links) + .join("line") + .attr("class", "dag-line") + .attr("id", d => { + return `${d.from.elementId}->${d.to.elementId}`; + }) + .attr("x1", d => { + return d.from.x; + }) + .attr("y1", d => { + return d.from.y; + }) + .attr("x2", d => { + return d.to.x; + }) + .attr("y2", d => { + return d.to.y; + }) + .attr("stroke", "var(--color-primary-default)"); } } diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts new file mode 100644 index 000000000..944279eef --- /dev/null +++ b/stories/flow-lineage/dag-config.ts @@ -0,0 +1,172 @@ +import { FDagConfig } from "@ollion/flow-lineage"; + +const dagConfig: FDagConfig = { + nodes: [ + { + id: "node1", + label: "Node 1", + icon: "i-box", + height: "48px", + width: "200px", + x: 100, + y: 229 + }, + { + id: "node2", + label: "Node 2", + icon: "i-box", + height: "48px", + width: "200px", + x: 96, + y: 539 + }, + { + id: "node3", + label: "Node 3", + icon: "i-box", + height: "48px", + width: "200px", + x: 527, + y: 252, + group: "group1" + }, + { + id: "node4", + label: "Node 4", + icon: "i-box", + height: "48px", + width: "200px", + x: 766, + y: 545, + group: "group2" + }, + { + id: "node5", + label: "Node 5", + icon: "i-box", + height: "48px", + width: "100px", + x: 858, + y: 155, + group: "group3" + } + ], + links: [ + { + from: { + elementId: "node1", + x: 303, + y: 253 + }, + to: { + elementId: "group1", + x: 498, + y: 172 + } + }, + { + from: { + elementId: "node2", + x: 299, + y: 563 + }, + to: { + elementId: "node4", + x: 761, + y: 569 + } + }, + { + from: { + elementId: "node2", + x: 196, + y: 534 + }, + to: { + elementId: "node3", + x: 522, + y: 276 + } + }, + { + from: { + elementId: "node1", + x: 303, + y: 253 + }, + to: { + elementId: "group2", + x: 474, + y: 584 + } + }, + { + from: { + elementId: "node1", + x: 200, + y: 280 + }, + to: { + elementId: "node2", + x: 91, + y: 563 + } + }, + { + from: { + elementId: "node3", + x: 627, + y: 247 + }, + to: { + elementId: "group3", + x: 734, + y: 159 + } + }, + { + from: { + elementId: "node5", + x: 908, + y: 206 + }, + to: { + elementId: "node4", + x: 866, + y: 540 + } + } + ], + groups: [ + { + id: "group1", + label: "Group 1", + icon: "i-tree", + height: "300px", + width: "500px", + x: 503, + y: 22 + }, + { + id: "group2", + label: "Group 2", + icon: "i-tree", + height: "300px", + width: "500px", + x: 479, + y: 434 + }, + { + id: "group3", + label: "Group 3", + icon: "i-tree", + height: "150px", + width: "250px", + x: 739, + y: 84, + group: "group1" + } + ] +}; + +export default dagConfig; diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts index 8a151e9bf..edc799143 100644 --- a/stories/flow-lineage/f-dag.stories.ts +++ b/stories/flow-lineage/f-dag.stories.ts @@ -1,5 +1,6 @@ import { Meta, Story } from "@storybook/web-components"; import { html } from "lit-html"; +import dagConfig from "./dag-config"; export default { title: "@ollion/flow-lineage/f-dag" @@ -10,7 +11,7 @@ export const Basic = { return html` - + `; } }; From 95f0c356fad070c51c4a2461d3f5772869f5dbf0 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 31 May 2024 15:13:46 +0530 Subject: [PATCH 13/64] f-dag-app all line elements converted to path --- .../src/components/f-dag/f-dag.ts | 238 ++++++++++++------ stories/flow-lineage/dag-config.ts | 56 +++-- 2 files changed, 205 insertions(+), 89 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index bee81a884..dfd305951 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -56,7 +56,7 @@ export class FDag extends FRoot { @property({ type: Object, reflect: false }) config!: FDagConfig; - @queryAll(`[data-node-type="group"],[data-group]`) + @queryAll(`.dag-node`) allGroups?: HTMLElement[]; createRenderRoot() { @@ -65,7 +65,7 @@ export class FDag extends FRoot { scale = 1; svgElement: Ref = createRef(); - currentLine?: d3.Selection; + currentLine?: d3.Selection; moveElement(nodeElement: HTMLElement, event: MouseEvent) { let translateX = nodeElement.dataset.lastTranslateX @@ -86,25 +86,61 @@ export class FDag extends FRoot { ); nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; - const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); + const fromLines = d3.selectAll( + `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` + ); - fromLines - .attr("x1", function () { - return +d3.select(this).attr("x1") + event.movementX; - }) - .attr("y1", function () { - return +d3.select(this).attr("y1") + event.movementY; + fromLines.datum(d => { + return { + ...d, + from: { + x: (d.from.x += event.movementX), + y: (d.from.y += event.movementY), + elementId: d.from.elementId + } + }; + }); + + fromLines.attr("d", d => { + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points).toString(); + }); const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); - toLines - .attr("x2", function () { - return +d3.select(this).attr("x2") + event.movementX; - }) - .attr("y2", function () { - return +d3.select(this).attr("y2") + event.movementY; + toLines.datum(d => { + return { + ...(d as FDagLink), + to: { + x: ((d as FDagLink).to.x += event.movementX), + y: ((d as FDagLink).to.y += event.movementY), + elementId: (d as FDagLink).to.elementId + } + }; + }); + toLines.attr("d", d => { + const points: CoOrdinates[] = []; + + points.push({ + x: (d as FDagLink).from.x, + y: (d as FDagLink).from.y }); + points.push({ + x: (d as FDagLink).to.x, + y: (d as FDagLink).to.y + }); + + return this.generatePath(points).toString(); + }); } dragNestedGroups(groupElement: HTMLElement, event: MouseEvent) { @@ -140,22 +176,63 @@ export class FDag extends FRoot { const dagRect = this.getBoundingClientRect(); const svg = d3.select(this.svgElement.value!); this.currentLine = svg - .append("line") + .append("path") + .datum(() => { + const link: FDagLink = { + from: { + x: rect.left - dagRect.left + 4, + y: rect.top - dagRect.top + 4, + elementId: circle.dataset.nodeId! + }, + to: { + x: event.clientX - dagRect.left, + y: event.clientY - dagRect.top, + elementId: `` + } + }; + + return link; + }) .attr("class", "dag-line") .attr("id", `${circle.dataset.nodeId}->`) - .attr("x1", rect.left - dagRect.left + 4) - .attr("y1", rect.top - dagRect.top + 4) - .attr("x2", event.clientX - dagRect.left) - .attr("y2", event.clientY - dagRect.top) + .attr("d", d => { + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points).toString(); + }) .attr("stroke", "var(--color-primary-default)"); } updateLinePath(event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { const dagRect = this.getBoundingClientRect(); - this.currentLine - .attr("x2", event.clientX - dagRect.left) - .attr("y2", event.clientY - dagRect.top); + this.currentLine.attr("d", d => { + d.to.x = event.clientX - dagRect.left; + d.to.y = event.clientY - dagRect.top; + + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points).toString(); + }); } else { + this.allGroups?.forEach(n => { + n.style.pointerEvents = "all"; + }); this.currentLine?.remove(); this.currentLine = undefined; } @@ -174,21 +251,35 @@ export class FDag extends FRoot { const x2 = rect.left - dagRect.left + 4; const y2 = rect.top - dagRect.top + 4; - this.updateLink( - fromNodeId, - toNodeId, - +linkElement.attr("x1"), - +linkElement.attr("y1"), - x2, - y2 - ); - this.currentLine .attr("id", function () { return linkElement.attr("id") + circle.dataset.nodeId; }) - .attr("x2", x2) - .attr("y2", y2); + .attr("d", d => { + d.to.x = x2; + d.to.y = y2; + d.to.elementId = circle.dataset.nodeId!; + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points).toString(); + }) + .attr("stroke", "var(--color-border-default)"); + this.updateLink( + fromNodeId, + toNodeId, + linkElement.datum().from.x, + linkElement.datum().from.y, + linkElement.datum().to.x, + linkElement.datum().to.y + ); this.currentLine = undefined; } @@ -276,35 +367,21 @@ export class FDag extends FRoot { elementConfig.y = translateY; } - const fromLines = d3.selectAll(`.dag-line[id^="${nodeElement.getAttribute("id")}->"]`); - const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); + const fromLines = d3.selectAll( + `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` + ); + const toLines = d3.selectAll( + `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` + ); // eslint-disable-next-line @typescript-eslint/no-this-alias const that = this; - fromLines.each(function () { - const lineElement = d3.select(this as SVGLineElement); - const [fromNodeId, toNodeId] = lineElement.attr("id")!.split("->"); - that.updateLink( - fromNodeId, - toNodeId, - +lineElement.attr("x1"), - +lineElement.attr("y1"), - +lineElement.attr("x2"), - +lineElement.attr("y2") - ); + fromLines.each(function (d) { + that.updateLink(d.from.elementId, d.to.elementId, d.from.x, d.from.y, d.to.x, d.to.y); }); - toLines.each(function () { - const lineElement = d3.select(this as SVGLineElement); - const [fromNodeId, toNodeId] = lineElement.attr("id")!.split("->"); - that.updateLink( - fromNodeId, - toNodeId, - +lineElement.attr("x1"), - +lineElement.attr("y1"), - +lineElement.attr("x2"), - +lineElement.attr("y2") - ); + toLines.each(function (d) { + that.updateLink(d.from.elementId, d.to.elementId, d.from.x, d.from.y, d.to.x, d.to.y); }); console.log(this.config); @@ -372,7 +449,7 @@ export class FDag extends FRoot { @mousemove=${this.dragNode} @mouseup=${this.updateNodePosition} > - + ${g.label} @@ -394,26 +471,41 @@ export class FDag extends FRoot { const svg = d3.select(this.svgElement.value!); svg - .selectAll("line.dag-line") + .selectAll("path.dag-line") .data(this.config.links) - .join("line") + .join("path") .attr("class", "dag-line") .attr("id", d => { return `${d.from.elementId}->${d.to.elementId}`; }) - .attr("x1", d => { - return d.from.x; - }) - .attr("y1", d => { - return d.from.y; + .attr("d", d => { + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points).toString(); }) - .attr("x2", d => { - return d.to.x; - }) - .attr("y2", d => { - return d.to.y; - }) - .attr("stroke", "var(--color-primary-default)"); + .attr("stroke", "var(--color-border-default)"); + } + + generatePath(points: CoOrdinates[]) { + const path = d3.path(); + + points.forEach((p, idx) => { + if (idx === 0) { + path.moveTo(p.x, p.y); + } else { + path.lineTo(p.x, p.y); + } + }); + + return path; } } diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 944279eef..eeb0827c9 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -8,8 +8,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 100, - y: 229 + x: 50, + y: 63 }, { id: "node2", @@ -55,8 +55,8 @@ const dagConfig: FDagConfig = { { from: { elementId: "node1", - x: 303, - y: 253 + x: 253, + y: 87 }, to: { elementId: "group1", @@ -72,8 +72,8 @@ const dagConfig: FDagConfig = { }, to: { elementId: "node4", - x: 761, - y: 569 + x: 768, + y: 576 } }, { @@ -91,20 +91,20 @@ const dagConfig: FDagConfig = { { from: { elementId: "node1", - x: 303, - y: 253 + x: 253, + y: 87 }, to: { elementId: "group2", - x: 474, - y: 584 + x: 479, + y: 550 } }, { from: { elementId: "node1", - x: 200, - y: 280 + x: 150, + y: 114 }, to: { elementId: "node2", @@ -132,8 +132,32 @@ const dagConfig: FDagConfig = { }, to: { elementId: "node4", - x: 866, - y: 540 + x: 873, + y: 547 + } + }, + { + from: { + elementId: "group3", + x: 864, + y: 237 + }, + to: { + elementId: "group2", + x: 734, + y: 395 + } + }, + { + from: { + elementId: "node5", + x: 853, + y: 179 + }, + to: { + elementId: "node1", + x: 253, + y: 87 } } ], @@ -153,8 +177,8 @@ const dagConfig: FDagConfig = { icon: "i-tree", height: "300px", width: "500px", - x: 479, - y: 434 + x: 484, + y: 400 }, { id: "group3", From 8610b4117353f7ce46ee62ac31fdb0a65052e429 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 31 May 2024 15:34:02 +0530 Subject: [PATCH 14/64] f-dag-app arrows added --- .../src/components/f-dag/f-dag.ts | 84 ++++++++++++--- stories/flow-lineage/dag-config.ts | 100 +++++++++--------- 2 files changed, 118 insertions(+), 66 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index dfd305951..4adcb3410 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -66,6 +66,7 @@ export class FDag extends FRoot { svgElement: Ref = createRef(); currentLine?: d3.Selection; + currentArrow?: d3.Selection; moveElement(nodeElement: HTMLElement, event: MouseEvent) { let translateX = nodeElement.dataset.lastTranslateX @@ -175,24 +176,21 @@ export class FDag extends FRoot { const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); const svg = d3.select(this.svgElement.value!); + const link: FDagLink = { + from: { + x: rect.left - dagRect.left + 4, + y: rect.top - dagRect.top + 4, + elementId: circle.dataset.nodeId! + }, + to: { + x: event.clientX - dagRect.left, + y: event.clientY - dagRect.top, + elementId: `` + } + }; this.currentLine = svg .append("path") - .datum(() => { - const link: FDagLink = { - from: { - x: rect.left - dagRect.left + 4, - y: rect.top - dagRect.top + 4, - elementId: circle.dataset.nodeId! - }, - to: { - x: event.clientX - dagRect.left, - y: event.clientY - dagRect.top, - elementId: `` - } - }; - - return link; - }) + .datum(link) .attr("class", "dag-line") .attr("id", `${circle.dataset.nodeId}->`) .attr("d", d => { @@ -209,6 +207,27 @@ export class FDag extends FRoot { return this.generatePath(points).toString(); }) .attr("stroke", "var(--color-primary-default)"); + + this.currentArrow = svg + .append("text") + .datum(link) + .attr("class", "link-arrow") + .attr("id", function (d) { + return `${d.from.elementId}~arrow`; + }) + .attr("stroke", "var(--color-surface-default)") + .attr("stroke-width", "1px") + .attr("dy", 5.5) + .attr("dx", 2) + .append("textPath") + .attr("text-anchor", "end") + + .attr("xlink:href", function (_d) { + return `#${circle.dataset.nodeId}->`; + }) + .attr("startOffset", "100%") + .attr("fill", "var(--color-primary-default)") + .text("▶"); } updateLinePath(event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { @@ -235,6 +254,8 @@ export class FDag extends FRoot { }); this.currentLine?.remove(); this.currentLine = undefined; + this.currentArrow?.remove(); + this.currentArrow = undefined; } } dropLine(event: MouseEvent) { @@ -272,6 +293,14 @@ export class FDag extends FRoot { return this.generatePath(points).toString(); }) .attr("stroke", "var(--color-border-default)"); + if (this.currentArrow) { + this.currentArrow + .attr("xlink:href", function (_d) { + return `#${linkElement.attr("id")}`; + }) + .attr("fill", "var(--color-border-default)"); + } + this.updateLink( fromNodeId, toNodeId, @@ -282,6 +311,7 @@ export class FDag extends FRoot { ); this.currentLine = undefined; + this.currentArrow = undefined; } } @@ -492,6 +522,28 @@ export class FDag extends FRoot { return this.generatePath(points).toString(); }) .attr("stroke", "var(--color-border-default)"); + + svg + .selectAll("text.link-arrow") + .data(this.config.links) + .join("text") + .attr("class", "link-arrow") + .attr("id", function (d) { + return `${d.from.elementId}~arrow`; + }) + .attr("stroke", "var(--color-surface-default)") + .attr("stroke-width", "1px") + .attr("dy", 5.5) + .attr("dx", 2) + .append("textPath") + .attr("text-anchor", "end") + + .attr("xlink:href", function (d) { + return `#${d.from.elementId}->${d.to.elementId}`; + }) + .attr("startOffset", "100%") + .attr("fill", "var(--color-border-default)") + .text("▶"); } generatePath(points: CoOrdinates[]) { diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index eeb0827c9..d1996fec1 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -54,45 +54,45 @@ const dagConfig: FDagConfig = { links: [ { from: { - elementId: "node1", - x: 253, - y: 87 + elementId: "node5", + x: 908, + y: 206 }, to: { - elementId: "group1", - x: 498, - y: 172 + elementId: "node4", + x: 873, + y: 547 } }, { from: { - elementId: "node2", - x: 299, - y: 563 + elementId: "group3", + x: 864, + y: 237 }, to: { - elementId: "node4", - x: 768, - y: 576 + elementId: "group2", + x: 734, + y: 395 } }, { from: { - elementId: "node2", - x: 196, - y: 534 + elementId: "node5", + x: 853, + y: 179 }, to: { - elementId: "node3", - x: 522, - y: 276 + elementId: "node1", + x: 253, + y: 87 } }, { from: { - elementId: "node1", - x: 253, - y: 87 + elementId: "node2", + x: 299, + y: 563 }, to: { elementId: "group2", @@ -102,62 +102,62 @@ const dagConfig: FDagConfig = { }, { from: { - elementId: "node1", - x: 150, - y: 114 + elementId: "node2", + x: 196, + y: 534 }, to: { - elementId: "node2", - x: 91, - y: 563 + elementId: "group1", + x: 498, + y: 172 } }, { from: { - elementId: "node3", - x: 627, - y: 247 + elementId: "node2", + x: 196, + y: 534 }, to: { - elementId: "group3", - x: 734, - y: 159 + elementId: "node1", + x: 150, + y: 114 } }, { from: { - elementId: "node5", - x: 908, - y: 206 + elementId: "node3", + x: 627, + y: 303 }, to: { elementId: "node4", - x: 873, - y: 547 + x: 761, + y: 569 } }, { from: { - elementId: "group3", - x: 864, - y: 237 + elementId: "group1", + x: 753, + y: 325 }, to: { - elementId: "group2", - x: 734, - y: 395 + elementId: "node4", + x: 866, + y: 540 } }, { from: { - elementId: "node5", - x: 853, - y: 179 + elementId: "group3", + x: 734, + y: 159 }, to: { - elementId: "node1", - x: 253, - y: 87 + elementId: "node2", + x: 196, + y: 534 } } ], From 1ec0c5de7182552da2973c03fccbb81308ac6add Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 3 Jun 2024 15:28:13 +0530 Subject: [PATCH 15/64] f-dag-app multipoint node connections --- .../src/components/f-dag/f-dag-global.scss | 22 ++-- .../src/components/f-dag/f-dag.ts | 49 +++++++- stories/flow-lineage/dag-config.ts | 116 ++++++++++-------- 3 files changed, 123 insertions(+), 64 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 35acbcd01..82383a70f 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -36,31 +36,37 @@ f-dag { cursor: grabbing; } .circle { - border-radius: 8px; - height: 8px; - width: 8px; - border: 1px solid var(--color-border-secondary); + border: 1px solid transparent; position: absolute; cursor: crosshair; pointer-events: all; &:hover { border: 1px solid var(--color-primary-default); + background-color: var(--color-primary-surface); } &.left { right: 100%; - top: calc(50% - 4px); + top: 0px; + height: 100%; + width: 8px; } &.right { left: 100%; - top: calc(50% - 4px); + top: 0px; + height: 100%; + width: 8px; } &.top { bottom: 100%; - left: calc(50% - 4px); + left: 0px; + height: 8px; + width: 100%; } &.bottom { top: 100%; - left: calc(50% - 4px); + left: 0px; + height: 8px; + width: 100%; } } } diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 4adcb3410..e72a27619 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -176,10 +176,31 @@ export class FDag extends FRoot { const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); const svg = d3.select(this.svgElement.value!); + const circleX = rect.left - dagRect.left; + const circleY = rect.top - dagRect.top; + + let x1 = event.clientX - dagRect.left; + let y1 = event.clientY - dagRect.top; + + if (Math.abs(x1 - circleX) <= 12) { + let offset = 8; + if (circle.classList.contains("right")) { + offset = 0; + } + x1 = circleX + offset; + } + + if (Math.abs(y1 - circleY) <= 12) { + let offset = 8; + if (circle.classList.contains("bottom")) { + offset = 0; + } + y1 = circleY + offset; + } const link: FDagLink = { from: { - x: rect.left - dagRect.left + 4, - y: rect.top - dagRect.top + 4, + x: x1, + y: y1, elementId: circle.dataset.nodeId! }, to: { @@ -188,6 +209,7 @@ export class FDag extends FRoot { elementId: `` } }; + this.currentLine = svg .append("path") .datum(link) @@ -269,8 +291,27 @@ export class FDag extends FRoot { const linkElement = this.currentLine; const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); const toNodeId = circle.dataset.nodeId!; - const x2 = rect.left - dagRect.left + 4; - const y2 = rect.top - dagRect.top + 4; + + let x2 = event.clientX - dagRect.left; + let y2 = event.clientY - dagRect.top; + + const circleX2 = rect.left - dagRect.left; + const circleY2 = rect.top - dagRect.top; + + if (Math.abs(y2 - circleY2) <= 12) { + let offset = 8; + if (circle.classList.contains("bottom")) { + offset = 0; + } + y2 = circleY2 + offset; + } + if (Math.abs(x2 - circleX2) <= 12) { + let offset = 8; + if (circle.classList.contains("right")) { + offset = 0; + } + x2 = circleX2 + offset; + } this.currentLine .attr("id", function () { diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index d1996fec1..044c52298 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -54,110 +54,122 @@ const dagConfig: FDagConfig = { links: [ { from: { - elementId: "node5", - x: 908, - y: 206 + elementId: "node1", + x: 249, + y: 72 }, to: { - elementId: "node4", - x: 873, - y: 547 + elementId: "group1", + x: 502, + y: 123 } }, { from: { - elementId: "group3", - x: 864, - y: 237 + elementId: "node2", + x: 295, + y: 563 }, to: { - elementId: "group2", - x: 734, - y: 395 + elementId: "group1", + x: 502, + y: 225 } }, { from: { - elementId: "node5", - x: 853, - y: 179 + elementId: "node2", + x: 295, + y: 565 }, to: { - elementId: "node1", - x: 253, - y: 87 + elementId: "node4", + x: 765, + y: 579 } }, { from: { - elementId: "node2", - x: 299, - y: 563 + elementId: "node3", + x: 681, + y: 299 }, to: { - elementId: "group2", - x: 479, - y: 550 + elementId: "node4", + x: 800, + y: 544 } }, { from: { - elementId: "node2", - x: 196, - y: 534 + elementId: "node5", + x: 857, + y: 176 }, to: { - elementId: "group1", - x: 498, - y: 172 + elementId: "node3", + x: 658, + y: 251 } }, { from: { - elementId: "node2", - x: 196, - y: 534 + elementId: "node3", + x: 594, + y: 251 }, to: { elementId: "node1", - x: 150, - y: 114 + x: 249, + y: 99 } }, { from: { elementId: "node3", - x: 627, - y: 303 + x: 569, + y: 299 }, to: { - elementId: "node4", - x: 761, - y: 569 + elementId: "node2", + x: 229, + y: 538 } }, { from: { - elementId: "group1", - x: 753, - y: 325 + elementId: "group3", + x: 842, + y: 239 }, to: { elementId: "node4", - x: 866, - y: 540 + x: 858, + y: 544 + } + }, + { + from: { + elementId: "node5", + x: 890, + y: 208 + }, + to: { + elementId: "group2", + x: 887, + y: 399 } }, { from: { elementId: "group3", - x: 734, - y: 159 + x: 787, + y: 239 }, to: { - elementId: "node2", - x: 196, - y: 534 + elementId: "group2", + x: 806, + y: 399 } } ], @@ -186,8 +198,8 @@ const dagConfig: FDagConfig = { icon: "i-tree", height: "150px", width: "250px", - x: 739, - y: 84, + x: 725, + y: 90, group: "group1" } ] From a883d10fe1972a07e89c91bb5911eb1999342014 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 3 Jun 2024 19:00:26 +0530 Subject: [PATCH 16/64] f-dag-app curvy links and linkDirection property added --- .../src/components/f-dag/f-dag-global.scss | 3 + .../src/components/f-dag/f-dag.ts | 104 ++++++++----- stories/flow-lineage/dag-config.ts | 138 ++++++++++-------- 3 files changed, 148 insertions(+), 97 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 82383a70f..ff06cd54f 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -28,6 +28,9 @@ f-dag { z-index: 10; pointer-events: none; } + .dag-line { + fill: none; + } .dag-node { overflow: visible; user-select: none; diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index e72a27619..16bea48b3 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -24,9 +24,11 @@ export type FDagElement = { group?: string; } & CoOrdinates; +export type FDagLinkDirection = "horizontal" | "vertical"; export type FDagLink = { from: CoOrdinates & { elementId: string }; to: CoOrdinates & { elementId: string }; + linkDirection: FDagLinkDirection; }; export type FDagConfig = { @@ -113,18 +115,20 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }); - const toLines = d3.selectAll(`.dag-line[id$="->${nodeElement.getAttribute("id")}"]`); + const toLines = d3.selectAll( + `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` + ); toLines.datum(d => { return { - ...(d as FDagLink), + ...d, to: { - x: ((d as FDagLink).to.x += event.movementX), - y: ((d as FDagLink).to.y += event.movementY), - elementId: (d as FDagLink).to.elementId + x: (d.to.x += event.movementX), + y: (d.to.y += event.movementY), + elementId: d.to.elementId } }; }); @@ -132,15 +136,15 @@ export class FDag extends FRoot { const points: CoOrdinates[] = []; points.push({ - x: (d as FDagLink).from.x, - y: (d as FDagLink).from.y + x: d.from.x, + y: d.from.y }); points.push({ - x: (d as FDagLink).to.x, - y: (d as FDagLink).to.y + x: d.to.x, + y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }); } @@ -197,6 +201,11 @@ export class FDag extends FRoot { } y1 = circleY + offset; } + + const linkDirection = + circle.classList.contains("right") || circle.classList.contains("left") + ? "horizontal" + : "vertical"; const link: FDagLink = { from: { x: x1, @@ -207,7 +216,8 @@ export class FDag extends FRoot { x: event.clientX - dagRect.left, y: event.clientY - dagRect.top, elementId: `` - } + }, + linkDirection }; this.currentLine = svg @@ -226,7 +236,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }) .attr("stroke", "var(--color-primary-default)"); @@ -268,7 +278,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }); } else { this.allGroups?.forEach(n => { @@ -331,7 +341,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }) .attr("stroke", "var(--color-border-default)"); if (this.currentArrow) { @@ -348,7 +358,8 @@ export class FDag extends FRoot { linkElement.datum().from.x, linkElement.datum().from.y, linkElement.datum().to.x, - linkElement.datum().to.y + linkElement.datum().to.y, + linkElement.datum().linkDirection ); this.currentLine = undefined; @@ -356,7 +367,15 @@ export class FDag extends FRoot { } } - updateLink(fromNodeId: string, toNodeId: string, x1: number, y1: number, x2: number, y2: number) { + updateLink( + fromNodeId: string, + toNodeId: string, + x1: number, + y1: number, + x2: number, + y2: number, + linkDirection: FDagLinkDirection + ) { let linkObject = this.config.links.find( l => l.from.elementId === fromNodeId && l.to.elementId === toNodeId ); @@ -372,7 +391,8 @@ export class FDag extends FRoot { elementId: toNodeId, x: x2, y: y2 - } + }, + linkDirection }; this.config.links.push(linkObject); @@ -448,11 +468,27 @@ export class FDag extends FRoot { // eslint-disable-next-line @typescript-eslint/no-this-alias const that = this; fromLines.each(function (d) { - that.updateLink(d.from.elementId, d.to.elementId, d.from.x, d.from.y, d.to.x, d.to.y); + that.updateLink( + d.from.elementId, + d.to.elementId, + d.from.x, + d.from.y, + d.to.x, + d.to.y, + d.linkDirection + ); }); toLines.each(function (d) { - that.updateLink(d.from.elementId, d.to.elementId, d.from.x, d.from.y, d.to.x, d.to.y); + that.updateLink( + d.from.elementId, + d.to.elementId, + d.from.x, + d.from.y, + d.to.x, + d.to.y, + d.linkDirection + ); }); console.log(this.config); @@ -560,7 +596,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points).toString(); + return this.generatePath(points, d.linkDirection).toString(); }) .attr("stroke", "var(--color-border-default)"); @@ -587,18 +623,20 @@ export class FDag extends FRoot { .text("▶"); } - generatePath(points: CoOrdinates[]) { - const path = d3.path(); - - points.forEach((p, idx) => { - if (idx === 0) { - path.moveTo(p.x, p.y); - } else { - path.lineTo(p.x, p.y); - } - }); - - return path; + generatePath(points: CoOrdinates[], linkDirection: FDagLinkDirection) { + const { x: sx, y: sy } = points[0]; + const { x: dx, y: dy } = points[1]; + if (linkDirection === "vertical") { + return `M ${sx} ${sy} + C ${sx} ${(sy + dy) / 2}, + ${dx} ${(sy + dy) / 2}, + ${dx} ${dy}`; + } else { + return `M ${sx} ${sy} + C ${(sx + dx) / 2} ${sy}, + ${(sx + dx) / 2} ${dy}, + ${dx} ${dy}`; + } } } diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 044c52298..97d19395c 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -17,8 +17,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 96, - y: 539 + x: 167, + y: 444 }, { id: "node3", @@ -36,8 +36,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 766, - y: 545, + x: 760, + y: 623, group: "group2" }, { @@ -59,118 +59,128 @@ const dagConfig: FDagConfig = { y: 72 }, to: { - elementId: "group1", - x: 502, - y: 123 - } + elementId: "node5", + x: 857, + y: 185 + }, + linkDirection: "horizontal" }, { from: { - elementId: "node2", - x: 295, - y: 563 + elementId: "node1", + x: 102, + y: 110 }, to: { + elementId: "node3", + x: 590, + y: 251 + }, + linkDirection: "vertical" + }, + { + from: { elementId: "group1", - x: 502, - y: 225 - } + x: 539, + y: 321 + }, + to: { + elementId: "node2", + x: 246, + y: 443 + }, + linkDirection: "vertical" }, { from: { elementId: "node2", - x: 295, - y: 565 + x: 223, + y: 491 }, to: { elementId: "node4", - x: 765, - y: 579 - } + x: 838, + y: 622 + }, + linkDirection: "vertical" }, { from: { - elementId: "node3", - x: 681, - y: 299 + elementId: "group3", + x: 892, + y: 239 }, to: { - elementId: "node4", - x: 800, - y: 544 - } + elementId: "group2", + x: 717, + y: 399 + }, + linkDirection: "vertical" }, { from: { elementId: "node5", - x: 857, - y: 176 + x: 924, + y: 202 }, to: { - elementId: "node3", - x: 658, - y: 251 - } + elementId: "node4", + x: 784, + y: 622 + }, + linkDirection: "vertical" }, { from: { elementId: "node3", - x: 594, - y: 251 + x: 526, + y: 270 }, to: { elementId: "node1", x: 249, - y: 99 - } + y: 90 + }, + linkDirection: "horizontal" }, { from: { elementId: "node3", - x: 569, + x: 631, y: 299 }, to: { elementId: "node2", - x: 229, - y: 538 - } + x: 214, + y: 443 + }, + linkDirection: "vertical" }, { from: { elementId: "group3", - x: 842, - y: 239 + x: 724, + y: 207 }, to: { - elementId: "node4", - x: 858, - y: 544 - } - }, - { - from: { - elementId: "node5", - x: 890, - y: 208 + elementId: "node2", + x: 366, + y: 476 }, - to: { - elementId: "group2", - x: 887, - y: 399 - } + linkDirection: "horizontal" }, { from: { - elementId: "group3", - x: 787, - y: 239 + elementId: "node1", + x: 142, + y: 110 }, to: { - elementId: "group2", - x: 806, - y: 399 - } + elementId: "node2", + x: 299, + y: 443 + }, + linkDirection: "vertical" } ], groups: [ From 4db673677d24727c6ac918b6e4c9fc1903f922c5 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 3 Jun 2024 19:17:30 +0530 Subject: [PATCH 17/64] f-dag-app steplines added --- .../src/components/f-dag/f-dag.ts | 23 +++- stories/flow-lineage/dag-config.ts | 126 +++++++++--------- 2 files changed, 80 insertions(+), 69 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 16bea48b3..5f97a2e9a 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -626,16 +626,27 @@ export class FDag extends FRoot { generatePath(points: CoOrdinates[], linkDirection: FDagLinkDirection) { const { x: sx, y: sy } = points[0]; const { x: dx, y: dy } = points[1]; + // if (linkDirection === "vertical") { + // return `M ${sx} ${sy} + // C ${sx} ${(sy + dy) / 2}, + // ${dx} ${(sy + dy) / 2}, + // ${dx} ${dy}`; + // } else { + // return `M ${sx} ${sy} + // C ${(sx + dx) / 2} ${sy}, + // ${(sx + dx) / 2} ${dy}, + // ${dx} ${dy}`; + // } if (linkDirection === "vertical") { return `M ${sx} ${sy} - C ${sx} ${(sy + dy) / 2}, - ${dx} ${(sy + dy) / 2}, - ${dx} ${dy}`; + L ${sx} ${(sy + dy) / 2} + L ${dx} ${(sy + dy) / 2} + L ${dx} ${dy}`; } else { return `M ${sx} ${sy} - C ${(sx + dx) / 2} ${sy}, - ${(sx + dx) / 2} ${dy}, - ${dx} ${dy}`; + L ${(sx + dx) / 2} ${sy} + L ${(sx + dx) / 2} ${dy} + L ${dx} ${dy}`; } } } diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 97d19395c..0a3746c1c 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -8,8 +8,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 50, - y: 63 + x: 78, + y: 93 }, { id: "node2", @@ -17,8 +17,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 167, - y: 444 + x: 80, + y: 489 }, { id: "node3", @@ -26,8 +26,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 527, - y: 252, + x: 549, + y: 249, group: "group1" }, { @@ -36,8 +36,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "200px", - x: 760, - y: 623, + x: 611, + y: 591, group: "group2" }, { @@ -46,8 +46,8 @@ const dagConfig: FDagConfig = { icon: "i-box", height: "48px", width: "100px", - x: 858, - y: 155, + x: 768, + y: 129, group: "group3" } ], @@ -55,26 +55,26 @@ const dagConfig: FDagConfig = { { from: { elementId: "node1", - x: 249, - y: 72 + x: 277, + y: 102 }, to: { elementId: "node5", - x: 857, - y: 185 + x: 767, + y: 159 }, linkDirection: "horizontal" }, { from: { elementId: "node1", - x: 102, - y: 110 + x: 130, + y: 140 }, to: { elementId: "node3", - x: 590, - y: 251 + x: 612, + y: 248 }, linkDirection: "vertical" }, @@ -82,103 +82,103 @@ const dagConfig: FDagConfig = { from: { elementId: "group1", x: 539, - y: 321 + y: 313 }, to: { elementId: "node2", - x: 246, - y: 443 + x: 159, + y: 488 }, linkDirection: "vertical" }, { from: { elementId: "node2", - x: 223, - y: 491 + x: 136, + y: 536 }, to: { elementId: "node4", - x: 838, - y: 622 + x: 689, + y: 590 }, linkDirection: "vertical" }, { from: { elementId: "group3", - x: 892, - y: 239 + x: 819, + y: 211 }, to: { elementId: "group2", - x: 717, - y: 399 - }, - linkDirection: "vertical" - }, - { - from: { - elementId: "node5", - x: 924, - y: 202 - }, - to: { - elementId: "node4", - x: 784, - y: 622 + x: 713, + y: 432 }, linkDirection: "vertical" }, { from: { elementId: "node3", - x: 526, - y: 270 + x: 548, + y: 267 }, to: { elementId: "node1", - x: 249, - y: 90 + x: 277, + y: 120 }, linkDirection: "horizontal" }, { from: { elementId: "node3", - x: 631, - y: 299 + x: 653, + y: 288 }, to: { elementId: "node2", - x: 214, - y: 443 + x: 127, + y: 488 }, linkDirection: "vertical" }, { from: { elementId: "group3", - x: 724, - y: 207 + x: 651, + y: 179 }, to: { elementId: "node2", - x: 366, - y: 476 + x: 279, + y: 521 }, linkDirection: "horizontal" }, { from: { elementId: "node1", - x: 142, - y: 110 + x: 170, + y: 140 }, to: { elementId: "node2", - x: 299, - y: 443 + x: 212, + y: 488 + }, + linkDirection: "vertical" + }, + { + from: { + elementId: "node5", + x: 852, + y: 176 + }, + to: { + elementId: "node4", + x: 764, + y: 590 }, linkDirection: "vertical" } @@ -191,7 +191,7 @@ const dagConfig: FDagConfig = { height: "300px", width: "500px", x: 503, - y: 22 + y: 14 }, { id: "group2", @@ -199,8 +199,8 @@ const dagConfig: FDagConfig = { icon: "i-tree", height: "300px", width: "500px", - x: 484, - y: 400 + x: 480, + y: 433 }, { id: "group3", @@ -208,8 +208,8 @@ const dagConfig: FDagConfig = { icon: "i-tree", height: "150px", width: "250px", - x: 725, - y: 90, + x: 652, + y: 62, group: "group1" } ] From 22db9c570565ade8c40a77f978f9b02b8ea1b69d Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 3 Jun 2024 19:21:05 +0530 Subject: [PATCH 18/64] f-dag-app dag config updated --- stories/flow-lineage/dag-config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 0a3746c1c..8f0719678 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -134,7 +134,7 @@ const dagConfig: FDagConfig = { from: { elementId: "node3", x: 653, - y: 288 + y: 297 }, to: { elementId: "node2", From 81861fc0804a9997fd42c031029c0617df8c045f Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 4 Jun 2024 14:59:44 +0530 Subject: [PATCH 19/64] f-dag-app link plotting logic updated --- .../src/components/f-dag/curve-steps.ts | 140 ++++++++++++++++++ .../src/components/f-dag/f-dag.ts | 111 ++++++++++---- 2 files changed, 225 insertions(+), 26 deletions(-) create mode 100644 packages/flow-lineage/src/components/f-dag/curve-steps.ts diff --git a/packages/flow-lineage/src/components/f-dag/curve-steps.ts b/packages/flow-lineage/src/components/f-dag/curve-steps.ts new file mode 100644 index 000000000..7e247dfab --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/curve-steps.ts @@ -0,0 +1,140 @@ +class Step { + private _context: CanvasRenderingContext2D; + private _curve: number; + private _line: number; + private _x?: number; + private _y?: number; + private _point?: number; + private _lastX?: number; + private _lastY?: number; + private _direction?: CurveDirection; + + constructor(context: CanvasRenderingContext2D, curve: number, direction?: CurveDirection) { + this._context = context; + this._curve = curve; + this._line = NaN; + this._direction = direction; + } + + /** + * Initialize the area. + */ + areaStart() { + this._line = 0; + } + + /** + * End the area. + */ + areaEnd() { + this._line = NaN; + } + + /** + * Start a new line. + */ + lineStart() { + this._x = this._y = NaN; + this._point = 0; + } + + /** + * End the current line. + */ + lineEnd() { + if (this._x !== undefined && this._y !== undefined) { + this._context.lineTo(this._x, this._y); + } + } + + /** + * Add a point to the line. + * @param x - The x-coordinate of the point. + * @param y - The y-coordinate of the point. + */ + point(x: number, y: number) { + (x = +x), (y = +y); + switch (this._point) { + case 0: + this._point = 1; + this._context.moveTo(x, y); + break; + case 1: + this._point = 2; + this._lastX = x; + this._lastY = y; + if (this._direction === "vertical") { + this._context.lineTo(x, y - this._curve); + } else if (this._direction === "vertical-reverse") { + this._context.lineTo(x, y + this._curve); + } else if (this._direction === "horizontal-reverse") { + this._context.lineTo(x + this._curve, y); + } else { + this._context.lineTo(x - this._curve, y); + } + break; + default: { + if ( + this._lastX !== undefined && + this._lastY !== undefined && + (this._lastX !== x || this._lastY !== y) + ) { + let nextY = y; + let nextX = x; + if (y < this._lastY && this._lastX === x) { + nextY = this._lastY - this._curve; + this._context.arcTo(this._lastX, this._lastY, this._lastX, nextY, this._curve); + this._context.lineTo(x, y + this._curve); + } else if (y > this._lastY && this._lastX === x) { + nextY = this._lastY + this._curve; + this._context.arcTo(this._lastX, this._lastY, this._lastX, nextY, this._curve); + this._context.lineTo(x, y - this._curve); + } else if (x > this._lastX && this._lastY === y) { + nextX = this._lastX + this._curve; + this._context.arcTo(this._lastX, this._lastY, nextX, this._lastY, this._curve); + this._context.lineTo(x - this._curve, y); + } else if (x < this._lastX && this._lastY === y) { + nextX = this._lastX - this._curve; + this._context.arcTo(this._lastX, this._lastY, nextX, this._lastY, this._curve); + this._context.lineTo(x + this._curve, y); + } else { + this._context.lineTo(x, y); + } + } else { + this._context.lineTo(x, y); + } + this._lastX = x; + this._lastY = y; + break; + } + } + (this._x = x), (this._y = y); + } +} + +type CurveDirection = "horizontal" | "vertical" | "vertical-reverse" | "horizontal-reverse"; + +/** + * A factory function that creates a curved step function. + * @param angle - The angle for curves. + * @returns A function to create curved steps. + */ +function curvedStep(angle: number, direction?: CurveDirection) { + function createStep(context: CanvasRenderingContext2D) { + return new Step(context, angle, direction); + } + + /** + * Set a new angle for curves. + * @param angle - The new angle for curves. + * @returns A curved step function with the specified angle. + */ + createStep.angle = function (angle: number, direction?: CurveDirection) { + return curvedStep(+angle, direction); + }; + + return createStep; +} + +// Export the curvedStep function +export default curvedStep(12); diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 5f97a2e9a..3ed2c7f4b 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -7,10 +7,40 @@ import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; import { property, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; +import curveStep from "./curve-steps"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent +// line plotting function on given points +const vLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(12, "vertical")); + +const hLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(12, "horizontal")); + +const rVLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(12, "vertical-reverse")); + +const rHLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(12, "horizontal-reverse")); + export type CoOrdinates = { x: number; y: number; @@ -59,7 +89,10 @@ export class FDag extends FRoot { config!: FDagConfig; @queryAll(`.dag-node`) - allGroups?: HTMLElement[]; + allGroupsAndNodes?: HTMLElement[]; + + @queryAll(`.dag-node[data-node-type="node"]`) + allNodes?: HTMLElement[]; createRenderRoot() { return this; @@ -173,7 +206,7 @@ export class FDag extends FRoot { startPlottingLine(event: MouseEvent) { event.stopPropagation(); - this.allGroups?.forEach(n => { + this.allGroupsAndNodes?.forEach(n => { n.style.pointerEvents = "none"; }); const circle = event.currentTarget as HTMLElement; @@ -281,7 +314,7 @@ export class FDag extends FRoot { return this.generatePath(points, d.linkDirection).toString(); }); } else { - this.allGroups?.forEach(n => { + this.allGroupsAndNodes?.forEach(n => { n.style.pointerEvents = "all"; }); this.currentLine?.remove(); @@ -294,7 +327,7 @@ export class FDag extends FRoot { const circle = event.currentTarget as HTMLElement; const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); - this.allGroups?.forEach(n => { + this.allGroupsAndNodes?.forEach(n => { n.style.pointerEvents = "all"; }); if (this.currentLine) { @@ -424,10 +457,10 @@ export class FDag extends FRoot { nodeElement.style.zIndex = `2`; } - const allGroups = this.querySelectorAll(`[data-node-type="group"]`); + const allGroupsAndNodes = this.querySelectorAll(`[data-node-type="group"]`); let insideGroup = false; - for (let index = 0; index < allGroups.length; index++) { - const group = allGroups.item(index); + for (let index = 0; index < allGroupsAndNodes.length; index++) { + const group = allGroupsAndNodes.item(index); const { top, height, left, width } = group.getBoundingClientRect(); if ( nodeTop > top && @@ -626,27 +659,53 @@ export class FDag extends FRoot { generatePath(points: CoOrdinates[], linkDirection: FDagLinkDirection) { const { x: sx, y: sy } = points[0]; const { x: dx, y: dy } = points[1]; - // if (linkDirection === "vertical") { - // return `M ${sx} ${sy} - // C ${sx} ${(sy + dy) / 2}, - // ${dx} ${(sy + dy) / 2}, - // ${dx} ${dy}`; - // } else { - // return `M ${sx} ${sy} - // C ${(sx + dx) / 2} ${sy}, - // ${(sx + dx) / 2} ${dy}, - // ${dx} ${dy}`; - // } + if (linkDirection === "vertical") { - return `M ${sx} ${sy} - L ${sx} ${(sy + dy) / 2} - L ${dx} ${(sy + dy) / 2} - L ${dx} ${dy}`; + const points = [ + { + x: sx, + y: sy + }, + { + x: sx, + y: (sy + dy) / 2 + }, + { + x: dx, + y: (sy + dy) / 2 + }, + { + x: dx, + y: dy + } + ]; + if (sy > dy) { + return rVLine(points)!; + } + return vLine(points)!; } else { - return `M ${sx} ${sy} - L ${(sx + dx) / 2} ${sy} - L ${(sx + dx) / 2} ${dy} - L ${dx} ${dy}`; + const points = [ + { + x: sx, + y: sy + }, + { + x: (sx + dx) / 2, + y: sy + }, + { + x: (sx + dx) / 2, + y: dy + }, + { + x: dx, + y: dy + } + ]; + if (sx > dx) { + return rHLine(points)!; + } + return hLine(points)!; } } } From ee9c3f6b5506a960e66aeef1a027772517e6ec14 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 4 Jun 2024 15:12:13 +0530 Subject: [PATCH 20/64] f-dag-app link curve plotting logic updated --- .../src/components/f-dag/f-dag.ts | 56 +++++++++---------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 3ed2c7f4b..87e70783b 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -12,35 +12,6 @@ import curveStep from "./curve-steps"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent -// line plotting function on given points -const vLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(12, "vertical")); - -const hLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(12, "horizontal")); - -const rVLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(12, "vertical-reverse")); - -const rHLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(12, "horizontal-reverse")); - export type CoOrdinates = { x: number; y: number; @@ -679,9 +650,22 @@ export class FDag extends FRoot { y: dy } ]; + const angle = Math.abs(dx - sx) >= 24 ? 12 : Math.abs(dx - sx) / 2; if (sy > dy) { + const rVLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "vertical-reverse")); return rVLine(points)!; } + const vLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "vertical")); return vLine(points)!; } else { const points = [ @@ -702,9 +686,23 @@ export class FDag extends FRoot { y: dy } ]; + const angle = Math.abs(dy - sy) >= 24 ? 12 : Math.abs(dy - sy) / 2; + if (sx > dx) { + const rHLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "horizontal-reverse")); return rHLine(points)!; } + const hLine = d3 + .line() + .x(p => p.x) + .y(p => p.y) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "horizontal")); return hLine(points)!; } } From 479d547d8b6f385b39e468c8cd6532614500e539 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 5 Jun 2024 15:31:15 +0530 Subject: [PATCH 21/64] f-dag-app code segregation --- .../src/components/f-dag/f-dag.ts | 564 +----------------- .../src/components/f-dag/link-utils.ts | 335 +++++++++++ .../src/components/f-dag/node-utils.ts | 211 +++++++ .../src/components/f-dag/types.ts | 25 + 4 files changed, 596 insertions(+), 539 deletions(-) create mode 100644 packages/flow-lineage/src/components/f-dag/link-utils.ts create mode 100644 packages/flow-lineage/src/components/f-dag/node-utils.ts create mode 100644 packages/flow-lineage/src/components/f-dag/types.ts diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 87e70783b..24f60c7a4 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -7,47 +7,19 @@ import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; import { property, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; -import curveStep from "./curve-steps"; +import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; +import type { CoOrdinates, FDagConfig, FDagLink } from "./types"; +import { + dropLine, + generatePath, + startPlottingLine, + updateLinePath, + updateLink +} from "./link-utils"; injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent -export type CoOrdinates = { - x: number; - y: number; -}; -export type FDagElement = { - id: string; - label: string; - icon: string; - height: string; - width: string; - group?: string; -} & CoOrdinates; - -export type FDagLinkDirection = "horizontal" | "vertical"; -export type FDagLink = { - from: CoOrdinates & { elementId: string }; - to: CoOrdinates & { elementId: string }; - linkDirection: FDagLinkDirection; -}; - -export type FDagConfig = { - nodes: FDagElement[]; - links: FDagLink[]; - groups: FDagElement[]; -}; - -function getTranslateValues(element: HTMLElement) { - const style = window.getComputedStyle(element); - const matrix = new DOMMatrixReadOnly(style.transform); - - // Extract translateX and translateY values - const translateX = matrix.m41; - const translateY = matrix.m42; - - return { translateX, translateY }; -} @flowElement("f-dag") export class FDag extends FRoot { /** @@ -74,429 +46,23 @@ export class FDag extends FRoot { currentLine?: d3.Selection; currentArrow?: d3.Selection; - moveElement(nodeElement: HTMLElement, event: MouseEvent) { - let translateX = nodeElement.dataset.lastTranslateX - ? +nodeElement.dataset.lastTranslateX - : undefined; - let translateY = nodeElement.dataset.lastTranslateY - ? +nodeElement.dataset.lastTranslateY - : undefined; - if (!translateX || !translateY) { - const translate = getTranslateValues(nodeElement); - translateX = translate.translateX; - translateY = translate.translateY; - } - - nodeElement.style.setProperty( - "transform", - `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` - ); - nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; - nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; - const fromLines = d3.selectAll( - `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` - ); - - fromLines.datum(d => { - return { - ...d, - from: { - x: (d.from.x += event.movementX), - y: (d.from.y += event.movementY), - elementId: d.from.elementId - } - }; - }); - - fromLines.attr("d", d => { - const points: CoOrdinates[] = []; - points.push({ - x: d.from.x, - y: d.from.y - }); - points.push({ - x: d.to.x, - y: d.to.y - }); - - return this.generatePath(points, d.linkDirection).toString(); - }); - - const toLines = d3.selectAll( - `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` - ); - - toLines.datum(d => { - return { - ...d, - to: { - x: (d.to.x += event.movementX), - y: (d.to.y += event.movementY), - elementId: d.to.elementId - } - }; - }); - toLines.attr("d", d => { - const points: CoOrdinates[] = []; - - points.push({ - x: d.from.x, - y: d.from.y - }); - points.push({ - x: d.to.x, - y: d.to.y - }); - - return this.generatePath(points, d.linkDirection).toString(); - }); - } - - dragNestedGroups(groupElement: HTMLElement, event: MouseEvent) { - if (groupElement.dataset.nodeType === "group") { - const groupNodes = this.querySelectorAll( - `[data-group="${groupElement.getAttribute("id")}"]` - ); - groupNodes.forEach(gn => { - this.moveElement(gn, event); - this.dragNestedGroups(gn, event); - }); - } - } - dragNode(event: MouseEvent) { - event.stopPropagation(); - if (event.buttons === 1 && this.currentLine === undefined) { - const nodeElement = event.currentTarget as HTMLElement; - nodeElement.style.zIndex = `3`; - if (nodeElement) { - this.moveElement(nodeElement, event); - this.dragNestedGroups(nodeElement, event); - } - } - } - - startPlottingLine(event: MouseEvent) { - event.stopPropagation(); - this.allGroupsAndNodes?.forEach(n => { - n.style.pointerEvents = "none"; - }); - const circle = event.currentTarget as HTMLElement; - const rect = circle.getBoundingClientRect(); - const dagRect = this.getBoundingClientRect(); - const svg = d3.select(this.svgElement.value!); - const circleX = rect.left - dagRect.left; - const circleY = rect.top - dagRect.top; - - let x1 = event.clientX - dagRect.left; - let y1 = event.clientY - dagRect.top; - - if (Math.abs(x1 - circleX) <= 12) { - let offset = 8; - if (circle.classList.contains("right")) { - offset = 0; - } - x1 = circleX + offset; - } - - if (Math.abs(y1 - circleY) <= 12) { - let offset = 8; - if (circle.classList.contains("bottom")) { - offset = 0; - } - y1 = circleY + offset; - } - - const linkDirection = - circle.classList.contains("right") || circle.classList.contains("left") - ? "horizontal" - : "vertical"; - const link: FDagLink = { - from: { - x: x1, - y: y1, - elementId: circle.dataset.nodeId! - }, - to: { - x: event.clientX - dagRect.left, - y: event.clientY - dagRect.top, - elementId: `` - }, - linkDirection - }; - - this.currentLine = svg - .append("path") - .datum(link) - .attr("class", "dag-line") - .attr("id", `${circle.dataset.nodeId}->`) - .attr("d", d => { - const points: CoOrdinates[] = []; - points.push({ - x: d.from.x, - y: d.from.y - }); - points.push({ - x: d.to.x, - y: d.to.y - }); - - return this.generatePath(points, d.linkDirection).toString(); - }) - .attr("stroke", "var(--color-primary-default)"); - - this.currentArrow = svg - .append("text") - .datum(link) - .attr("class", "link-arrow") - .attr("id", function (d) { - return `${d.from.elementId}~arrow`; - }) - .attr("stroke", "var(--color-surface-default)") - .attr("stroke-width", "1px") - .attr("dy", 5.5) - .attr("dx", 2) - .append("textPath") - .attr("text-anchor", "end") - - .attr("xlink:href", function (_d) { - return `#${circle.dataset.nodeId}->`; - }) - .attr("startOffset", "100%") - .attr("fill", "var(--color-primary-default)") - .text("▶"); - } - updateLinePath(event: MouseEvent) { - if (event.buttons === 1 && this.currentLine) { - const dagRect = this.getBoundingClientRect(); - this.currentLine.attr("d", d => { - d.to.x = event.clientX - dagRect.left; - d.to.y = event.clientY - dagRect.top; - - const points: CoOrdinates[] = []; - points.push({ - x: d.from.x, - y: d.from.y - }); - points.push({ - x: d.to.x, - y: d.to.y - }); - - return this.generatePath(points, d.linkDirection).toString(); - }); - } else { - this.allGroupsAndNodes?.forEach(n => { - n.style.pointerEvents = "all"; - }); - this.currentLine?.remove(); - this.currentLine = undefined; - this.currentArrow?.remove(); - this.currentArrow = undefined; - } - } - dropLine(event: MouseEvent) { - const circle = event.currentTarget as HTMLElement; - const rect = circle.getBoundingClientRect(); - const dagRect = this.getBoundingClientRect(); - this.allGroupsAndNodes?.forEach(n => { - n.style.pointerEvents = "all"; - }); - if (this.currentLine) { - const linkElement = this.currentLine; - const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); - const toNodeId = circle.dataset.nodeId!; - - let x2 = event.clientX - dagRect.left; - let y2 = event.clientY - dagRect.top; - - const circleX2 = rect.left - dagRect.left; - const circleY2 = rect.top - dagRect.top; - - if (Math.abs(y2 - circleY2) <= 12) { - let offset = 8; - if (circle.classList.contains("bottom")) { - offset = 0; - } - y2 = circleY2 + offset; - } - if (Math.abs(x2 - circleX2) <= 12) { - let offset = 8; - if (circle.classList.contains("right")) { - offset = 0; - } - x2 = circleX2 + offset; - } - - this.currentLine - .attr("id", function () { - return linkElement.attr("id") + circle.dataset.nodeId; - }) - .attr("d", d => { - d.to.x = x2; - d.to.y = y2; - d.to.elementId = circle.dataset.nodeId!; - const points: CoOrdinates[] = []; - points.push({ - x: d.from.x, - y: d.from.y - }); - points.push({ - x: d.to.x, - y: d.to.y - }); - - return this.generatePath(points, d.linkDirection).toString(); - }) - .attr("stroke", "var(--color-border-default)"); - if (this.currentArrow) { - this.currentArrow - .attr("xlink:href", function (_d) { - return `#${linkElement.attr("id")}`; - }) - .attr("fill", "var(--color-border-default)"); - } - - this.updateLink( - fromNodeId, - toNodeId, - linkElement.datum().from.x, - linkElement.datum().from.y, - linkElement.datum().to.x, - linkElement.datum().to.y, - linkElement.datum().linkDirection - ); - - this.currentLine = undefined; - this.currentArrow = undefined; - } - } - - updateLink( - fromNodeId: string, - toNodeId: string, - x1: number, - y1: number, - x2: number, - y2: number, - linkDirection: FDagLinkDirection - ) { - let linkObject = this.config.links.find( - l => l.from.elementId === fromNodeId && l.to.elementId === toNodeId - ); - - if (!linkObject) { - linkObject = { - from: { - elementId: fromNodeId, - x: x1, - y: y1 - }, - to: { - elementId: toNodeId, - x: x2, - y: y2 - }, - linkDirection - }; - - this.config.links.push(linkObject); - } else { - linkObject.from = { - elementId: fromNodeId, - x: x1, - y: y1 - }; - linkObject.to = { - elementId: toNodeId, - x: x2, - y: y2 - }; - } - } - - updateNodePosition(event: MouseEvent) { - const nodeElement = event.currentTarget as HTMLElement; - const { - top: nodeTop, - height: nodeHeight, - left: nodeLeft, - width: nodeWidth - } = nodeElement.getBoundingClientRect(); - if (nodeElement.dataset.nodeType === "group") { - nodeElement.style.zIndex = `1`; - } else { - nodeElement.style.zIndex = `2`; - } - - const allGroupsAndNodes = this.querySelectorAll(`[data-node-type="group"]`); - let insideGroup = false; - for (let index = 0; index < allGroupsAndNodes.length; index++) { - const group = allGroupsAndNodes.item(index); - const { top, height, left, width } = group.getBoundingClientRect(); - if ( - nodeTop > top && - nodeLeft > left && - nodeTop + nodeHeight < top + height && - nodeLeft + nodeWidth < left + width - ) { - insideGroup = true; - nodeElement.dataset.group = group.getAttribute("id")!; - } - } - - if (!insideGroup) { - delete nodeElement.dataset.group; - } - - let elementConfig; - if (nodeElement.dataset.nodeType === "group") { - elementConfig = this.config.groups.find(n => n.id === nodeElement.getAttribute("id")); - } else { - elementConfig = this.config.nodes.find(n => n.id === nodeElement.getAttribute("id")); - } - - if (elementConfig) { - elementConfig.group = nodeElement.dataset.group; - const { translateX, translateY } = getTranslateValues(nodeElement); - elementConfig.x = translateX; - elementConfig.y = translateY; - } - - const fromLines = d3.selectAll( - `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` - ); - const toLines = d3.selectAll( - `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` - ); + /** + * Node utils + */ + moveElement = moveElement; + dragNestedGroups = dragNestedGroups; + dragNode = dragNode; + updateNodePosition = updateNodePosition; - // eslint-disable-next-line @typescript-eslint/no-this-alias - const that = this; - fromLines.each(function (d) { - that.updateLink( - d.from.elementId, - d.to.elementId, - d.from.x, - d.from.y, - d.to.x, - d.to.y, - d.linkDirection - ); - }); + /** + * Link utils + */ - toLines.each(function (d) { - that.updateLink( - d.from.elementId, - d.to.elementId, - d.from.x, - d.from.y, - d.to.x, - d.to.y, - d.linkDirection - ); - }); - - console.log(this.config); - } + startPlottingLine = startPlottingLine; + updateLinePath = updateLinePath; + dropLine = dropLine; + updateLink = updateLink; + generatePath = generatePath; render() { return html` @@ -600,7 +166,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points, d.linkDirection).toString(); + return this.generatePath(points, d.linkDirection)!.toString(); }) .attr("stroke", "var(--color-border-default)"); @@ -626,86 +192,6 @@ export class FDag extends FRoot { .attr("fill", "var(--color-border-default)") .text("▶"); } - - generatePath(points: CoOrdinates[], linkDirection: FDagLinkDirection) { - const { x: sx, y: sy } = points[0]; - const { x: dx, y: dy } = points[1]; - - if (linkDirection === "vertical") { - const points = [ - { - x: sx, - y: sy - }, - { - x: sx, - y: (sy + dy) / 2 - }, - { - x: dx, - y: (sy + dy) / 2 - }, - { - x: dx, - y: dy - } - ]; - const angle = Math.abs(dx - sx) >= 24 ? 12 : Math.abs(dx - sx) / 2; - if (sy > dy) { - const rVLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(angle, "vertical-reverse")); - return rVLine(points)!; - } - const vLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(angle, "vertical")); - return vLine(points)!; - } else { - const points = [ - { - x: sx, - y: sy - }, - { - x: (sx + dx) / 2, - y: sy - }, - { - x: (sx + dx) / 2, - y: dy - }, - { - x: dx, - y: dy - } - ]; - const angle = Math.abs(dy - sy) >= 24 ? 12 : Math.abs(dy - sy) / 2; - - if (sx > dx) { - const rHLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(angle, "horizontal-reverse")); - return rHLine(points)!; - } - const hLine = d3 - .line() - .x(p => p.x) - .y(p => p.y) - //@ts-expect-error @todo vikas to check - .curve(curveStep.angle(angle, "horizontal")); - return hLine(points)!; - } - } } /** diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts new file mode 100644 index 000000000..40ec92186 --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -0,0 +1,335 @@ +import * as d3 from "d3"; +import type { FDag } from "./f-dag"; +import { CoOrdinates, FDagLink, FDagLinkDirection } from "./types"; +import curveStep from "./curve-steps"; + +export function startPlottingLine(this: FDag, event: MouseEvent) { + event.stopPropagation(); + this.allGroupsAndNodes?.forEach(n => { + n.style.pointerEvents = "none"; + }); + const circle = event.currentTarget as HTMLElement; + const rect = circle.getBoundingClientRect(); + const dagRect = this.getBoundingClientRect(); + const svg = d3.select(this.svgElement.value!); + const circleX = rect.left - dagRect.left; + const circleY = rect.top - dagRect.top; + + let x1 = event.clientX - dagRect.left; + let y1 = event.clientY - dagRect.top; + + if (Math.abs(x1 - circleX) <= 12) { + let offset = 8; + if (circle.classList.contains("right")) { + offset = 0; + } + x1 = circleX + offset; + } + + if (Math.abs(y1 - circleY) <= 12) { + let offset = 8; + if (circle.classList.contains("bottom")) { + offset = 0; + } + y1 = circleY + offset; + } + + const linkDirection = + circle.classList.contains("right") || circle.classList.contains("left") + ? "horizontal" + : "vertical"; + const link: FDagLink = { + from: { + x: x1, + y: y1, + elementId: circle.dataset.nodeId! + }, + to: { + x: event.clientX - dagRect.left, + y: event.clientY - dagRect.top, + elementId: `` + }, + linkDirection + }; + + this.currentLine = svg + .append("path") + .datum(link) + .attr("class", "dag-line") + .attr("id", `${circle.dataset.nodeId}->`) + .attr("d", d => { + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points, d.linkDirection); + }) + .attr("stroke", "var(--color-primary-default)"); + + this.currentArrow = svg + .append("text") + .datum(link) + .attr("class", "link-arrow") + .attr("id", function (d) { + return `${d.from.elementId}~arrow`; + }) + .attr("stroke", "var(--color-surface-default)") + .attr("stroke-width", "1px") + .attr("dy", 5.5) + .attr("dx", 2) + .append("textPath") + .attr("text-anchor", "end") + + .attr("xlink:href", function (_d) { + return `#${circle.dataset.nodeId}->`; + }) + .attr("startOffset", "100%") + .attr("fill", "var(--color-primary-default)") + .text("▶"); +} +export function updateLinePath(this: FDag, event: MouseEvent) { + if (event.buttons === 1 && this.currentLine) { + const dagRect = this.getBoundingClientRect(); + this.currentLine.attr("d", d => { + d.to.x = event.clientX - dagRect.left; + d.to.y = event.clientY - dagRect.top; + + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points, d.linkDirection); + }); + } else { + this.allGroupsAndNodes?.forEach(n => { + n.style.pointerEvents = "all"; + }); + this.currentLine?.remove(); + this.currentLine = undefined; + this.currentArrow?.remove(); + this.currentArrow = undefined; + } +} +export function dropLine(this: FDag, event: MouseEvent) { + const circle = event.currentTarget as HTMLElement; + const rect = circle.getBoundingClientRect(); + const dagRect = this.getBoundingClientRect(); + this.allGroupsAndNodes?.forEach(n => { + n.style.pointerEvents = "all"; + }); + if (this.currentLine) { + const linkElement = this.currentLine; + const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); + const toNodeId = circle.dataset.nodeId!; + + let x2 = event.clientX - dagRect.left; + let y2 = event.clientY - dagRect.top; + + const circleX2 = rect.left - dagRect.left; + const circleY2 = rect.top - dagRect.top; + + if (Math.abs(y2 - circleY2) <= 12) { + let offset = 8; + if (circle.classList.contains("bottom")) { + offset = 0; + } + y2 = circleY2 + offset; + } + if (Math.abs(x2 - circleX2) <= 12) { + let offset = 8; + if (circle.classList.contains("right")) { + offset = 0; + } + x2 = circleX2 + offset; + } + + this.currentLine + .attr("id", function () { + return linkElement.attr("id") + circle.dataset.nodeId; + }) + .attr("d", d => { + d.to.x = x2; + d.to.y = y2; + d.to.elementId = circle.dataset.nodeId!; + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points, d.linkDirection); + }) + .attr("stroke", "var(--color-border-default)"); + if (this.currentArrow) { + this.currentArrow + .attr("xlink:href", function (_d) { + return `#${linkElement.attr("id")}`; + }) + .attr("fill", "var(--color-border-default)"); + } + + this.updateLink( + fromNodeId, + toNodeId, + linkElement.datum().from.x, + linkElement.datum().from.y, + linkElement.datum().to.x, + linkElement.datum().to.y, + linkElement.datum().linkDirection + ); + + this.currentLine = undefined; + this.currentArrow = undefined; + } +} + +export function updateLink( + this: FDag, + fromNodeId: string, + toNodeId: string, + x1: number = 0, + y1: number = 0, + x2: number = 0, + y2: number = 0, + linkDirection: FDagLinkDirection = "horizontal" +) { + let linkObject = this.config.links.find( + l => l.from.elementId === fromNodeId && l.to.elementId === toNodeId + ); + + if (!linkObject) { + linkObject = { + from: { + elementId: fromNodeId, + x: x1, + y: y1 + }, + to: { + elementId: toNodeId, + x: x2, + y: y2 + }, + linkDirection + }; + + this.config.links.push(linkObject); + } else { + linkObject.from = { + elementId: fromNodeId, + x: x1, + y: y1 + }; + linkObject.to = { + elementId: toNodeId, + x: x2, + y: y2 + }; + } +} + +export function generatePath( + this: FDag, + points: CoOrdinates[], + linkDirection: FDagLinkDirection = "horizontal" +) { + const { x: sx, y: sy } = points[0]; + const { x: dx, y: dy } = points[1]; + + if ( + linkDirection === "vertical" && + sx !== undefined && + sy !== undefined && + dx !== undefined && + dy !== undefined + ) { + const points = [ + { + x: sx, + y: sy + }, + { + x: sx, + y: (sy + dy) / 2 + }, + { + x: dx, + y: (sy + dy) / 2 + }, + { + x: dx, + y: dy + } + ]; + const angle = Math.abs(dx - sx) >= 24 ? 12 : Math.abs(dx - sx) / 2; + if (sy > dy) { + const rVLine = d3 + .line() + .x(p => p.x!) + .y(p => p.y!) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "vertical-reverse")); + return rVLine(points)!; + } + const vLine = d3 + .line() + .x(p => p.x!) + .y(p => p.y!) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "vertical")); + return vLine(points)!; + } else if (sx !== undefined && sy !== undefined && dx !== undefined && dy !== undefined) { + const points = [ + { + x: sx, + y: sy + }, + { + x: (sx + dx) / 2, + y: sy + }, + { + x: (sx + dx) / 2, + y: dy + }, + { + x: dx, + y: dy + } + ]; + const angle = Math.abs(dy - sy) >= 24 ? 12 : Math.abs(dy - sy) / 2; + + if (sx > dx) { + const rHLine = d3 + .line() + .x(p => p.x!) + .y(p => p.y!) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "horizontal-reverse")); + return rHLine(points)!; + } + const hLine = d3 + .line() + .x(p => p.x!) + .y(p => p.y!) + //@ts-expect-error @todo vikas to check + .curve(curveStep.angle(angle, "horizontal")); + return hLine(points)!; + } + return ``; +} diff --git a/packages/flow-lineage/src/components/f-dag/node-utils.ts b/packages/flow-lineage/src/components/f-dag/node-utils.ts new file mode 100644 index 000000000..ed81657c5 --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/node-utils.ts @@ -0,0 +1,211 @@ +import * as d3 from "d3"; +import type { CoOrdinates, FDagLink } from "./types"; +import type { FDag } from "./f-dag"; + +export function getTranslateValues(element: HTMLElement) { + const style = window.getComputedStyle(element); + const matrix = new DOMMatrixReadOnly(style.transform); + + // Extract translateX and translateY values + const translateX = matrix.m41; + const translateY = matrix.m42; + + return { translateX, translateY }; +} + +export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEvent) { + let translateX = nodeElement.dataset.lastTranslateX + ? +nodeElement.dataset.lastTranslateX + : undefined; + let translateY = nodeElement.dataset.lastTranslateY + ? +nodeElement.dataset.lastTranslateY + : undefined; + if (!translateX || !translateY) { + const translate = getTranslateValues(nodeElement); + translateX = translate.translateX; + translateY = translate.translateY; + } + + nodeElement.style.setProperty( + "transform", + `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` + ); + nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; + nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; + const fromLines = d3.selectAll( + `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` + ); + + fromLines.datum(d => { + if (!d.from.x) { + d.from.x = 0; + } + if (!d.from.y) { + d.from.y = 0; + } + return { + ...d, + from: { + x: (d.from.x += event.movementX), + y: (d.from.y += event.movementY), + elementId: d.from.elementId + } + }; + }); + + fromLines.attr("d", d => { + const points: CoOrdinates[] = []; + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points, d.linkDirection); + }); + + const toLines = d3.selectAll( + `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` + ); + + toLines.datum(d => { + if (!d.to.x) { + d.to.x = 0; + } + if (!d.to.y) { + d.to.y = 0; + } + return { + ...d, + to: { + x: (d.to.x += event.movementX), + y: (d.to.y += event.movementY), + elementId: d.to.elementId + } + }; + }); + toLines.attr("d", d => { + const points: CoOrdinates[] = []; + + points.push({ + x: d.from.x, + y: d.from.y + }); + points.push({ + x: d.to.x, + y: d.to.y + }); + + return this.generatePath(points, d.linkDirection).toString(); + }); +} + +export function dragNestedGroups(this: FDag, groupElement: HTMLElement, event: MouseEvent) { + if (groupElement.dataset.nodeType === "group") { + const groupNodes = this.querySelectorAll( + `[data-group="${groupElement.getAttribute("id")}"]` + ); + groupNodes.forEach(gn => { + this.moveElement(gn, event); + this.dragNestedGroups(gn, event); + }); + } +} +export function dragNode(this: FDag, event: MouseEvent) { + event.stopPropagation(); + if (event.buttons === 1 && this.currentLine === undefined) { + const nodeElement = event.currentTarget as HTMLElement; + nodeElement.style.zIndex = `3`; + if (nodeElement) { + this.moveElement(nodeElement, event); + this.dragNestedGroups(nodeElement, event); + } + } +} + +export function updateNodePosition(this: FDag, event: MouseEvent) { + const nodeElement = event.currentTarget as HTMLElement; + const { + top: nodeTop, + height: nodeHeight, + left: nodeLeft, + width: nodeWidth + } = nodeElement.getBoundingClientRect(); + if (nodeElement.dataset.nodeType === "group") { + nodeElement.style.zIndex = `1`; + } else { + nodeElement.style.zIndex = `2`; + } + + const allGroupsAndNodes = this.querySelectorAll(`[data-node-type="group"]`); + let insideGroup = false; + for (let index = 0; index < allGroupsAndNodes.length; index++) { + const group = allGroupsAndNodes.item(index); + const { top, height, left, width } = group.getBoundingClientRect(); + if ( + nodeTop > top && + nodeLeft > left && + nodeTop + nodeHeight < top + height && + nodeLeft + nodeWidth < left + width + ) { + insideGroup = true; + nodeElement.dataset.group = group.getAttribute("id")!; + } + } + + if (!insideGroup) { + delete nodeElement.dataset.group; + } + + let elementConfig; + if (nodeElement.dataset.nodeType === "group") { + elementConfig = this.config.groups.find(n => n.id === nodeElement.getAttribute("id")); + } else { + elementConfig = this.config.nodes.find(n => n.id === nodeElement.getAttribute("id")); + } + + if (elementConfig) { + elementConfig.group = nodeElement.dataset.group; + const { translateX, translateY } = getTranslateValues(nodeElement); + elementConfig.x = translateX; + elementConfig.y = translateY; + } + + const fromLines = d3.selectAll( + `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` + ); + const toLines = d3.selectAll( + `.dag-line[id$="->${nodeElement.getAttribute("id")}"]` + ); + + // eslint-disable-next-line @typescript-eslint/no-this-alias + const that = this; + fromLines.each(function (d) { + that.updateLink( + d.from.elementId, + d.to.elementId, + d.from.x, + d.from.y, + d.to.x, + d.to.y, + d.linkDirection + ); + }); + + toLines.each(function (d) { + that.updateLink( + d.from.elementId, + d.to.elementId, + d.from.x, + d.from.y, + d.to.x, + d.to.y, + d.linkDirection + ); + }); + + console.log(this.config); +} diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts new file mode 100644 index 000000000..10779451b --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -0,0 +1,25 @@ +export type CoOrdinates = { + x?: number; + y?: number; +}; +export type FDagElement = { + id: string; + label: string; + icon: string; + height: string; + width: string; + group?: string; +} & CoOrdinates; + +export type FDagLinkDirection = "horizontal" | "vertical"; +export type FDagLink = { + from: CoOrdinates & { elementId: string }; + to: CoOrdinates & { elementId: string }; + linkDirection?: FDagLinkDirection; +}; + +export type FDagConfig = { + nodes: FDagElement[]; + links: FDagLink[]; + groups: FDagElement[]; +}; From 8c56408254883392c631573dc3ed0538f9dc9db8 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 5 Jun 2024 18:37:00 +0530 Subject: [PATCH 22/64] f-dag-app auto node and group positioning --- .../src/components/f-dag/f-dag.ts | 142 +++++++++++++++- .../src/components/f-dag/types.ts | 8 +- packages/flow-lineage/src/index.ts | 1 + stories/flow-lineage/dag-config.ts | 160 ++++++++---------- 4 files changed, 212 insertions(+), 99 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 24f60c7a4..5d1f24d8e 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -8,7 +8,7 @@ import * as d3 from "d3"; import { property, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; -import type { CoOrdinates, FDagConfig, FDagLink } from "./types"; +import type { CoOrdinates, FDagConfig, FDagElement, FDagLink } from "./types"; import { dropLine, generatePath, @@ -19,6 +19,77 @@ import { injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent +export type HierarchyNode = { + id: string; + height: number; + width: number; + group?: string; + type: "group" | "node"; + children: HierarchyNode[]; +}; +function buildHierarchy(config: FDagConfig) { + const nodesMap = new Map(); + const groupMap = new Map(); + + config.groups.forEach(group => { + groupMap.set(group.id, group); + }); + + config.nodes.forEach(node => { + nodesMap.set(node.id, { + id: node.id, + group: node.group, + width: node.width, + type: "node", + height: node.height, + children: [] + }); + }); + + const roots: HierarchyNode[] = []; + + nodesMap.forEach(node => { + if (!node.group) { + roots.push(node); + } + }); + + function addGroupToHierarchy(group: FDagElement, parent?: HierarchyNode): void { + const groupNode: HierarchyNode = { + id: group.id, + type: "group", + height: group.height, + width: group.width, + children: [] + }; + + config.nodes.forEach(node => { + if (node.group === group.id) { + groupNode.children.push(nodesMap.get(node.id)!); + } + }); + + if (parent) { + parent.children.push(groupNode); + } else { + roots.push(groupNode); + } + + config.groups.forEach(subGroup => { + if (subGroup.group === group.id) { + addGroupToHierarchy(subGroup, groupNode); + } + }); + } + + config.groups.forEach(group => { + if (!group.group) { + addGroupToHierarchy(group); + } + }); + + return roots; +} @flowElement("f-dag") export class FDag extends FRoot { @@ -64,6 +135,67 @@ export class FDag extends FRoot { updateLink = updateLink; generatePath = generatePath; + protected willUpdate(changedProperties: PropertyValueMap | Map): void { + super.willUpdate(changedProperties); + + const rootNodes = buildHierarchy(this.config); + + const [spaceX, spaceY] = [100, 100]; + + const positionNodes = (elements: HierarchyNode[], x: number, y: number) => { + let maxX = 0; + let maxY = 0; + const minX = x; + const minY = y; + const nodes = elements.filter(e => e.type === "node"); + const groups = elements.filter(e => e.type === "group"); + let nodeY = y + 60; + nodes.forEach(n => { + const nodeObject = this.config.nodes.find(nd => nd.id === n.id)!; + nodeObject.x = x; + nodeObject.y = nodeY; + + if (x + nodeObject.width > maxX) { + maxX = x + nodeObject.width; + } + if (nodeY + nodeObject.height > maxY) { + maxY = nodeY + nodeObject.height; + } + nodeY += nodeObject.height + spaceY; + }); + x = maxX + spaceX; + y += 60; + groups.forEach(g => { + const groupObject = this.config.groups.find(nd => nd.id === g.id)!; + + groupObject.x = x; + groupObject.y = y; + + if (g.children && g.children.length > 0) { + const { width, height } = positionNodes(g.children, x + 20, y); + + groupObject.width = width; + groupObject.height = height + 20; + } + + if (x + groupObject.width > maxX) { + maxX = x + groupObject.width; + } + if (y + groupObject.height > maxY) { + maxY = y + groupObject.height; + } + + y += groupObject.height + spaceY; + }); + + return { + width: maxX - minX + 40, + height: maxY - minY + }; + }; + + positionNodes(rootNodes, 0, 0); + } render() { return html` @@ -86,8 +218,8 @@ export class FDag extends FRoot { state="secondary" align="middle-left" variant="curved" - .height=${n.height} - .width=${n.width} + .height=${n.height + "px"} + .width=${n.width + "px"} class="dag-node" gap="medium" border="small solid subtle around" @@ -115,8 +247,8 @@ export class FDag extends FRoot { return html` Date: Wed, 5 Jun 2024 18:38:54 +0530 Subject: [PATCH 23/64] f-dag-app auto node and group positioning --- stories/flow-lineage/dag-config.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 165c805a9..b87dbe334 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -160,8 +160,7 @@ const dagConfig: FDagConfig = { label: "Group 1", icon: "i-tree", height: 300, - width: 500, - group: "group2" + width: 500 }, { id: "group2", From 8fb988fdc2371b079aac063abc1e43fdc9854cc0 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 6 Jun 2024 14:08:38 +0530 Subject: [PATCH 24/64] f-dag-app placement algorithm updated --- .../src/components/f-dag/f-dag.ts | 110 +++++++++++------- stories/flow-lineage/dag-config.ts | 20 ++-- 2 files changed, 81 insertions(+), 49 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 5d1f24d8e..ed3cde451 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -26,6 +26,7 @@ export type HierarchyNode = { group?: string; type: "group" | "node"; children: HierarchyNode[]; + next?: HierarchyNode[]; }; function buildHierarchy(config: FDagConfig) { const nodesMap = new Map(); @@ -135,62 +136,93 @@ export class FDag extends FRoot { updateLink = updateLink; generatePath = generatePath; + getElement(id: string) { + let elementObj = this.config.nodes.find(n => n.id === id); + if (!elementObj) { + elementObj = this.config.groups.find(n => n.id === id); + } + return elementObj!; + } + protected willUpdate(changedProperties: PropertyValueMap | Map): void { super.willUpdate(changedProperties); const rootNodes = buildHierarchy(this.config); const [spaceX, spaceY] = [100, 100]; + const [defaultWidth, _defaultHeight] = [100, 100]; const positionNodes = (elements: HierarchyNode[], x: number, y: number) => { - let maxX = 0; - let maxY = 0; - const minX = x; - const minY = y; - const nodes = elements.filter(e => e.type === "node"); - const groups = elements.filter(e => e.type === "group"); - let nodeY = y + 60; - nodes.forEach(n => { - const nodeObject = this.config.nodes.find(nd => nd.id === n.id)!; - nodeObject.x = x; - nodeObject.y = nodeY; - - if (x + nodeObject.width > maxX) { - maxX = x + nodeObject.width; + const elementIds = elements.map(e => e.id); + + const nodeLinks = this.config.links.filter( + l => elementIds.includes(l.from.elementId) && elementIds.includes(l.to.elementId) + ); + const roots = new Set(elements); + const nonroots = new Set(); + nodeLinks.forEach(link => { + const fromElement = elements.find(e => e.id === link.from.elementId)!; + if (!nonroots.has(fromElement)) { + roots.add(fromElement); } - if (nodeY + nodeObject.height > maxY) { - maxY = nodeY + nodeObject.height; + if (!fromElement.next) { + fromElement.next = []; } - nodeY += nodeObject.height + spaceY; - }); - x = maxX + spaceX; - y += 60; - groups.forEach(g => { - const groupObject = this.config.groups.find(nd => nd.id === g.id)!; - - groupObject.x = x; - groupObject.y = y; - - if (g.children && g.children.length > 0) { - const { width, height } = positionNodes(g.children, x + 20, y); - groupObject.width = width; - groupObject.height = height + 20; + const toElement = elements.find(e => e.id === link.to.elementId)!; + if (roots.has(toElement)) { + roots.delete(toElement); } + nonroots.add(toElement); + fromElement.next.push(toElement); + }); - if (x + groupObject.width > maxX) { - maxX = x + groupObject.width; - } - if (y + groupObject.height > maxY) { - maxY = y + groupObject.height; - } + const initialY = y; + let maxX = 0; + let maxY = 0; + const minX = x; + const minY = y; + const calculateCords = (ns: HierarchyNode[]) => { + const nexts: HierarchyNode[] = []; + let maxWidth = defaultWidth; + ns.forEach(n => { + const elementObject = this.getElement(n.id); + if (!elementObject.x && !elementObject.y) { + elementObject.x = x; + elementObject.y = y; + + if (n.type === "group" && n.children && n.children.length > 0) { + const { width, height } = positionNodes(n.children, x + 20, y + 60); + + elementObject.width = width; + elementObject.height = height + 20; + } + if (x + elementObject.width > maxX) { + maxX = x + elementObject.width; + } + if (y + elementObject.height > maxY) { + maxY = y + elementObject.height; + } + + y += elementObject.height + spaceY; + + if (elementObject.width > maxWidth) { + maxWidth = elementObject.width; + } + + if (n.next) nexts.push(...n.next); + } + }); + x += maxWidth + spaceX; + y = initialY; - y += groupObject.height + spaceY; - }); + if (nexts.length > 0) calculateCords(nexts); + }; + calculateCords(Array.from(roots)); return { width: maxX - minX + 40, - height: maxY - minY + height: maxY - minY + 60 }; }; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index b87dbe334..f327a37c9 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -81,12 +81,21 @@ const dagConfig: FDagConfig = { }, linkDirection: "vertical" }, + { + from: { + elementId: "node2" + }, + to: { + elementId: "group1" + }, + linkDirection: "vertical" + }, { from: { elementId: "group1" }, to: { - elementId: "node2" + elementId: "group2" }, linkDirection: "vertical" }, @@ -135,15 +144,6 @@ const dagConfig: FDagConfig = { }, linkDirection: "horizontal" }, - { - from: { - elementId: "node1" - }, - to: { - elementId: "node2" - }, - linkDirection: "vertical" - }, { from: { elementId: "node5" From 45e92eff51cfb8283b1df95aa4cd114ed7e453df Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 6 Jun 2024 15:37:32 +0530 Subject: [PATCH 25/64] f-dag-app links added --- .../src/components/f-dag/f-dag.ts | 40 ++++++++++-- .../src/components/f-dag/types.ts | 8 +++ stories/flow-lineage/dag-config.ts | 63 +++++++++---------- 3 files changed, 75 insertions(+), 36 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index ed3cde451..0d3b78522 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -149,10 +149,15 @@ export class FDag extends FRoot { const rootNodes = buildHierarchy(this.config); - const [spaceX, spaceY] = [100, 100]; const [defaultWidth, _defaultHeight] = [100, 100]; - const positionNodes = (elements: HierarchyNode[], x: number, y: number) => { + const positionNodes = ( + elements: HierarchyNode[], + x: number, + y: number, + spaceX = 100, + spaceY = 100 + ) => { const elementIds = elements.map(e => e.id); const nodeLinks = this.config.links.filter( @@ -192,7 +197,13 @@ export class FDag extends FRoot { elementObject.y = y; if (n.type === "group" && n.children && n.children.length > 0) { - const { width, height } = positionNodes(n.children, x + 20, y + 60); + const { width, height } = positionNodes( + n.children, + x + 20, + y + 60, + elementObject.spacing?.x, + elementObject.spacing?.y + ); elementObject.width = width; elementObject.height = height + 20; @@ -226,7 +237,7 @@ export class FDag extends FRoot { }; }; - positionNodes(rootNodes, 0, 0); + positionNodes(rootNodes, 0, 0, this.config.spacing?.x, this.config.spacing?.y); } render() { return html` @@ -321,6 +332,27 @@ export class FDag extends FRoot { }) .attr("d", d => { const points: CoOrdinates[] = []; + + if (!d.to.x && !d.to.y && !d.from.x && !d.from.y) { + const fromElement = this.getElement(d.from.elementId); + d.from.x = fromElement.x; + d.from.y = fromElement.y; + + const toElement = this.getElement(d.to.elementId); + d.to.x = toElement.x; + d.to.y = toElement.y; + + d.linkDirection = "horizontal"; + if (d.to.x! > d.from.x!) { + d.from.x! += fromElement.width; + d.from.y! += fromElement.height / 2; + d.to.y! += toElement.height / 2; + } else { + d.from.y! += fromElement.height / 2; + d.to.x! += fromElement.width; + d.to.y! += toElement.height / 2; + } + } points.push({ x: d.from.x, y: d.from.y diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 96c7c3ab3..bc686a4f8 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -9,6 +9,10 @@ export type FDagElement = { height: number; width: number; group?: string; + spacing?: { + x: number; + y: number; + }; } & CoOrdinates; export type FDagLinkDirection = "horizontal" | "vertical"; @@ -22,6 +26,10 @@ export type FDagConfig = { nodes: FDagElement[]; links: FDagLink[]; groups: FDagElement[]; + spacing?: { + x: number; + y: number; + }; }; export type FDagComputedNode = { diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index f327a37c9..f1a91c88a 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -83,19 +83,10 @@ const dagConfig: FDagConfig = { }, { from: { - elementId: "node2" - }, - to: { - elementId: "group1" - }, - linkDirection: "vertical" - }, - { - from: { - elementId: "group1" + elementId: "node1" }, to: { - elementId: "group2" + elementId: "node3" }, linkDirection: "vertical" }, @@ -104,13 +95,13 @@ const dagConfig: FDagConfig = { elementId: "node2" }, to: { - elementId: "node4" + elementId: "group1" }, linkDirection: "vertical" }, { from: { - elementId: "group3" + elementId: "group1" }, to: { elementId: "group2" @@ -119,19 +110,10 @@ const dagConfig: FDagConfig = { }, { from: { - elementId: "node3" - }, - to: { - elementId: "node1" - }, - linkDirection: "horizontal" - }, - { - from: { - elementId: "node3" + elementId: "node2" }, to: { - elementId: "node2" + elementId: "node4" }, linkDirection: "vertical" }, @@ -140,16 +122,17 @@ const dagConfig: FDagConfig = { elementId: "group3" }, to: { - elementId: "node2" + elementId: "group2" }, - linkDirection: "horizontal" + linkDirection: "vertical" }, + { from: { elementId: "node5" }, to: { - elementId: "node4" + elementId: "node6" }, linkDirection: "vertical" } @@ -160,14 +143,22 @@ const dagConfig: FDagConfig = { label: "Group 1", icon: "i-tree", height: 300, - width: 500 + width: 500, + spacing: { + x: 50, + y: 50 + } }, { id: "group2", label: "Group 2", icon: "i-tree", height: 300, - width: 500 + width: 500, + spacing: { + x: 50, + y: 50 + } }, { id: "group3", @@ -176,7 +167,11 @@ const dagConfig: FDagConfig = { height: 150, width: 250, - group: "group1" + group: "group1", + spacing: { + x: 50, + y: 50 + } }, { id: "group4", @@ -185,9 +180,13 @@ const dagConfig: FDagConfig = { height: 150, width: 250, - group: "group2" + group: "group1" } - ] + ], + spacing: { + x: 100, + y: 50 + } }; export default dagConfig; From e90d23e2283dfd183296e75257f38377df2fdd6b Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 6 Jun 2024 15:52:52 +0530 Subject: [PATCH 26/64] f-dag-app vertical layout options --- .../src/components/f-dag/f-dag.ts | 52 ++++++++++++++----- .../src/components/f-dag/types.ts | 1 + stories/flow-lineage/dag-config.ts | 7 ++- 3 files changed, 43 insertions(+), 17 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 0d3b78522..d094b5ca3 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -149,7 +149,7 @@ export class FDag extends FRoot { const rootNodes = buildHierarchy(this.config); - const [defaultWidth, _defaultHeight] = [100, 100]; + const [defaultWidth, defaultHeight] = [100, 100]; const positionNodes = ( elements: HierarchyNode[], @@ -183,6 +183,7 @@ export class FDag extends FRoot { }); const initialY = y; + const initialX = x; let maxX = 0; let maxY = 0; const minX = x; @@ -190,6 +191,7 @@ export class FDag extends FRoot { const calculateCords = (ns: HierarchyNode[]) => { const nexts: HierarchyNode[] = []; let maxWidth = defaultWidth; + let maxHeight = defaultHeight; ns.forEach(n => { const elementObject = this.getElement(n.id); if (!elementObject.x && !elementObject.y) { @@ -215,17 +217,29 @@ export class FDag extends FRoot { maxY = y + elementObject.height; } - y += elementObject.height + spaceY; + if (this.config.layoutDirection === "vertical") { + x += elementObject.width + spaceX; + } else { + y += elementObject.height + spaceY; + } if (elementObject.width > maxWidth) { maxWidth = elementObject.width; } + if (elementObject.height > maxHeight) { + maxHeight = elementObject.height; + } if (n.next) nexts.push(...n.next); } }); - x += maxWidth + spaceX; - y = initialY; + if (this.config.layoutDirection === "vertical") { + y += maxHeight + spaceY; + x = initialX; + } else { + x += maxWidth + spaceX; + y = initialY; + } if (nexts.length > 0) calculateCords(nexts); }; @@ -341,16 +355,28 @@ export class FDag extends FRoot { const toElement = this.getElement(d.to.elementId); d.to.x = toElement.x; d.to.y = toElement.y; - - d.linkDirection = "horizontal"; - if (d.to.x! > d.from.x!) { - d.from.x! += fromElement.width; - d.from.y! += fromElement.height / 2; - d.to.y! += toElement.height / 2; + if (this.config.layoutDirection === "horizontal") { + d.linkDirection = "horizontal"; + if (d.to.x! > d.from.x!) { + d.from.x! += fromElement.width; + d.from.y! += fromElement.height / 2; + d.to.y! += toElement.height / 2; + } else { + d.from.y! += fromElement.height / 2; + d.to.x! += fromElement.width; + d.to.y! += toElement.height / 2; + } } else { - d.from.y! += fromElement.height / 2; - d.to.x! += fromElement.width; - d.to.y! += toElement.height / 2; + d.linkDirection = "vertical"; + if (d.to.y! > d.from.y!) { + d.from.x! += fromElement.width / 2; + d.from.y! += fromElement.height; + d.to.x! += toElement.width / 2; + } else { + d.from.x! += fromElement.width / 2; + d.to.x! += fromElement.width / 2; + d.to.y! += toElement.height; + } } } points.push({ diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index bc686a4f8..41d872d7c 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -30,6 +30,7 @@ export type FDagConfig = { x: number; y: number; }; + layoutDirection?: "horizontal" | "vertical"; }; export type FDagComputedNode = { diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index f1a91c88a..9cde29984 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -113,7 +113,7 @@ const dagConfig: FDagConfig = { elementId: "node2" }, to: { - elementId: "node4" + elementId: "group3" }, linkDirection: "vertical" }, @@ -166,8 +166,6 @@ const dagConfig: FDagConfig = { icon: "i-tree", height: 150, width: 250, - - group: "group1", spacing: { x: 50, y: 50 @@ -186,7 +184,8 @@ const dagConfig: FDagConfig = { spacing: { x: 100, y: 50 - } + }, + layoutDirection: "vertical" }; export default dagConfig; From 7feeafd125e56006194177f585e5f8236abc5b16 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 6 Jun 2024 17:54:03 +0530 Subject: [PATCH 27/64] f-dag-app created clean digram --- .../src/components/f-dag/f-dag.ts | 33 +++++++++++---- stories/flow-lineage/dag-config.ts | 41 +++++++------------ 2 files changed, 40 insertions(+), 34 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index d094b5ca3..fec269ef9 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -335,6 +335,11 @@ export class FDag extends FRoot { protected updated(changedProperties: PropertyValueMap | Map): void { super.updated(changedProperties); + function randomIntFromInterval(min: number, max: number) { + // min and max included + return Math.floor(Math.random() * (max - min + 1) + min); + } + const svg = d3.select(this.svgElement.value!); svg .selectAll("path.dag-line") @@ -359,22 +364,34 @@ export class FDag extends FRoot { d.linkDirection = "horizontal"; if (d.to.x! > d.from.x!) { d.from.x! += fromElement.width; - d.from.y! += fromElement.height / 2; - d.to.y! += toElement.height / 2; + d.from.y! += randomIntFromInterval( + fromElement.height / 3, + fromElement.height * (2 / 3) + ); + d.to.y! += randomIntFromInterval(toElement.height / 3, toElement.height * (2 / 3)); } else { - d.from.y! += fromElement.height / 2; + d.from.y! += randomIntFromInterval( + fromElement.height / 3, + fromElement.height * (2 / 3) + ); d.to.x! += fromElement.width; - d.to.y! += toElement.height / 2; + d.to.y! += randomIntFromInterval(toElement.height / 3, toElement.height * (2 / 3)); } } else { d.linkDirection = "vertical"; if (d.to.y! > d.from.y!) { - d.from.x! += fromElement.width / 2; + d.from.x! += randomIntFromInterval( + fromElement.width / 3, + fromElement.width * (2 / 3) + ); d.from.y! += fromElement.height; - d.to.x! += toElement.width / 2; + d.to.x! += randomIntFromInterval(toElement.width / 3, toElement.width * (2 / 3)); } else { - d.from.x! += fromElement.width / 2; - d.to.x! += fromElement.width / 2; + d.from.x! += randomIntFromInterval( + fromElement.width / 3, + fromElement.width * (2 / 3) + ); + d.to.x! += randomIntFromInterval(toElement.width / 3, toElement.width * (2 / 3)); d.to.y! += toElement.height; } } diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 9cde29984..17a778dfe 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -60,6 +60,13 @@ const dagConfig: FDagConfig = { width: 100, group: "group4" + }, + { + id: "node8", + label: "Node 8", + icon: "i-box", + height: 48, + width: 100 } ], links: [ @@ -68,7 +75,7 @@ const dagConfig: FDagConfig = { elementId: "node1" }, to: { - elementId: "node5" + elementId: "group4" }, linkDirection: "horizontal" }, @@ -76,24 +83,6 @@ const dagConfig: FDagConfig = { from: { elementId: "node1" }, - to: { - elementId: "node3" - }, - linkDirection: "vertical" - }, - { - from: { - elementId: "node1" - }, - to: { - elementId: "node3" - }, - linkDirection: "vertical" - }, - { - from: { - elementId: "node2" - }, to: { elementId: "group1" }, @@ -101,10 +90,10 @@ const dagConfig: FDagConfig = { }, { from: { - elementId: "group1" + elementId: "node3" }, to: { - elementId: "group2" + elementId: "node4" }, linkDirection: "vertical" }, @@ -119,20 +108,19 @@ const dagConfig: FDagConfig = { }, { from: { - elementId: "group3" + elementId: "group1" }, to: { elementId: "group2" }, linkDirection: "vertical" }, - { from: { - elementId: "node5" + elementId: "node6" }, to: { - elementId: "node6" + elementId: "node8" }, linkDirection: "vertical" } @@ -169,7 +157,8 @@ const dagConfig: FDagConfig = { spacing: { x: 50, y: 50 - } + }, + group: "group4" }, { id: "group4", From 304a3aa7193ff4c4a1188b743d7a4289a9782b0d Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 7 Jun 2024 17:34:17 +0530 Subject: [PATCH 28/64] f-dag-app zoom in /zoom out and drag features --- .../src/components/f-dag/f-dag-global.scss | 10 ++ .../src/components/f-dag/f-dag.ts | 168 +++++++++++------- .../src/components/f-dag/link-utils.ts | 12 ++ 3 files changed, 123 insertions(+), 67 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index ff06cd54f..716c2c9d4 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -27,6 +27,7 @@ f-dag { height: 100%; z-index: 10; pointer-events: none; + overflow: visible; } .dag-line { fill: none; @@ -73,6 +74,15 @@ f-dag { } } } + .d-dag-root { + cursor: pointer; + &:active { + cursor: grabbing; + } + } + .dag-view-port { + overflow: visible; + } } f-div[direction="column"] { diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index fec269ef9..9ab39b1e1 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -5,7 +5,7 @@ import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; -import { property, queryAll } from "lit/decorators.js"; +import { property, query, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; import type { CoOrdinates, FDagConfig, FDagElement, FDagLink } from "./types"; @@ -109,10 +109,19 @@ export class FDag extends FRoot { @queryAll(`.dag-node[data-node-type="node"]`) allNodes?: HTMLElement[]; + @query(`.dag-view-port`) + dagViewPort!: HTMLElement; + @query(`.background-pattern`) + backgroundPattern!: HTMLElement; + createRenderRoot() { return this; } scale = 1; + viewPortTranslate = { + x: 0, + y: 0 + }; svgElement: Ref = createRef(); currentLine?: d3.Selection; @@ -253,83 +262,108 @@ export class FDag extends FRoot { positionNodes(rootNodes, 0, 0, this.config.spacing?.x, this.config.spacing?.y); } + handleZoom(event: WheelEvent) { + // const chartContainer = event.currentTarget as HTMLElement; + this.scale += event.deltaY * -0.01; + + // Restrict scale + this.scale = Math.min(Math.max(0.4, this.scale), 4); + + // Apply scale transform + + this.dagViewPort.style.transform = `scale(${this.scale}) translate(${this.viewPortTranslate.x}px,${this.viewPortTranslate.y}px)`; + this.backgroundPattern.setAttribute("width", `${24 * this.scale}`); + this.backgroundPattern.setAttribute("height", `${24 * this.scale}`); + } render() { - return html` - + return html` + - + - ${this.config.nodes.map(n => { - return html` - - ${n.label} - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - `; - })} - ${this.config.groups.map(g => { - return html` - - - ${g.label} - - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - `; - })} - + + ${this.config.nodes.map(n => { + return html` + + ${n.label} + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + `; + })} + ${this.config.groups.map(g => { + return html` + + + ${g.label} + + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + `; + })} + + `; } protected updated(changedProperties: PropertyValueMap | Map): void { diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index 40ec92186..7f822dc7f 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -120,6 +120,18 @@ export function updateLinePath(this: FDag, event: MouseEvent) { this.currentLine = undefined; this.currentArrow?.remove(); this.currentArrow = undefined; + + if (event.buttons === 1) { + this.viewPortTranslate.x += event.movementX; + this.viewPortTranslate.y += event.movementY; + this.backgroundPattern.setAttribute( + "patternTransform", + `translate(${this.viewPortTranslate.x * this.scale},${ + this.viewPortTranslate.y * this.scale + })` + ); + this.dagViewPort.style.transform = `scale(${this.scale}) translate(${this.viewPortTranslate.x}px,${this.viewPortTranslate.y}px)`; + } } } export function dropLine(this: FDag, event: MouseEvent) { From 7737e848a147240fcf650d56c0d3e5c89037afd2 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 7 Jun 2024 18:33:45 +0530 Subject: [PATCH 29/64] f-dag-app translate offset addded while plotting line --- .../src/components/f-dag/link-utils.ts | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index 7f822dc7f..431bc3e24 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -12,11 +12,11 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { const rect = circle.getBoundingClientRect(); const dagRect = this.getBoundingClientRect(); const svg = d3.select(this.svgElement.value!); - const circleX = rect.left - dagRect.left; - const circleY = rect.top - dagRect.top; + const circleX = rect.left - dagRect.left - this.viewPortTranslate.x; + const circleY = rect.top - dagRect.top - this.viewPortTranslate.y; - let x1 = event.clientX - dagRect.left; - let y1 = event.clientY - dagRect.top; + let x1 = event.clientX - dagRect.left - this.viewPortTranslate.x; + let y1 = event.clientY - dagRect.top - this.viewPortTranslate.y; if (Math.abs(x1 - circleX) <= 12) { let offset = 8; @@ -45,8 +45,8 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { elementId: circle.dataset.nodeId! }, to: { - x: event.clientX - dagRect.left, - y: event.clientY - dagRect.top, + x: event.clientX - dagRect.left - this.viewPortTranslate.x, + y: event.clientY - dagRect.top - this.viewPortTranslate.y, elementId: `` }, linkDirection @@ -97,8 +97,8 @@ export function updateLinePath(this: FDag, event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { const dagRect = this.getBoundingClientRect(); this.currentLine.attr("d", d => { - d.to.x = event.clientX - dagRect.left; - d.to.y = event.clientY - dagRect.top; + d.to.x = event.clientX - dagRect.left - this.viewPortTranslate.x; + d.to.y = event.clientY - dagRect.top - this.viewPortTranslate.y; const points: CoOrdinates[] = []; points.push({ @@ -146,11 +146,11 @@ export function dropLine(this: FDag, event: MouseEvent) { const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); const toNodeId = circle.dataset.nodeId!; - let x2 = event.clientX - dagRect.left; - let y2 = event.clientY - dagRect.top; + let x2 = event.clientX - dagRect.left - this.viewPortTranslate.x; + let y2 = event.clientY - dagRect.top - this.viewPortTranslate.y; - const circleX2 = rect.left - dagRect.left; - const circleY2 = rect.top - dagRect.top; + const circleX2 = rect.left - dagRect.left - this.viewPortTranslate.x; + const circleY2 = rect.top - dagRect.top - this.viewPortTranslate.y; if (Math.abs(y2 - circleY2) <= 12) { let offset = 8; From 30fa8f5cb114b4485515560fa5441563ae1b181a Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 10 Jun 2024 13:01:25 +0530 Subject: [PATCH 30/64] f-dag-app height and width made optional --- .../src/components/f-dag/f-dag.ts | 75 ++++++++++++------- .../src/components/f-dag/link-utils.ts | 16 ++-- .../src/components/f-dag/node-utils.ts | 8 +- .../src/components/f-dag/types.ts | 17 ++++- stories/flow-lineage/dag-config.ts | 62 +++++---------- 5 files changed, 92 insertions(+), 86 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 9ab39b1e1..fd48ac577 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -21,8 +21,8 @@ injectCss("f-dag", globalStyle); // Renders attribute names of parent element to textContent export type HierarchyNode = { id: string; - height: number; - width: number; + height?: number; + width?: number; group?: string; type: "group" | "node"; children: HierarchyNode[]; @@ -123,6 +123,13 @@ export class FDag extends FRoot { y: 0 }; + get defaultElementWidth(): number { + return this.config.defaultNodeSize?.width ?? 50; + } + get defaultElementHeight(): number { + return this.config.defaultNodeSize?.height ?? 50; + } + svgElement: Ref = createRef(); currentLine?: d3.Selection; currentArrow?: d3.Selection; @@ -158,8 +165,6 @@ export class FDag extends FRoot { const rootNodes = buildHierarchy(this.config); - const [defaultWidth, defaultHeight] = [100, 100]; - const positionNodes = ( elements: HierarchyNode[], x: number, @@ -199,8 +204,8 @@ export class FDag extends FRoot { const minY = y; const calculateCords = (ns: HierarchyNode[]) => { const nexts: HierarchyNode[] = []; - let maxWidth = defaultWidth; - let maxHeight = defaultHeight; + let maxWidth = this.defaultElementWidth; + let maxHeight = this.defaultElementHeight; ns.forEach(n => { const elementObject = this.getElement(n.id); if (!elementObject.x && !elementObject.y) { @@ -218,6 +223,13 @@ export class FDag extends FRoot { elementObject.width = width; elementObject.height = height + 20; + } else { + if (!elementObject.width) { + elementObject.width = this.defaultElementWidth; + } + if (!elementObject.height) { + elementObject.height = this.defaultElementHeight; + } } if (x + elementObject.width > maxX) { maxX = x + elementObject.width; @@ -337,8 +349,8 @@ export class FDag extends FRoot { return html` - + ${g.label} @@ -395,38 +414,38 @@ export class FDag extends FRoot { d.to.x = toElement.x; d.to.y = toElement.y; if (this.config.layoutDirection === "horizontal") { - d.linkDirection = "horizontal"; + d.direction = "horizontal"; if (d.to.x! > d.from.x!) { - d.from.x! += fromElement.width; + d.from.x! += fromElement.width!; d.from.y! += randomIntFromInterval( - fromElement.height / 3, - fromElement.height * (2 / 3) + fromElement.height! / 3, + fromElement.height! * (2 / 3) ); - d.to.y! += randomIntFromInterval(toElement.height / 3, toElement.height * (2 / 3)); + d.to.y! += randomIntFromInterval(toElement.height! / 3, toElement.height! * (2 / 3)); } else { d.from.y! += randomIntFromInterval( - fromElement.height / 3, - fromElement.height * (2 / 3) + fromElement.height! / 3, + fromElement.height! * (2 / 3) ); - d.to.x! += fromElement.width; - d.to.y! += randomIntFromInterval(toElement.height / 3, toElement.height * (2 / 3)); + d.to.x! += fromElement.width!; + d.to.y! += randomIntFromInterval(toElement.height! / 3, toElement.height! * (2 / 3)); } } else { - d.linkDirection = "vertical"; + d.direction = "vertical"; if (d.to.y! > d.from.y!) { d.from.x! += randomIntFromInterval( - fromElement.width / 3, - fromElement.width * (2 / 3) + fromElement.width! / 3, + fromElement.width! * (2 / 3) ); - d.from.y! += fromElement.height; - d.to.x! += randomIntFromInterval(toElement.width / 3, toElement.width * (2 / 3)); + d.from.y! += fromElement.height!; + d.to.x! += randomIntFromInterval(toElement.width! / 3, toElement.width! * (2 / 3)); } else { d.from.x! += randomIntFromInterval( - fromElement.width / 3, - fromElement.width * (2 / 3) + fromElement.width! / 3, + fromElement.width! * (2 / 3) ); - d.to.x! += randomIntFromInterval(toElement.width / 3, toElement.width * (2 / 3)); - d.to.y! += toElement.height; + d.to.x! += randomIntFromInterval(toElement.width! / 3, toElement.width! * (2 / 3)); + d.to.y! += toElement.height!; } } } @@ -439,7 +458,7 @@ export class FDag extends FRoot { y: d.to.y }); - return this.generatePath(points, d.linkDirection)!.toString(); + return this.generatePath(points, d.direction)!.toString(); }) .attr("stroke", "var(--color-border-default)"); diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index 431bc3e24..b09480422 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -34,7 +34,7 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { y1 = circleY + offset; } - const linkDirection = + const direction = circle.classList.contains("right") || circle.classList.contains("left") ? "horizontal" : "vertical"; @@ -49,7 +49,7 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { y: event.clientY - dagRect.top - this.viewPortTranslate.y, elementId: `` }, - linkDirection + direction }; this.currentLine = svg @@ -68,7 +68,7 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { y: d.to.y }); - return this.generatePath(points, d.linkDirection); + return this.generatePath(points, d.direction); }) .attr("stroke", "var(--color-primary-default)"); @@ -110,7 +110,7 @@ export function updateLinePath(this: FDag, event: MouseEvent) { y: d.to.y }); - return this.generatePath(points, d.linkDirection); + return this.generatePath(points, d.direction); }); } else { this.allGroupsAndNodes?.forEach(n => { @@ -185,7 +185,7 @@ export function dropLine(this: FDag, event: MouseEvent) { y: d.to.y }); - return this.generatePath(points, d.linkDirection); + return this.generatePath(points, d.direction); }) .attr("stroke", "var(--color-border-default)"); if (this.currentArrow) { @@ -203,7 +203,7 @@ export function dropLine(this: FDag, event: MouseEvent) { linkElement.datum().from.y, linkElement.datum().to.x, linkElement.datum().to.y, - linkElement.datum().linkDirection + linkElement.datum().direction ); this.currentLine = undefined; @@ -219,7 +219,7 @@ export function updateLink( y1: number = 0, x2: number = 0, y2: number = 0, - linkDirection: FDagLinkDirection = "horizontal" + direction: FDagLinkDirection = "horizontal" ) { let linkObject = this.config.links.find( l => l.from.elementId === fromNodeId && l.to.elementId === toNodeId @@ -237,7 +237,7 @@ export function updateLink( x: x2, y: y2 }, - linkDirection + direction }; this.config.links.push(linkObject); diff --git a/packages/flow-lineage/src/components/f-dag/node-utils.ts b/packages/flow-lineage/src/components/f-dag/node-utils.ts index ed81657c5..f66a7ba55 100644 --- a/packages/flow-lineage/src/components/f-dag/node-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/node-utils.ts @@ -64,7 +64,7 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv y: d.to.y }); - return this.generatePath(points, d.linkDirection); + return this.generatePath(points, d.direction); }); const toLines = d3.selectAll( @@ -99,7 +99,7 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv y: d.to.y }); - return this.generatePath(points, d.linkDirection).toString(); + return this.generatePath(points, d.direction).toString(); }); } @@ -191,7 +191,7 @@ export function updateNodePosition(this: FDag, event: MouseEvent) { d.from.y, d.to.x, d.to.y, - d.linkDirection + d.direction ); }); @@ -203,7 +203,7 @@ export function updateNodePosition(this: FDag, event: MouseEvent) { d.from.y, d.to.x, d.to.y, - d.linkDirection + d.direction ); }); diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 41d872d7c..03de23961 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -6,30 +6,39 @@ export type FDagElement = { id: string; label: string; icon: string; - height: number; - width: number; + height?: number; + width?: number; group?: string; spacing?: { x: number; y: number; }; + placement?: { + section: number; + position: "before" | "after"; + elementId?: string; + }; } & CoOrdinates; export type FDagLinkDirection = "horizontal" | "vertical"; export type FDagLink = { from: CoOrdinates & { elementId: string }; to: CoOrdinates & { elementId: string }; - linkDirection?: FDagLinkDirection; + direction?: FDagLinkDirection; }; export type FDagConfig = { nodes: FDagElement[]; links: FDagLink[]; - groups: FDagElement[]; + groups: Omit[]; spacing?: { x: number; y: number; }; + defaultNodeSize?: { + width: number; + height: number; + }; layoutDirection?: "horizontal" | "vertical"; }; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 17a778dfe..38781477c 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -5,33 +5,23 @@ const dagConfig: FDagConfig = { { id: "node1", label: "Node 1", - icon: "i-box", - height: 48, - width: 200 + icon: "i-box" }, { id: "node2", label: "Node 2", - icon: "i-box", - height: 48, - width: 200 + icon: "i-box" }, { id: "node3", label: "Node 3", icon: "i-box", - height: 48, - width: 200, - group: "group1" }, { id: "node4", label: "Node 4", icon: "i-box", - height: 48, - width: 200, - group: "group2" }, { @@ -40,7 +30,6 @@ const dagConfig: FDagConfig = { icon: "i-box", height: 48, width: 100, - group: "group3" }, { @@ -49,7 +38,6 @@ const dagConfig: FDagConfig = { icon: "i-box", height: 48, width: 100, - group: "group3" }, { @@ -58,15 +46,12 @@ const dagConfig: FDagConfig = { icon: "i-box", height: 48, width: 100, - group: "group4" }, { id: "node8", label: "Node 8", - icon: "i-box", - height: 48, - width: 100 + icon: "i-box" } ], links: [ @@ -76,8 +61,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "group4" - }, - linkDirection: "horizontal" + } }, { from: { @@ -85,8 +69,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "group1" - }, - linkDirection: "vertical" + } }, { from: { @@ -94,8 +77,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "node4" - }, - linkDirection: "vertical" + } }, { from: { @@ -103,8 +85,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "group3" - }, - linkDirection: "vertical" + } }, { from: { @@ -112,8 +93,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "group2" - }, - linkDirection: "vertical" + } }, { from: { @@ -121,8 +101,7 @@ const dagConfig: FDagConfig = { }, to: { elementId: "node8" - }, - linkDirection: "vertical" + } } ], groups: [ @@ -130,8 +109,6 @@ const dagConfig: FDagConfig = { id: "group1", label: "Group 1", icon: "i-tree", - height: 300, - width: 500, spacing: { x: 50, y: 50 @@ -141,8 +118,6 @@ const dagConfig: FDagConfig = { id: "group2", label: "Group 2", icon: "i-tree", - height: 300, - width: 500, spacing: { x: 50, y: 50 @@ -152,11 +127,9 @@ const dagConfig: FDagConfig = { id: "group3", label: "Group 3", icon: "i-tree", - height: 150, - width: 250, spacing: { - x: 50, - y: 50 + x: 20, + y: 20 }, group: "group4" }, @@ -164,9 +137,10 @@ const dagConfig: FDagConfig = { id: "group4", label: "Group 4", icon: "i-tree", - height: 150, - width: 250, - + spacing: { + x: 20, + y: 20 + }, group: "group1" } ], @@ -174,7 +148,11 @@ const dagConfig: FDagConfig = { x: 100, y: 50 }, - layoutDirection: "vertical" + defaultNodeSize: { + width: 200, + height: 48 + }, + layoutDirection: "horizontal" }; export default dagConfig; From e0a1adc6bcc4dd88079c25b15660f2d5a9203f70 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 11 Jun 2024 15:07:51 +0530 Subject: [PATCH 31/64] f-dag-app lock file updated --- pnpm-lock.yaml | 2334 +++++++----------------------------------------- 1 file changed, 303 insertions(+), 2031 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 448f25c7a..446c5d7df 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,5 +1,4 @@ lockfileVersion: '9.0' -lockfileVersion: '9.0' settings: autoInstallPeers: true @@ -11,7 +10,7 @@ importers: dependencies: '@ollion/flow-aws-icon': specifier: latest - version: 1.9.1(@ollion/flow-core-config@packages+flow-core-config) + version: 1.9.1(@ollion/flow-core-config@1.1.3) '@ollion/flow-code-editor': specifier: workspace:* version: link:packages/flow-code-editor @@ -26,7 +25,7 @@ importers: version: link:packages/flow-form-builder '@ollion/flow-gcp-icon': specifier: latest - version: 1.8.1(@ollion/flow-core-config@packages+flow-core-config) + version: 1.8.1(@ollion/flow-core-config@1.1.3) '@ollion/flow-lineage': specifier: workspace:* version: link:packages/flow-lineage @@ -38,10 +37,10 @@ importers: version: link:packages/flow-md-editor '@ollion/flow-product-icon': specifier: 1.14.0 - version: 1.14.0(@ollion/flow-core-config@packages+flow-core-config) + version: 1.14.0(@ollion/flow-core-config@1.1.3) '@ollion/flow-system-icon': specifier: latest - version: 1.16.1(@ollion/flow-core-config@packages+flow-core-config) + version: 1.16.1(@ollion/flow-core-config@1.1.3) '@ollion/flow-table': specifier: workspace:* version: link:packages/flow-table @@ -75,7 +74,7 @@ importers: version: 7.6.7 '@storybook/addon-essentials': specifier: ^7.5.3 - version: 7.6.7(react-dom@18.2.0)(react@18.2.0) + version: 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-links': specifier: ^7.5.3 version: 7.6.7(react@18.2.0) @@ -87,13 +86,13 @@ importers: version: 7.6.7 '@storybook/blocks': specifier: ^7.5.3 - version: 7.6.7(react-dom@18.2.0)(react@18.2.0) + version: 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/web-components': specifier: ^7.5.3 - version: 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0) + version: 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/web-components-vite': specifier: ^7.5.3 - version: 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1) + version: 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7)) '@types/d3': specifier: 7.4.3 version: 7.4.3 @@ -108,7 +107,7 @@ importers: version: 3.0.0 '@typescript-eslint/eslint-plugin': specifier: ^6.7.5 - version: 6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3) + version: 6.18.1(@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': specifier: ^6.7.5 version: 6.18.1(eslint@8.56.0)(typescript@5.3.3) @@ -129,13 +128,13 @@ importers: version: 8.0.3 lint-staged: specifier: ^14.0.1 - version: 14.0.1 + version: 14.0.1(enquirer@2.4.1) lit-html: specifier: ^3.1.0 version: 3.1.1 loki: specifier: ^0.32.0 - version: 0.32.0 + version: 0.32.0(@types/react@18.2.47) prettier: specifier: ^3.0.3 version: 3.0.3 @@ -156,7 +155,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) packages/custom-elements-manifest-to-types: dependencies: @@ -181,10 +180,10 @@ importers: version: 0.19.11 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + version: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) ts-jest: specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3) + version: 29.1.1(@babel/core@7.23.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.7))(esbuild@0.19.11)(jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)))(typescript@5.3.3) ts-node: specifier: ^10.8.2 version: 10.9.2(@types/node@18.19.6)(typescript@5.3.3) @@ -239,7 +238,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 @@ -333,7 +332,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) vue: specifier: 2.6.14 version: 2.6.14 @@ -352,7 +351,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) packages/flow-dashboard: dependencies: @@ -413,7 +412,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 @@ -471,7 +470,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 @@ -529,7 +528,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) vue: specifier: 2.6.14 version: 2.6.14 @@ -590,7 +589,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 @@ -645,7 +644,7 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 @@ -694,44 +693,37 @@ importers: version: 5.3.3 vite: specifier: ^4.4.11 - version: 4.5.1(sass@1.69.7) + version: 4.5.1(@types/node@18.19.6)(sass@1.69.7) web-component-analyzer: specifier: ^2.0.0-next.4 version: 2.0.0 packages: - '@75lb/deep-merge@1.1.1': '@75lb/deep-merge@1.1.1': resolution: {integrity: sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==} engines: {node: '>=12.17'} - '@aashutoshrathi/word-wrap@1.2.6': '@aashutoshrathi/word-wrap@1.2.6': resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - '@ampproject/remapping@2.2.1': '@ampproject/remapping@2.2.1': resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} engines: {node: '>=6.0.0'} - '@aw-web-design/x-default-browser@1.4.126': '@aw-web-design/x-default-browser@1.4.126': resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} hasBin: true - '@babel/code-frame@7.23.5': '@babel/code-frame@7.23.5': resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} engines: {node: '>=6.9.0'} - '@babel/compat-data@7.23.5': '@babel/compat-data@7.23.5': resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - '@babel/core@7.23.7': '@babel/core@7.23.7': resolution: {integrity: sha512-+UpDgowcmqe36d4NwqvKsyPMlOLNGMsfMmQ5WGCu+siCe3t3dfe9njrzGfdN4qq+bcNUt0+Vw6haRxBOycs4dw==} engines: {node: '>=6.9.0'} @@ -2136,6 +2128,9 @@ packages: peerDependencies: '@ollion/flow-core-config': '*' + '@ollion/flow-core-config@1.1.3': + resolution: {integrity: sha512-Im5UNwO+/KHkD+gAMvE1OicpLmTbof3qnxJj1vHSay+7MfzAbeuZH5YaTK7cChJ6ocBaR99vS4XGKrBs10/z6Q==} + '@ollion/flow-gcp-icon@1.8.1': resolution: {integrity: sha512-JAdA6ffgyrQ4HDyXZRfcmsV7iZRKViY9JqHLU0C67ntOtnm7L62AVQywzPkjeSgZhIeyp5F0WVuWvAhKSyehHw==} peerDependencies: @@ -7889,7 +7884,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.23.6': '@babel/generator@7.23.6': dependencies: '@babel/types': 7.23.6 @@ -7897,17 +7891,14 @@ snapshots: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 - '@babel/helper-annotate-as-pure@7.22.5': '@babel/helper-annotate-as-pure@7.22.5': dependencies: '@babel/types': 7.23.6 - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': dependencies: '@babel/types': 7.23.6 - '@babel/helper-compilation-targets@7.23.6': '@babel/helper-compilation-targets@7.23.6': dependencies: '@babel/compat-data': 7.23.5 @@ -7916,7 +7907,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7)': '@babel/helper-create-class-features-plugin@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7930,7 +7920,6 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7)': '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7938,7 +7927,6 @@ snapshots: regexpu-core: 5.3.2 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7)': '@babel/helper-define-polyfill-provider@0.4.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7951,30 +7939,24 @@ snapshots: - supports-color '@babel/helper-environment-visitor@7.22.20': {} - '@babel/helper-environment-visitor@7.22.20': {} - '@babel/helper-function-name@7.23.0': '@babel/helper-function-name@7.23.0': dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 - '@babel/helper-hoist-variables@7.22.5': '@babel/helper-hoist-variables@7.22.5': dependencies: '@babel/types': 7.23.6 - '@babel/helper-member-expression-to-functions@7.23.0': '@babel/helper-member-expression-to-functions@7.23.0': dependencies: '@babel/types': 7.23.6 - '@babel/helper-module-imports@7.22.15': '@babel/helper-module-imports@7.22.15': dependencies: '@babel/types': 7.23.6 - '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7)': '@babel/helper-module-transforms@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -7984,16 +7966,12 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 - '@babel/helper-optimise-call-expression@7.22.5': '@babel/helper-optimise-call-expression@7.22.5': dependencies: '@babel/types': 7.23.6 '@babel/helper-plugin-utils@7.22.5': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7)': - '@babel/helper-plugin-utils@7.22.5': {} - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8001,7 +7979,6 @@ snapshots: '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7)': '@babel/helper-replace-supers@7.22.20(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8009,38 +7986,30 @@ snapshots: '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-simple-access@7.22.5': '@babel/helper-simple-access@7.22.5': dependencies: '@babel/types': 7.23.6 - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': '@babel/helper-skip-transparent-expression-wrappers@7.22.5': dependencies: '@babel/types': 7.23.6 - '@babel/helper-split-export-declaration@7.22.6': '@babel/helper-split-export-declaration@7.22.6': dependencies: '@babel/types': 7.23.6 '@babel/helper-string-parser@7.23.4': {} - '@babel/helper-string-parser@7.23.4': {} - '@babel/helper-validator-identifier@7.22.20': {} '@babel/helper-validator-identifier@7.22.20': {} - '@babel/helper-validator-option@7.23.5': {} '@babel/helper-validator-option@7.23.5': {} - '@babel/helper-wrap-function@7.22.20': '@babel/helper-wrap-function@7.22.20': dependencies: '@babel/helper-function-name': 7.23.0 '@babel/template': 7.22.15 '@babel/types': 7.23.6 - '@babel/helpers@7.23.8': '@babel/helpers@7.23.8': dependencies: '@babel/template': 7.22.15 @@ -8049,25 +8018,21 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/highlight@7.23.4': '@babel/highlight@7.23.4': dependencies: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 - '@babel/parser@7.23.6': '@babel/parser@7.23.6': dependencies: '@babel/types': 7.23.6 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7)': '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7)': '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8075,14 +8040,12 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7)': '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7)': '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8092,151 +8055,126 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7)': '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7)': '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7)': '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7)': '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7)': '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7)': '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7)': '@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7)': '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7)': '@babel/plugin-transform-async-generator-functions@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8245,7 +8183,6 @@ snapshots: '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.7) - '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8253,26 +8190,22 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.7) - '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8280,7 +8213,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7)': '@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8293,68 +8225,58 @@ snapshots: '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7)': '@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8362,40 +8284,34 @@ snapshots: '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8403,7 +8319,6 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - '@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8412,41 +8327,35 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 - '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7)': '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.7) - '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8456,21 +8365,18 @@ snapshots: '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.7) '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.7) - '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8478,20 +8384,17 @@ snapshots: '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) - '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-class-features-plugin': 7.23.7(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8500,13 +8403,11 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.7) - '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7)': '@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8516,51 +8417,43 @@ snapshots: '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.7) '@babel/types': 7.23.6 - '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 - '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7)': '@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8569,34 +8462,29 @@ snapshots: '@babel/helper-plugin-utils': 7.22.5 '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.7) - '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7)': '@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.7) '@babel/helper-plugin-utils': 7.22.5 - '@babel/preset-env@7.23.8(@babel/core@7.23.7)': '@babel/preset-env@7.23.8(@babel/core@7.23.7)': dependencies: '@babel/compat-data': 7.23.5 @@ -8683,7 +8571,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.23.3(@babel/core@7.23.7)': '@babel/preset-flow@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8691,7 +8578,6 @@ snapshots: '@babel/helper-validator-option': 7.23.5 '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.7) - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7)': '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8699,7 +8585,6 @@ snapshots: '@babel/types': 7.23.6 esutils: 2.0.3 - '@babel/preset-typescript@7.23.3(@babel/core@7.23.7)': '@babel/preset-typescript@7.23.3(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8709,7 +8594,6 @@ snapshots: '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.7) '@babel/plugin-transform-typescript': 7.23.6(@babel/core@7.23.7) - '@babel/register@7.23.7(@babel/core@7.23.7)': '@babel/register@7.23.7(@babel/core@7.23.7)': dependencies: '@babel/core': 7.23.7 @@ -8720,21 +8604,17 @@ snapshots: source-map-support: 0.5.21 '@babel/regjsgen@0.8.0': {} - '@babel/regjsgen@0.8.0': {} - '@babel/runtime@7.23.8': '@babel/runtime@7.23.8': dependencies: regenerator-runtime: 0.14.1 - '@babel/template@7.22.15': '@babel/template@7.22.15': dependencies: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - '@babel/traverse@7.23.7': '@babel/traverse@7.23.7': dependencies: '@babel/code-frame': 7.23.5 @@ -8750,7 +8630,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/types@7.23.6': '@babel/types@7.23.6': dependencies: '@babel/helper-string-parser': 7.23.4 @@ -8758,9 +8637,7 @@ snapshots: to-fast-properties: 2.0.0 '@bcoe/v8-coverage@0.2.3': {} - '@bcoe/v8-coverage@0.2.3': {} - '@changesets/apply-release-plan@7.0.0': '@changesets/apply-release-plan@7.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8777,7 +8654,6 @@ snapshots: resolve-from: 5.0.0 semver: 7.5.4 - '@changesets/assemble-release-plan@6.0.0': '@changesets/assemble-release-plan@6.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8787,12 +8663,10 @@ snapshots: '@manypkg/get-packages': 1.1.3 semver: 7.5.4 - '@changesets/changelog-git@0.2.0': '@changesets/changelog-git@0.2.0': dependencies: '@changesets/types': 6.0.0 - '@changesets/cli@2.27.1': '@changesets/cli@2.27.1': dependencies: '@babel/runtime': 7.23.8 @@ -8828,7 +8702,6 @@ snapshots: term-size: 2.2.1 tty-table: 4.2.3 - '@changesets/config@3.0.0': '@changesets/config@3.0.0': dependencies: '@changesets/errors': 0.2.0 @@ -8839,12 +8712,10 @@ snapshots: fs-extra: 7.0.1 micromatch: 4.0.5 - '@changesets/errors@0.2.0': '@changesets/errors@0.2.0': dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.0.0': '@changesets/get-dependents-graph@2.0.0': dependencies: '@changesets/types': 6.0.0 @@ -8853,7 +8724,6 @@ snapshots: fs-extra: 7.0.1 semver: 7.5.4 - '@changesets/get-release-plan@4.0.0': '@changesets/get-release-plan@4.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8865,9 +8735,7 @@ snapshots: '@manypkg/get-packages': 1.1.3 '@changesets/get-version-range-type@0.4.0': {} - '@changesets/get-version-range-type@0.4.0': {} - '@changesets/git@3.0.0': '@changesets/git@3.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8878,18 +8746,15 @@ snapshots: micromatch: 4.0.5 spawndamnit: 2.0.0 - '@changesets/logger@0.1.0': '@changesets/logger@0.1.0': dependencies: chalk: 2.4.2 - '@changesets/parse@0.4.0': '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 js-yaml: 3.14.1 - '@changesets/pre@2.0.0': '@changesets/pre@2.0.0': dependencies: '@babel/runtime': 7.23.8 @@ -8898,7 +8763,6 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.0': '@changesets/read@0.6.0': dependencies: '@babel/runtime': 7.23.8 @@ -8911,12 +8775,9 @@ snapshots: p-filter: 2.1.0 '@changesets/types@4.1.0': {} - '@changesets/types@4.1.0': {} - '@changesets/types@6.0.0': {} '@changesets/types@6.0.0': {} - '@changesets/write@0.3.0': '@changesets/write@0.3.0': dependencies: '@babel/runtime': 7.23.8 @@ -8925,16 +8786,13 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 - '@colors/colors@1.5.0': '@colors/colors@1.5.0': optional: true - '@cspotcode/source-map-support@0.8.1': '@cspotcode/source-map-support@0.8.1': dependencies: '@jridgewell/trace-mapping': 0.3.9 - '@custom-elements-manifest/analyzer@0.5.7': '@custom-elements-manifest/analyzer@0.5.7': dependencies: '@web/config-loader': 0.1.3 @@ -8946,7 +8804,6 @@ snapshots: globby: 11.0.4 typescript: 4.3.5 - '@custom-elements-manifest/analyzer@0.8.4': '@custom-elements-manifest/analyzer@0.8.4': dependencies: '@custom-elements-manifest/find-dependencies': 0.0.5 @@ -8960,304 +8817,229 @@ snapshots: globby: 11.0.4 typescript: 4.3.5 - '@custom-elements-manifest/find-dependencies@0.0.5': '@custom-elements-manifest/find-dependencies@0.0.5': dependencies: es-module-lexer: 0.9.3 '@discoveryjs/json-ext@0.5.7': {} - '@discoveryjs/json-ext@0.5.7': {} - '@emoji-mart/data@1.1.2': {} '@emoji-mart/data@1.1.2': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0)': dependencies: react: 18.2.0 - '@esbuild/aix-ppc64@0.19.11': '@esbuild/aix-ppc64@0.19.11': optional: true - '@esbuild/android-arm64@0.17.19': '@esbuild/android-arm64@0.17.19': optional: true - '@esbuild/android-arm64@0.18.20': '@esbuild/android-arm64@0.18.20': optional: true - '@esbuild/android-arm64@0.19.11': '@esbuild/android-arm64@0.19.11': optional: true - '@esbuild/android-arm@0.17.19': '@esbuild/android-arm@0.17.19': optional: true - '@esbuild/android-arm@0.18.20': '@esbuild/android-arm@0.18.20': optional: true - '@esbuild/android-arm@0.19.11': '@esbuild/android-arm@0.19.11': optional: true - '@esbuild/android-x64@0.17.19': '@esbuild/android-x64@0.17.19': optional: true - '@esbuild/android-x64@0.18.20': '@esbuild/android-x64@0.18.20': optional: true - '@esbuild/android-x64@0.19.11': '@esbuild/android-x64@0.19.11': optional: true - '@esbuild/darwin-arm64@0.17.19': '@esbuild/darwin-arm64@0.17.19': optional: true - '@esbuild/darwin-arm64@0.18.20': '@esbuild/darwin-arm64@0.18.20': optional: true - '@esbuild/darwin-arm64@0.19.11': '@esbuild/darwin-arm64@0.19.11': optional: true - '@esbuild/darwin-x64@0.17.19': '@esbuild/darwin-x64@0.17.19': optional: true - '@esbuild/darwin-x64@0.18.20': '@esbuild/darwin-x64@0.18.20': optional: true - '@esbuild/darwin-x64@0.19.11': '@esbuild/darwin-x64@0.19.11': optional: true - '@esbuild/freebsd-arm64@0.17.19': '@esbuild/freebsd-arm64@0.17.19': optional: true - '@esbuild/freebsd-arm64@0.18.20': '@esbuild/freebsd-arm64@0.18.20': optional: true - '@esbuild/freebsd-arm64@0.19.11': '@esbuild/freebsd-arm64@0.19.11': optional: true - '@esbuild/freebsd-x64@0.17.19': '@esbuild/freebsd-x64@0.17.19': optional: true - '@esbuild/freebsd-x64@0.18.20': '@esbuild/freebsd-x64@0.18.20': optional: true - '@esbuild/freebsd-x64@0.19.11': '@esbuild/freebsd-x64@0.19.11': optional: true - '@esbuild/linux-arm64@0.17.19': '@esbuild/linux-arm64@0.17.19': optional: true - '@esbuild/linux-arm64@0.18.20': '@esbuild/linux-arm64@0.18.20': optional: true - '@esbuild/linux-arm64@0.19.11': '@esbuild/linux-arm64@0.19.11': optional: true - '@esbuild/linux-arm@0.17.19': '@esbuild/linux-arm@0.17.19': optional: true - '@esbuild/linux-arm@0.18.20': '@esbuild/linux-arm@0.18.20': optional: true - '@esbuild/linux-arm@0.19.11': '@esbuild/linux-arm@0.19.11': optional: true - '@esbuild/linux-ia32@0.17.19': '@esbuild/linux-ia32@0.17.19': optional: true - '@esbuild/linux-ia32@0.18.20': '@esbuild/linux-ia32@0.18.20': optional: true - '@esbuild/linux-ia32@0.19.11': '@esbuild/linux-ia32@0.19.11': optional: true - '@esbuild/linux-loong64@0.14.54': '@esbuild/linux-loong64@0.14.54': optional: true - '@esbuild/linux-loong64@0.17.19': '@esbuild/linux-loong64@0.17.19': optional: true - '@esbuild/linux-loong64@0.18.20': '@esbuild/linux-loong64@0.18.20': optional: true - '@esbuild/linux-loong64@0.19.11': '@esbuild/linux-loong64@0.19.11': optional: true - '@esbuild/linux-mips64el@0.17.19': '@esbuild/linux-mips64el@0.17.19': optional: true - '@esbuild/linux-mips64el@0.18.20': '@esbuild/linux-mips64el@0.18.20': optional: true - '@esbuild/linux-mips64el@0.19.11': '@esbuild/linux-mips64el@0.19.11': optional: true - '@esbuild/linux-ppc64@0.17.19': '@esbuild/linux-ppc64@0.17.19': optional: true - '@esbuild/linux-ppc64@0.18.20': '@esbuild/linux-ppc64@0.18.20': optional: true - '@esbuild/linux-ppc64@0.19.11': '@esbuild/linux-ppc64@0.19.11': optional: true - '@esbuild/linux-riscv64@0.17.19': '@esbuild/linux-riscv64@0.17.19': optional: true - '@esbuild/linux-riscv64@0.18.20': '@esbuild/linux-riscv64@0.18.20': optional: true - '@esbuild/linux-riscv64@0.19.11': '@esbuild/linux-riscv64@0.19.11': optional: true - '@esbuild/linux-s390x@0.17.19': '@esbuild/linux-s390x@0.17.19': optional: true - '@esbuild/linux-s390x@0.18.20': '@esbuild/linux-s390x@0.18.20': optional: true - '@esbuild/linux-s390x@0.19.11': '@esbuild/linux-s390x@0.19.11': optional: true - '@esbuild/linux-x64@0.17.19': '@esbuild/linux-x64@0.17.19': optional: true - '@esbuild/linux-x64@0.18.20': '@esbuild/linux-x64@0.18.20': optional: true - '@esbuild/linux-x64@0.19.11': '@esbuild/linux-x64@0.19.11': optional: true - '@esbuild/netbsd-x64@0.17.19': '@esbuild/netbsd-x64@0.17.19': optional: true - '@esbuild/netbsd-x64@0.18.20': '@esbuild/netbsd-x64@0.18.20': optional: true - '@esbuild/netbsd-x64@0.19.11': '@esbuild/netbsd-x64@0.19.11': optional: true - '@esbuild/openbsd-x64@0.17.19': '@esbuild/openbsd-x64@0.17.19': optional: true - '@esbuild/openbsd-x64@0.18.20': '@esbuild/openbsd-x64@0.18.20': optional: true - '@esbuild/openbsd-x64@0.19.11': '@esbuild/openbsd-x64@0.19.11': optional: true - '@esbuild/sunos-x64@0.17.19': '@esbuild/sunos-x64@0.17.19': optional: true - '@esbuild/sunos-x64@0.18.20': '@esbuild/sunos-x64@0.18.20': optional: true - '@esbuild/sunos-x64@0.19.11': '@esbuild/sunos-x64@0.19.11': optional: true - '@esbuild/win32-arm64@0.17.19': '@esbuild/win32-arm64@0.17.19': optional: true - '@esbuild/win32-arm64@0.18.20': '@esbuild/win32-arm64@0.18.20': optional: true - '@esbuild/win32-arm64@0.19.11': '@esbuild/win32-arm64@0.19.11': optional: true - '@esbuild/win32-ia32@0.17.19': '@esbuild/win32-ia32@0.17.19': optional: true - '@esbuild/win32-ia32@0.18.20': '@esbuild/win32-ia32@0.18.20': optional: true - '@esbuild/win32-ia32@0.19.11': '@esbuild/win32-ia32@0.19.11': optional: true - '@esbuild/win32-x64@0.17.19': '@esbuild/win32-x64@0.17.19': optional: true - '@esbuild/win32-x64@0.18.20': '@esbuild/win32-x64@0.18.20': optional: true - '@esbuild/win32-x64@0.19.11': '@esbuild/win32-x64@0.19.11': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': '@eslint-community/eslint-utils@4.4.0(eslint@8.56.0)': dependencies: eslint: 8.56.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.10.0': {} - '@eslint-community/regexpp@4.10.0': {} - '@eslint/eslintrc@2.1.4': '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 @@ -9273,20 +9055,15 @@ snapshots: - supports-color '@eslint/js@8.56.0': {} - '@eslint/js@8.56.0': {} - '@esm-bundle/chai@4.3.4-fix.0': '@esm-bundle/chai@4.3.4-fix.0': dependencies: '@types/chai': 4.3.11 '@faker-js/faker@8.3.1': {} - '@faker-js/faker@8.3.1': {} - '@fal-works/esbuild-plugin-global-externals@2.1.2': {} '@fal-works/esbuild-plugin-global-externals@2.1.2': {} - '@ferocia-oss/osnap@1.3.5': '@ferocia-oss/osnap@1.3.5': dependencies: execa: 7.2.0 @@ -9294,39 +9071,31 @@ snapshots: tempfile: 3.0.0 which: 3.0.1 - '@floating-ui/core@1.5.3': '@floating-ui/core@1.5.3': dependencies: '@floating-ui/utils': 0.2.1 - '@floating-ui/dom@1.5.4': '@floating-ui/dom@1.5.4': dependencies: '@floating-ui/core': 1.5.3 '@floating-ui/utils': 0.2.1 - '@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0)': - '@floating-ui/react-dom@2.0.5(react-dom@18.2.0)(react@18.2.0)': + '@floating-ui/react-dom@2.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@floating-ui/dom': 1.5.4 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) '@floating-ui/utils@0.2.1': {} - '@floating-ui/utils@0.2.1': {} - '@github/catalyst@1.6.0': {} '@github/catalyst@1.6.0': {} - '@hapi/hoek@9.3.0': {} '@hapi/hoek@9.3.0': {} - '@hapi/topo@5.1.0': '@hapi/topo@5.1.0': dependencies: '@hapi/hoek': 9.3.0 - '@humanwhocodes/config-array@0.11.13': '@humanwhocodes/config-array@0.11.13': dependencies: '@humanwhocodes/object-schema': 2.0.1 @@ -9336,25 +9105,18 @@ snapshots: - supports-color '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/object-schema@2.0.1': {} '@humanwhocodes/object-schema@2.0.1': {} - '@isaacs/cliui@8.0.2': '@isaacs/cliui@8.0.2': dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - string-width-cjs: string-width@4.2.3 strip-ansi: 7.1.0 strip-ansi-cjs: strip-ansi@6.0.1 - strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@istanbuljs/load-nyc-config@1.1.0': '@istanbuljs/load-nyc-config@1.1.0': dependencies: camelcase: 5.3.1 @@ -9364,9 +9126,7 @@ snapshots: resolve-from: 5.0.0 '@istanbuljs/schema@0.1.3': {} - '@istanbuljs/schema@0.1.3': {} - '@jest/console@29.7.0': '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -9376,8 +9136,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2)': - '@jest/core@29.7.0(ts-node@10.9.2)': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -9391,7 +9150,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -9412,7 +9171,6 @@ snapshots: - supports-color - ts-node - '@jest/environment@29.7.0': '@jest/environment@29.7.0': dependencies: '@jest/fake-timers': 29.7.0 @@ -9420,12 +9178,10 @@ snapshots: '@types/node': 18.19.6 jest-mock: 29.7.0 - '@jest/expect-utils@29.7.0': '@jest/expect-utils@29.7.0': dependencies: jest-get-type: 29.6.3 - '@jest/expect@29.7.0': '@jest/expect@29.7.0': dependencies: expect: 29.7.0 @@ -9433,7 +9189,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/fake-timers@29.7.0': '@jest/fake-timers@29.7.0': dependencies: '@jest/types': 29.6.3 @@ -9443,7 +9198,6 @@ snapshots: jest-mock: 29.7.0 jest-util: 29.7.0 - '@jest/globals@29.7.0': '@jest/globals@29.7.0': dependencies: '@jest/environment': 29.7.0 @@ -9453,7 +9207,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/reporters@29.7.0': '@jest/reporters@29.7.0': dependencies: '@bcoe/v8-coverage': 0.2.3 @@ -9483,19 +9236,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/schemas@29.6.3': '@jest/schemas@29.6.3': dependencies: '@sinclair/typebox': 0.27.8 - '@jest/source-map@29.6.3': '@jest/source-map@29.6.3': dependencies: '@jridgewell/trace-mapping': 0.3.20 callsites: 3.1.0 graceful-fs: 4.2.11 - '@jest/test-result@29.7.0': '@jest/test-result@29.7.0': dependencies: '@jest/console': 29.7.0 @@ -9503,7 +9253,6 @@ snapshots: '@types/istanbul-lib-coverage': 2.0.6 collect-v8-coverage: 1.0.2 - '@jest/test-sequencer@29.7.0': '@jest/test-sequencer@29.7.0': dependencies: '@jest/test-result': 29.7.0 @@ -9511,7 +9260,6 @@ snapshots: jest-haste-map: 29.7.0 slash: 3.0.0 - '@jest/transform@29.7.0': '@jest/transform@29.7.0': dependencies: '@babel/core': 7.23.7 @@ -9532,7 +9280,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@jest/types@29.6.3': '@jest/types@29.6.3': dependencies: '@jest/schemas': 29.6.3 @@ -9542,7 +9289,6 @@ snapshots: '@types/yargs': 17.0.32 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.3': '@jridgewell/gen-mapping@0.3.3': dependencies: '@jridgewell/set-array': 1.1.2 @@ -9550,54 +9296,42 @@ snapshots: '@jridgewell/trace-mapping': 0.3.20 '@jridgewell/resolve-uri@3.1.1': {} - '@jridgewell/resolve-uri@3.1.1': {} - '@jridgewell/set-array@1.1.2': {} '@jridgewell/set-array@1.1.2': {} - '@jridgewell/sourcemap-codec@1.4.15': {} '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/trace-mapping@0.3.20': '@jridgewell/trace-mapping@0.3.20': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping@0.3.9': '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 '@juggle/resize-observer@3.4.0': {} - '@juggle/resize-observer@3.4.0': {} - '@lit-labs/ssr-dom-shim@1.1.2': {} '@lit-labs/ssr-dom-shim@1.1.2': {} - '@lit-labs/virtualizer@2.0.12': '@lit-labs/virtualizer@2.0.12': dependencies: lit: 3.1.1 tslib: 2.6.2 - '@lit/reactive-element@2.0.3': '@lit/reactive-element@2.0.3': dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 - '@loki/browser@0.32.0': '@loki/browser@0.32.0': dependencies: '@loki/integration-core': 0.32.0 - '@loki/core@0.32.0': '@loki/core@0.32.0': dependencies: shelljs: 0.8.5 - '@loki/diff-graphics-magick@0.32.0': '@loki/diff-graphics-magick@0.32.0': dependencies: fs-extra: 9.1.0 @@ -9605,13 +9339,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@loki/diff-looks-same@0.32.0': '@loki/diff-looks-same@0.32.0': dependencies: fs-extra: 9.1.0 looks-same: 4.1.0 - '@loki/diff-pixelmatch@0.32.0': '@loki/diff-pixelmatch@0.32.0': dependencies: fs-extra: 9.1.0 @@ -9620,25 +9352,19 @@ snapshots: '@loki/integration-core@0.32.0': {} - '@loki/integration-react-native@0.32.0': - '@loki/integration-core@0.32.0': {} - '@loki/integration-react-native@0.32.0': dependencies: '@loki/integration-core': 0.32.0 - '@loki/integration-react@0.32.0': '@loki/integration-react@0.32.0': dependencies: '@loki/browser': 0.32.0 - '@loki/integration-vue@0.32.0': '@loki/integration-vue@0.32.0': dependencies: '@loki/browser': 0.32.0 - '@loki/runner@0.32.0': - '@loki/runner@0.32.0': + '@loki/runner@0.32.0(@types/react@18.2.47)': dependencies: '@loki/core': 0.32.0 '@loki/diff-graphics-magick': 0.32.0 @@ -9655,7 +9381,7 @@ snapshots: cosmiconfig: 7.1.0 fs-extra: 9.1.0 import-jsx: 4.0.1 - ink: 3.2.0(react@17.0.2) + ink: 3.2.0(@types/react@18.2.47)(react@17.0.2) minimist: 1.2.8 ramda: 0.27.2 react: 17.0.2 @@ -9666,7 +9392,6 @@ snapshots: - supports-color - utf-8-validate - '@loki/target-chrome-app@0.32.0': '@loki/target-chrome-app@0.32.0': dependencies: '@loki/target-chrome-core': 0.32.0 @@ -9678,7 +9403,6 @@ snapshots: - supports-color - utf-8-validate - '@loki/target-chrome-aws-lambda@0.32.0': '@loki/target-chrome-aws-lambda@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9687,7 +9411,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@loki/target-chrome-core@0.32.0': '@loki/target-chrome-core@0.32.0': dependencies: '@loki/browser': 0.32.0 @@ -9697,7 +9420,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@loki/target-chrome-docker@0.32.0': '@loki/target-chrome-docker@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9714,7 +9436,6 @@ snapshots: - supports-color - utf-8-validate - '@loki/target-native-android-emulator@0.32.0': '@loki/target-native-android-emulator@0.32.0': dependencies: '@ferocia-oss/osnap': 1.3.5 @@ -9727,7 +9448,6 @@ snapshots: - supports-color - utf-8-validate - '@loki/target-native-core@0.32.0': '@loki/target-native-core@0.32.0': dependencies: '@loki/core': 0.32.0 @@ -9738,7 +9458,6 @@ snapshots: - supports-color - utf-8-validate - '@loki/target-native-ios-simulator@0.32.0': '@loki/target-native-ios-simulator@0.32.0': dependencies: '@ferocia-oss/osnap': 1.3.5 @@ -9751,7 +9470,6 @@ snapshots: - supports-color - utf-8-validate - '@manypkg/find-root@1.1.0': '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.23.8 @@ -9759,7 +9477,6 @@ snapshots: find-up: 4.1.0 fs-extra: 8.1.0 - '@manypkg/get-packages@1.1.3': '@manypkg/get-packages@1.1.3': dependencies: '@babel/runtime': 7.23.8 @@ -9770,72 +9487,62 @@ snapshots: read-yaml-file: 1.1.0 '@mdn/browser-compat-data@4.2.1': {} - '@mdn/browser-compat-data@4.2.1': {} - '@mdx-js/react@2.3.0(react@18.2.0)': '@mdx-js/react@2.3.0(react@18.2.0)': dependencies: '@types/mdx': 2.0.10 '@types/react': 18.2.47 react: 18.2.0 - '@ndelangen/get-tarball@3.0.9': '@ndelangen/get-tarball@3.0.9': dependencies: gunzip-maybe: 1.4.2 pump: 3.0.0 tar-fs: 2.1.1 - '@nodelib/fs.scandir@2.1.5': '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 '@nodelib/fs.stat@2.0.5': {} - '@nodelib/fs.stat@2.0.5': {} - '@nodelib/fs.walk@1.2.8': '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.16.0 - '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@packages+flow-core-config)': - '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@packages+flow-core-config)': + '@ollion/flow-aws-icon@1.9.1(@ollion/flow-core-config@1.1.3)': dependencies: - '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-core-config': 1.1.3 - '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@packages+flow-core-config)': - '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@packages+flow-core-config)': + '@ollion/flow-core-config@1.1.3': dependencies: - '@ollion/flow-core-config': link:packages/flow-core-config + rxjs: 7.8.1 - '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@packages+flow-core-config)': - '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@packages+flow-core-config)': + '@ollion/flow-gcp-icon@1.8.1(@ollion/flow-core-config@1.1.3)': dependencies: - '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-core-config': 1.1.3 - '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@packages+flow-core-config)': - '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@packages+flow-core-config)': + '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@1.1.3)': dependencies: - '@ollion/flow-core-config': link:packages/flow-core-config + '@ollion/flow-core-config': 1.1.3 + + '@ollion/flow-system-icon@1.16.1(@ollion/flow-core-config@1.1.3)': + dependencies: + '@ollion/flow-core-config': 1.1.3 - '@ollion/prettier-config@2.1.0(prettier@3.0.3)': '@ollion/prettier-config@2.1.0(prettier@3.0.3)': dependencies: prettier: 3.0.3 '@open-wc/dedupe-mixin@1.4.0': {} - '@open-wc/dedupe-mixin@1.4.0': {} - '@open-wc/scoped-elements@2.2.4': '@open-wc/scoped-elements@2.2.4': dependencies: '@lit/reactive-element': 2.0.3 '@open-wc/dedupe-mixin': 1.4.0 - '@open-wc/semantic-dom-diff@0.20.1': '@open-wc/semantic-dom-diff@0.20.1': dependencies: '@types/chai': 4.3.11 @@ -9845,14 +9552,12 @@ snapshots: - supports-color - utf-8-validate - '@open-wc/testing-helpers@2.3.2': '@open-wc/testing-helpers@2.3.2': dependencies: '@open-wc/scoped-elements': 2.2.4 lit: 3.1.1 lit-html: 3.1.1 - '@open-wc/testing@3.2.2': '@open-wc/testing@3.2.2': dependencies: '@esm-bundle/chai': 4.3.4-fix.0 @@ -9866,11 +9571,9 @@ snapshots: - supports-color - utf-8-validate - '@pkgjs/parseargs@0.11.0': '@pkgjs/parseargs@0.11.0': optional: true - '@puppeteer/browsers@1.4.6(typescript@5.3.3)': '@puppeteer/browsers@1.4.6(typescript@5.3.3)': dependencies: debug: 4.3.4 @@ -9878,284 +9581,308 @@ snapshots: progress: 2.0.3 proxy-agent: 6.3.0 tar-fs: 3.0.4 - typescript: 5.3.3 unbzip2-stream: 1.4.3 yargs: 17.7.1 + optionalDependencies: + typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@radix-ui/number@1.0.1': '@radix-ui/number@1.0.1': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/primitive@1.0.1': '@radix-ui/primitive@1.0.1': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-arrow@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-arrow@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-collection@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-collection@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-compose-refs@1.0.1(react@18.2.0)': - '@radix-ui/react-compose-refs@1.0.1(react@18.2.0)': + '@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-context@1.0.1(react@18.2.0)': - '@radix-ui/react-context@1.0.1(react@18.2.0)': + '@radix-ui/react-context@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-direction@1.0.1(react@18.2.0)': - '@radix-ui/react-direction@1.0.1(react@18.2.0)': + '@radix-ui/react-direction@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-dismissable-layer@1.0.4(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-dismissable-layer@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) - '@radix-ui/react-use-escape-keydown': 1.0.3(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-focus-guards@1.0.1(react@18.2.0)': - '@radix-ui/react-focus-guards@1.0.1(react@18.2.0)': + '@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-focus-scope@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-focus-scope@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-id@1.0.1(react@18.2.0)': - '@radix-ui/react-id@1.0.1(react@18.2.0)': + '@radix-ui/react-id@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-popper@1.1.2(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-popper@1.1.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@floating-ui/react-dom': 2.0.5(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-arrow': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) - '@radix-ui/react-use-rect': 1.0.1(react@18.2.0) - '@radix-ui/react-use-size': 1.0.1(react@18.2.0) + '@floating-ui/react-dom': 2.0.5(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-arrow': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-rect': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-size': 1.0.1(@types/react@18.2.47)(react@18.2.0) '@radix-ui/rect': 1.0.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-portal@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-portal@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-primitive@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-primitive@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-slot': 1.0.2(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-roving-focus@1.0.4(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-roving-focus@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(react@18.2.0) - '@radix-ui/react-id': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-select@1.2.2(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-select@1.2.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/number': 1.0.1 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-collection': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(react@18.2.0) - '@radix-ui/react-dismissable-layer': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-focus-guards': 1.0.1(react@18.2.0) - '@radix-ui/react-focus-scope': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-id': 1.0.1(react@18.2.0) - '@radix-ui/react-popper': 1.1.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-portal': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-slot': 1.0.2(react@18.2.0) - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) - '@radix-ui/react-use-previous': 1.0.1(react@18.2.0) - '@radix-ui/react-visually-hidden': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-collection': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-dismissable-layer': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-focus-guards': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-focus-scope': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-id': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-popper': 1.1.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-portal': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-slot': 1.0.2(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-use-previous': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-visually-hidden': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) aria-hidden: 1.2.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-remove-scroll: 2.5.5(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.47)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-separator@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-separator@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-slot@1.0.2(react@18.2.0)': - '@radix-ui/react-slot@1.0.2(react@18.2.0)': + '@radix-ui/react-slot@1.0.2(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-compose-refs': 1.0.1(react@18.2.0) + '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-toggle-group@1.0.4(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-toggle-group@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-toggle@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-toggle@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-use-controllable-state': 1.0.1(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-toolbar@1.0.4(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-toolbar@1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/primitive': 1.0.1 - '@radix-ui/react-context': 1.0.1(react@18.2.0) - '@radix-ui/react-direction': 1.0.1(react@18.2.0) - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-roving-focus': 1.0.4(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-separator': 1.0.3(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toggle-group': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-context': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-direction': 1.0.1(@types/react@18.2.47)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-roving-focus': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-separator': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toggle-group': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0)': - '@radix-ui/react-use-callback-ref@1.0.1(react@18.2.0)': + '@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0)': - '@radix-ui/react-use-controllable-state@1.0.1(react@18.2.0)': + '@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0)': - '@radix-ui/react-use-escape-keydown@1.0.3(react@18.2.0)': + '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-use-callback-ref': 1.0.1(react@18.2.0) + '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0)': - '@radix-ui/react-use-layout-effect@1.0.1(react@18.2.0)': + '@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-previous@1.0.1(react@18.2.0)': - '@radix-ui/react-use-previous@1.0.1(react@18.2.0)': + '@radix-ui/react-use-previous@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-rect@1.0.1(react@18.2.0)': - '@radix-ui/react-use-rect@1.0.1(react@18.2.0)': + '@radix-ui/react-use-rect@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 '@radix-ui/rect': 1.0.1 react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-use-size@1.0.1(react@18.2.0)': - '@radix-ui/react-use-size@1.0.1(react@18.2.0)': + '@radix-ui/react-use-size@1.0.1(@types/react@18.2.47)(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-use-layout-effect': 1.0.1(react@18.2.0) + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.47)(react@18.2.0) react: 18.2.0 + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0)': - '@radix-ui/react-visually-hidden@1.0.3(react-dom@18.2.0)(react@18.2.0)': + '@radix-ui/react-visually-hidden@1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@babel/runtime': 7.23.8 - '@radix-ui/react-primitive': 1.0.3(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-primitive': 1.0.3(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - '@radix-ui/rect@1.0.1': '@radix-ui/rect@1.0.1': dependencies: '@babel/runtime': 7.23.8 - '@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1)': '@rollup/plugin-node-resolve@13.3.0(rollup@2.79.1)': dependencies: '@rollup/pluginutils': 3.1.0(rollup@2.79.1) @@ -10166,7 +9893,6 @@ snapshots: resolve: 1.22.8 rollup: 2.79.1 - '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': '@rollup/plugin-node-resolve@15.2.3(rollup@3.29.4)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@3.29.4) @@ -10175,9 +9901,9 @@ snapshots: is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 + optionalDependencies: rollup: 3.29.4 - '@rollup/pluginutils@3.1.0(rollup@2.79.1)': '@rollup/pluginutils@3.1.0(rollup@2.79.1)': dependencies: '@types/estree': 0.0.39 @@ -10185,45 +9911,37 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.1 - '@rollup/pluginutils@5.1.0(rollup@3.29.4)': '@rollup/pluginutils@5.1.0(rollup@3.29.4)': dependencies: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 3.29.4 - '@sideway/address@4.1.4': '@sideway/address@4.1.4': dependencies: '@hapi/hoek': 9.3.0 '@sideway/formula@3.0.1': {} - '@sideway/formula@3.0.1': {} - '@sideway/pinpoint@2.0.0': {} '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.27.8': {} '@sinclair/typebox@0.27.8': {} - '@sinonjs/commons@3.0.0': '@sinonjs/commons@3.0.0': dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@10.3.0': '@sinonjs/fake-timers@10.3.0': dependencies: '@sinonjs/commons': 3.0.0 - '@storybook/addon-a11y@7.6.12': '@storybook/addon-a11y@7.6.12': dependencies: '@storybook/addon-highlight': 7.6.12 axe-core: 4.8.3 - '@storybook/addon-actions@7.6.7': '@storybook/addon-actions@7.6.7': dependencies: '@storybook/core-events': 7.6.7 @@ -10233,17 +9951,15 @@ snapshots: polished: 4.2.2 uuid: 9.0.1 - '@storybook/addon-backgrounds@7.6.7': '@storybook/addon-backgrounds@7.6.7': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 ts-dedent: 2.2.0 - '@storybook/addon-controls@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/addon-controls@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/addon-controls@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@storybook/blocks': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) lodash: 4.17.21 ts-dedent: 2.2.0 transitivePeerDependencies: @@ -10254,14 +9970,13 @@ snapshots: - react-dom - supports-color - '@storybook/addon-docs@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/addon-docs@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/addon-docs@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@jest/transform': 29.7.0 '@mdx-js/react': 2.3.0(react@18.2.0) - '@storybook/blocks': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/blocks': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.6.7 - '@storybook/components': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/csf-plugin': 7.6.7 '@storybook/csf-tools': 7.6.7 '@storybook/global': 5.0.0 @@ -10269,8 +9984,8 @@ snapshots: '@storybook/node-logger': 7.6.7 '@storybook/postinstall': 7.6.7 '@storybook/preview-api': 7.6.7 - '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/react-dom-shim': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.6.7 fs-extra: 11.2.0 react: 18.2.0 @@ -10284,20 +9999,19 @@ snapshots: - encoding - supports-color - '@storybook/addon-essentials@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/addon-essentials@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/addon-essentials@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/addon-actions': 7.6.7 '@storybook/addon-backgrounds': 7.6.7 - '@storybook/addon-controls': 7.6.7(react-dom@18.2.0)(react@18.2.0) - '@storybook/addon-docs': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/addon-controls': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@storybook/addon-docs': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/addon-highlight': 7.6.7 '@storybook/addon-measure': 7.6.7 '@storybook/addon-outline': 7.6.7 '@storybook/addon-toolbars': 7.6.7 '@storybook/addon-viewport': 7.6.7 '@storybook/core-common': 7.6.7 - '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/node-logger': 7.6.7 '@storybook/preview-api': 7.6.7 react: 18.2.0 @@ -10309,25 +10023,22 @@ snapshots: - encoding - supports-color - '@storybook/addon-highlight@7.6.12': '@storybook/addon-highlight@7.6.12': dependencies: '@storybook/global': 5.0.0 - '@storybook/addon-highlight@7.6.7': '@storybook/addon-highlight@7.6.7': dependencies: '@storybook/global': 5.0.0 - '@storybook/addon-links@7.6.7(react@18.2.0)': '@storybook/addon-links@7.6.7(react@18.2.0)': dependencies: '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - react: 18.2.0 ts-dedent: 2.2.0 + optionalDependencies: + react: 18.2.0 - '@storybook/addon-mdx-gfm@7.6.7': '@storybook/addon-mdx-gfm@7.6.7': dependencies: '@storybook/node-logger': 7.6.7 @@ -10336,19 +10047,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/addon-measure@7.6.7': '@storybook/addon-measure@7.6.7': dependencies: '@storybook/global': 5.0.0 tiny-invariant: 1.3.1 - '@storybook/addon-outline@7.6.7': '@storybook/addon-outline@7.6.7': dependencies: '@storybook/global': 5.0.0 ts-dedent: 2.2.0 - '@storybook/addon-storysource@7.6.7': '@storybook/addon-storysource@7.6.7': dependencies: '@storybook/source-loader': 7.6.7 @@ -10356,26 +10064,23 @@ snapshots: tiny-invariant: 1.3.1 '@storybook/addon-toolbars@7.6.7': {} - '@storybook/addon-toolbars@7.6.7': {} - '@storybook/addon-viewport@7.6.7': '@storybook/addon-viewport@7.6.7': dependencies: memoizerific: 1.11.3 - '@storybook/blocks@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/blocks@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/blocks@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/channels': 7.6.7 '@storybook/client-logger': 7.6.7 - '@storybook/components': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/components': 7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/core-events': 7.6.7 '@storybook/csf': 0.1.2 '@storybook/docs-tools': 7.6.7 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.6.7 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.6.7 '@types/lodash': 4.14.202 color-convert: 2.0.1 @@ -10385,7 +10090,7 @@ snapshots: memoizerific: 1.11.3 polished: 4.2.2 react: 18.2.0 - react-colorful: 5.6.1(react-dom@18.2.0)(react@18.2.0) + react-colorful: 5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0) react-dom: 18.2.0(react@18.2.0) telejson: 7.2.0 tocbot: 4.25.0 @@ -10397,7 +10102,6 @@ snapshots: - encoding - supports-color - '@storybook/builder-manager@7.6.7': '@storybook/builder-manager@7.6.7': dependencies: '@fal-works/esbuild-plugin-global-externals': 2.1.2 @@ -10420,8 +10124,7 @@ snapshots: - encoding - supports-color - '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1)': - '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1)': + '@storybook/builder-vite@7.6.7(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))': dependencies: '@storybook/channels': 7.6.7 '@storybook/client-logger': 7.6.7 @@ -10439,13 +10142,13 @@ snapshots: fs-extra: 11.2.0 magic-string: 0.30.5 rollup: 3.29.4 + vite: 4.5.1(@types/node@18.19.6)(sass@1.69.7) + optionalDependencies: typescript: 5.3.3 - vite: 4.5.1(sass@1.69.7) transitivePeerDependencies: - encoding - supports-color - '@storybook/channels@7.6.7': '@storybook/channels@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 @@ -10455,7 +10158,6 @@ snapshots: telejson: 7.2.0 tiny-invariant: 1.3.1 - '@storybook/cli@7.6.7': '@storybook/cli@7.6.7': dependencies: '@babel/core': 7.23.7 @@ -10486,7 +10188,7 @@ snapshots: get-port: 5.1.1 giget: 1.2.1 globby: 11.1.0 - jscodeshift: 0.15.1(@babel/preset-env@7.23.8) + jscodeshift: 0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7)) leven: 3.1.0 ora: 5.4.1 prettier: 2.8.8 @@ -10505,12 +10207,10 @@ snapshots: - supports-color - utf-8-validate - '@storybook/client-logger@7.6.7': '@storybook/client-logger@7.6.7': dependencies: '@storybook/global': 5.0.0 - '@storybook/codemod@7.6.7': '@storybook/codemod@7.6.7': dependencies: '@babel/core': 7.23.7 @@ -10523,39 +10223,36 @@ snapshots: '@types/cross-spawn': 6.0.6 cross-spawn: 7.0.3 globby: 11.1.0 - jscodeshift: 0.15.1(@babel/preset-env@7.23.8) + jscodeshift: 0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7)) lodash: 4.17.21 prettier: 2.8.8 recast: 0.23.4 transitivePeerDependencies: - supports-color - '@storybook/components@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/components@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/components@7.6.7(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: - '@radix-ui/react-select': 1.2.2(react-dom@18.2.0)(react@18.2.0) - '@radix-ui/react-toolbar': 1.0.4(react-dom@18.2.0)(react@18.2.0) + '@radix-ui/react-select': 1.2.2(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + '@radix-ui/react-toolbar': 1.0.4(@types/react@18.2.47)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/client-logger': 7.6.7 '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.6.7 memoizerific: 1.11.3 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-resize-observer: 9.1.0(react-dom@18.2.0)(react@18.2.0) + use-resize-observer: 9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0) util-deprecate: 1.0.2 transitivePeerDependencies: - '@types/react' - '@types/react-dom' - '@storybook/core-client@7.6.7': '@storybook/core-client@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 '@storybook/preview-api': 7.6.7 - '@storybook/core-common@7.6.7': '@storybook/core-common@7.6.7': dependencies: '@storybook/core-events': 7.6.7 @@ -10585,12 +10282,10 @@ snapshots: - encoding - supports-color - '@storybook/core-events@7.6.7': '@storybook/core-events@7.6.7': dependencies: ts-dedent: 2.2.0 - '@storybook/core-server@7.6.7': '@storybook/core-server@7.6.7': dependencies: '@aw-web-design/x-default-browser': 1.4.126 @@ -10640,7 +10335,6 @@ snapshots: - supports-color - utf-8-validate - '@storybook/csf-plugin@7.6.7': '@storybook/csf-plugin@7.6.7': dependencies: '@storybook/csf-tools': 7.6.7 @@ -10648,7 +10342,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/csf-tools@7.6.7': '@storybook/csf-tools@7.6.7': dependencies: '@babel/generator': 7.23.6 @@ -10663,20 +10356,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/csf@0.0.1': '@storybook/csf@0.0.1': dependencies: lodash: 4.17.21 - '@storybook/csf@0.1.2': '@storybook/csf@0.1.2': dependencies: type-fest: 2.19.0 '@storybook/docs-mdx@0.1.0': {} - '@storybook/docs-mdx@0.1.0': {} - '@storybook/docs-tools@7.6.7': '@storybook/docs-tools@7.6.7': dependencies: '@storybook/core-common': 7.6.7 @@ -10691,10 +10380,8 @@ snapshots: - supports-color '@storybook/global@5.0.0': {} - '@storybook/global@5.0.0': {} - '@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/manager-api@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/manager-api@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/channels': 7.6.7 '@storybook/client-logger': 7.6.7 @@ -10702,7 +10389,7 @@ snapshots: '@storybook/csf': 0.1.2 '@storybook/global': 5.0.0 '@storybook/router': 7.6.7 - '@storybook/theming': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/theming': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/types': 7.6.7 dequal: 2.0.3 lodash: 4.17.21 @@ -10715,18 +10402,13 @@ snapshots: - react-dom '@storybook/manager@7.6.7': {} - '@storybook/manager@7.6.7': {} - '@storybook/mdx2-csf@1.1.0': {} '@storybook/mdx2-csf@1.1.0': {} - '@storybook/node-logger@7.6.7': {} '@storybook/node-logger@7.6.7': {} - '@storybook/postinstall@7.6.7': {} '@storybook/postinstall@7.6.7': {} - '@storybook/preview-api@7.6.7': '@storybook/preview-api@7.6.7': dependencies: '@storybook/channels': 7.6.7 @@ -10746,22 +10428,17 @@ snapshots: '@storybook/preview@7.6.7': {} - '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/preview@7.6.7': {} - - '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/react-dom-shim@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/router@7.6.7': '@storybook/router@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 memoizerific: 1.11.3 qs: 6.11.2 - '@storybook/source-loader@7.6.7': '@storybook/source-loader@7.6.7': dependencies: '@storybook/csf': 0.1.2 @@ -10770,7 +10447,6 @@ snapshots: lodash: 4.17.21 prettier: 2.8.8 - '@storybook/telemetry@7.6.7': '@storybook/telemetry@7.6.7': dependencies: '@storybook/client-logger': 7.6.7 @@ -10785,8 +10461,7 @@ snapshots: - encoding - supports-color - '@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0)': - '@storybook/theming@7.6.7(react-dom@18.2.0)(react@18.2.0)': + '@storybook/theming@7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@18.2.0) '@storybook/client-logger': 7.6.7 @@ -10795,7 +10470,6 @@ snapshots: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - '@storybook/types@7.6.7': '@storybook/types@7.6.7': dependencies: '@storybook/channels': 7.6.7 @@ -10803,13 +10477,12 @@ snapshots: '@types/express': 4.17.21 file-system-cache: 2.3.0 - '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)': - '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(vite@4.5.1)': + '@storybook/web-components-vite@7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7))': dependencies: - '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1) + '@storybook/builder-vite': 7.6.7(typescript@5.3.3)(vite@4.5.1(@types/node@18.19.6)(sass@1.69.7)) '@storybook/core-server': 7.6.7 '@storybook/node-logger': 7.6.7 - '@storybook/web-components': 7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0) + '@storybook/web-components': 7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0) magic-string: 0.30.5 transitivePeerDependencies: - '@preact/preset-vite' @@ -10824,14 +10497,13 @@ snapshots: - vite - vite-plugin-glimmerx - '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)': - '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0)(react@18.2.0)': + '@storybook/web-components@7.6.7(lit@3.1.1)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: '@storybook/client-logger': 7.6.7 '@storybook/core-client': 7.6.7 '@storybook/docs-tools': 7.6.7 '@storybook/global': 5.0.0 - '@storybook/manager-api': 7.6.7(react-dom@18.2.0)(react@18.2.0) + '@storybook/manager-api': 7.6.7(react-dom@18.2.0(react@18.2.0))(react@18.2.0) '@storybook/preview-api': 7.6.7 '@storybook/types': 7.6.7 lit: 3.1.1 @@ -10844,29 +10516,21 @@ snapshots: - supports-color '@tootallnate/quickjs-emscripten@0.23.0': {} - '@tootallnate/quickjs-emscripten@0.23.0': {} - '@tsconfig/node10@1.0.9': {} '@tsconfig/node10@1.0.9': {} - '@tsconfig/node12@1.0.11': {} '@tsconfig/node12@1.0.11': {} - '@tsconfig/node14@1.0.3': {} '@tsconfig/node14@1.0.3': {} - '@tsconfig/node16@1.0.4': {} '@tsconfig/node16@1.0.4': {} - '@types/accepts@1.3.7': '@types/accepts@1.3.7': dependencies: '@types/node': 18.19.6 '@types/babel__code-frame@7.0.6': {} - '@types/babel__code-frame@7.0.6': {} - '@types/babel__core@7.20.5': '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.23.6 @@ -10875,57 +10539,45 @@ snapshots: '@types/babel__template': 7.4.4 '@types/babel__traverse': 7.20.5 - '@types/babel__generator@7.6.8': '@types/babel__generator@7.6.8': dependencies: '@babel/types': 7.23.6 - '@types/babel__template@7.4.4': '@types/babel__template@7.4.4': dependencies: '@babel/parser': 7.23.6 '@babel/types': 7.23.6 - '@types/babel__traverse@7.20.5': '@types/babel__traverse@7.20.5': dependencies: '@babel/types': 7.23.6 - '@types/body-parser@1.19.5': '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 '@types/node': 18.19.6 - '@types/chai-dom@1.11.3': '@types/chai-dom@1.11.3': dependencies: '@types/chai': 4.3.11 '@types/chai@4.3.11': {} - '@types/chai@4.3.11': {} - '@types/co-body@6.1.3': '@types/co-body@6.1.3': dependencies: '@types/node': 18.19.6 '@types/qs': 6.9.11 '@types/command-line-args@5.2.3': {} - '@types/command-line-args@5.2.3': {} - '@types/connect@3.4.38': '@types/connect@3.4.38': dependencies: '@types/node': 18.19.6 '@types/content-disposition@0.5.8': {} - '@types/content-disposition@0.5.8': {} - '@types/convert-source-map@2.0.3': {} '@types/convert-source-map@2.0.3': {} - '@types/cookies@0.7.10': '@types/cookies@0.7.10': dependencies: '@types/connect': 3.4.38 @@ -10933,120 +10585,89 @@ snapshots: '@types/keygrip': 1.0.6 '@types/node': 18.19.6 - '@types/cross-spawn@6.0.6': '@types/cross-spawn@6.0.6': dependencies: '@types/node': 18.19.6 '@types/d3-array@3.2.1': {} - '@types/d3-array@3.2.1': {} - '@types/d3-axis@3.0.6': '@types/d3-axis@3.0.6': dependencies: '@types/d3-selection': 3.0.10 - '@types/d3-brush@3.0.6': '@types/d3-brush@3.0.6': dependencies: '@types/d3-selection': 3.0.10 '@types/d3-chord@3.0.6': {} - '@types/d3-chord@3.0.6': {} - '@types/d3-color@3.1.3': {} '@types/d3-color@3.1.3': {} - '@types/d3-contour@3.0.6': '@types/d3-contour@3.0.6': dependencies: '@types/d3-array': 3.2.1 '@types/geojson': 7946.0.13 '@types/d3-delaunay@6.0.4': {} - '@types/d3-delaunay@6.0.4': {} - '@types/d3-dispatch@3.0.6': {} '@types/d3-dispatch@3.0.6': {} - '@types/d3-drag@3.0.7': '@types/d3-drag@3.0.7': dependencies: '@types/d3-selection': 3.0.10 '@types/d3-dsv@3.0.7': {} - '@types/d3-dsv@3.0.7': {} - '@types/d3-ease@3.0.2': {} '@types/d3-ease@3.0.2': {} - '@types/d3-fetch@3.0.7': '@types/d3-fetch@3.0.7': dependencies: '@types/d3-dsv': 3.0.7 '@types/d3-force@3.0.9': {} - '@types/d3-force@3.0.9': {} - '@types/d3-format@3.0.4': {} '@types/d3-format@3.0.4': {} - '@types/d3-geo@3.1.0': '@types/d3-geo@3.1.0': dependencies: '@types/geojson': 7946.0.13 '@types/d3-hierarchy@3.1.6': {} - '@types/d3-hierarchy@3.1.6': {} - '@types/d3-interpolate@3.0.4': '@types/d3-interpolate@3.0.4': dependencies: '@types/d3-color': 3.1.3 '@types/d3-path@3.0.2': {} - '@types/d3-path@3.0.2': {} - '@types/d3-polygon@3.0.2': {} '@types/d3-polygon@3.0.2': {} - '@types/d3-quadtree@3.0.6': {} '@types/d3-quadtree@3.0.6': {} - '@types/d3-random@3.0.3': {} '@types/d3-random@3.0.3': {} - '@types/d3-scale-chromatic@3.0.3': {} '@types/d3-scale-chromatic@3.0.3': {} - '@types/d3-scale@4.0.8': '@types/d3-scale@4.0.8': dependencies: '@types/d3-time': 3.0.3 '@types/d3-selection@3.0.10': {} - '@types/d3-selection@3.0.10': {} - '@types/d3-shape@3.1.6': '@types/d3-shape@3.1.6': dependencies: '@types/d3-path': 3.0.2 '@types/d3-time-format@4.0.3': {} - '@types/d3-time-format@4.0.3': {} - '@types/d3-time@3.0.3': {} '@types/d3-time@3.0.3': {} - '@types/d3-timer@3.0.2': {} '@types/d3-timer@3.0.2': {} - '@types/d3-transition@3.0.8': '@types/d3-transition@3.0.8': dependencies: '@types/d3-selection': 3.0.10 - '@types/d3-zoom@3.0.8': '@types/d3-zoom@3.0.8': dependencies: '@types/d3-interpolate': 3.0.4 @@ -11086,38 +10707,28 @@ snapshots: '@types/d3-zoom': 3.0.8 '@types/debounce@1.2.4': {} - '@types/debounce@1.2.4': {} - '@types/debug@4.1.12': '@types/debug@4.1.12': dependencies: '@types/ms': 0.7.34 '@types/detect-port@1.3.5': {} - '@types/detect-port@1.3.5': {} - '@types/doctrine@0.0.3': {} '@types/doctrine@0.0.3': {} - '@types/ejs@3.1.5': {} '@types/ejs@3.1.5': {} - '@types/emscripten@1.39.10': {} '@types/emscripten@1.39.10': {} - '@types/eslint@8.56.1': '@types/eslint@8.56.1': dependencies: '@types/estree': 1.0.5 '@types/json-schema': 7.0.15 '@types/estree@0.0.39': {} - '@types/estree@0.0.39': {} - '@types/estree@1.0.5': {} '@types/estree@1.0.5': {} - '@types/express-serve-static-core@4.17.41': '@types/express-serve-static-core@4.17.41': dependencies: '@types/node': 18.19.6 @@ -11125,7 +10736,6 @@ snapshots: '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express@4.17.21': '@types/express@4.17.21': dependencies: '@types/body-parser': 1.19.5 @@ -11134,58 +10744,44 @@ snapshots: '@types/serve-static': 1.15.5 '@types/find-cache-dir@3.2.1': {} - '@types/find-cache-dir@3.2.1': {} - '@types/geojson@7946.0.13': {} '@types/geojson@7946.0.13': {} - '@types/graceful-fs@4.1.9': '@types/graceful-fs@4.1.9': dependencies: '@types/node': 18.19.6 '@types/http-assert@1.5.5': {} - '@types/http-assert@1.5.5': {} - '@types/http-errors@2.0.4': {} '@types/http-errors@2.0.4': {} - '@types/istanbul-lib-coverage@2.0.6': {} '@types/istanbul-lib-coverage@2.0.6': {} - '@types/istanbul-lib-report@3.0.3': '@types/istanbul-lib-report@3.0.3': dependencies: '@types/istanbul-lib-coverage': 2.0.6 - '@types/istanbul-reports@3.0.4': '@types/istanbul-reports@3.0.4': dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jest@29.5.5': '@types/jest@29.5.5': dependencies: expect: 29.7.0 pretty-format: 29.7.0 - '@types/jquery@3.5.29': '@types/jquery@3.5.29': dependencies: '@types/sizzle': 2.3.8 '@types/json-schema@7.0.15': {} - '@types/json-schema@7.0.15': {} - '@types/keygrip@1.0.6': {} '@types/keygrip@1.0.6': {} - '@types/koa-compose@3.2.8': '@types/koa-compose@3.2.8': dependencies: '@types/koa': 2.14.0 - '@types/koa@2.14.0': '@types/koa@2.14.0': dependencies: '@types/accepts': 1.3.7 @@ -11197,117 +10793,87 @@ snapshots: '@types/koa-compose': 3.2.8 '@types/node': 18.19.6 - '@types/lodash-es@4.17.12': '@types/lodash-es@4.17.12': dependencies: '@types/lodash': 4.14.202 '@types/lodash@4.14.202': {} - '@types/lodash@4.14.202': {} - '@types/mark.js@8.11.12': '@types/mark.js@8.11.12': dependencies: '@types/jquery': 3.5.29 - '@types/mdast@3.0.15': '@types/mdast@3.0.15': dependencies: '@types/unist': 2.0.10 '@types/mdx@2.0.10': {} - '@types/mdx@2.0.10': {} - '@types/mime-types@2.1.4': {} '@types/mime-types@2.1.4': {} - '@types/mime@1.3.5': {} '@types/mime@1.3.5': {} - '@types/mime@3.0.4': {} '@types/mime@3.0.4': {} - '@types/minimist@1.2.5': {} '@types/minimist@1.2.5': {} - '@types/mocha@8.2.3': {} '@types/mocha@8.2.3': {} - '@types/ms@0.7.34': {} '@types/ms@0.7.34': {} - '@types/node-fetch@2.6.10': '@types/node-fetch@2.6.10': dependencies: '@types/node': 18.19.6 form-data: 4.0.0 '@types/node@12.20.55': {} - '@types/node@12.20.55': {} - '@types/node@18.19.6': '@types/node@18.19.6': dependencies: undici-types: 5.26.5 '@types/normalize-package-data@2.4.4': {} - '@types/normalize-package-data@2.4.4': {} - '@types/parse-json@4.0.2': {} '@types/parse-json@4.0.2': {} - '@types/parse5@6.0.3': {} '@types/parse5@6.0.3': {} - '@types/prettier@3.0.0': '@types/prettier@3.0.0': dependencies: prettier: 3.0.3 '@types/pretty-hrtime@1.0.3': {} - '@types/pretty-hrtime@1.0.3': {} - '@types/prop-types@15.7.11': {} '@types/prop-types@15.7.11': {} - '@types/qs@6.9.11': {} '@types/qs@6.9.11': {} - '@types/raf@3.4.3': '@types/raf@3.4.3': optional: true '@types/range-parser@1.2.7': {} - '@types/range-parser@1.2.7': {} - '@types/react@18.2.47': '@types/react@18.2.47': dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 csstype: 3.1.3 - '@types/resolve@1.17.1': '@types/resolve@1.17.1': dependencies: '@types/node': 18.19.6 '@types/resolve@1.20.2': {} - '@types/resolve@1.20.2': {} - '@types/scheduler@0.16.8': {} '@types/scheduler@0.16.8': {} - '@types/semver@7.5.6': {} '@types/semver@7.5.6': {} - '@types/send@0.17.4': '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 '@types/node': 18.19.6 - '@types/serve-static@1.15.5': '@types/serve-static@1.15.5': dependencies: '@types/http-errors': 2.0.4 @@ -11315,51 +10881,38 @@ snapshots: '@types/node': 18.19.6 '@types/showdown@2.0.6': {} - '@types/showdown@2.0.6': {} - '@types/sinon-chai@3.2.12': '@types/sinon-chai@3.2.12': dependencies: '@types/chai': 4.3.11 '@types/sinon': 17.0.3 - '@types/sinon@17.0.3': '@types/sinon@17.0.3': dependencies: '@types/sinonjs__fake-timers': 8.1.5 '@types/sinonjs__fake-timers@8.1.5': {} - '@types/sinonjs__fake-timers@8.1.5': {} - '@types/sizzle@2.3.8': {} '@types/sizzle@2.3.8': {} - '@types/stack-utils@2.0.3': {} '@types/stack-utils@2.0.3': {} - '@types/trusted-types@2.0.7': {} '@types/trusted-types@2.0.7': {} - '@types/unist@2.0.10': {} '@types/unist@2.0.10': {} - '@types/uuid@9.0.7': {} '@types/uuid@9.0.7': {} - '@types/ws@7.4.7': '@types/ws@7.4.7': dependencies: '@types/node': 18.19.6 '@types/yargs-parser@21.0.3': {} - '@types/yargs-parser@21.0.3': {} - '@types/yargs@17.0.32': '@types/yargs@17.0.32': dependencies: '@types/yargs-parser': 21.0.3 - '@types/yauzl@2.10.3': '@types/yauzl@2.10.3': dependencies: '@types/node': 18.19.6 @@ -11367,10 +10920,7 @@ snapshots: '@types/yoga-layout@1.9.2': {} - '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)': - '@types/yoga-layout@1.9.2': {} - - '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1)(eslint@8.56.0)(typescript@5.3.3)': + '@typescript-eslint/eslint-plugin@6.18.1(@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3))(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 6.18.1(eslint@8.56.0)(typescript@5.3.3) @@ -11385,11 +10935,11 @@ snapshots: natural-compare: 1.4.0 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/parser@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/scope-manager': 6.18.1 @@ -11398,23 +10948,21 @@ snapshots: '@typescript-eslint/visitor-keys': 6.18.1 debug: 4.3.4 eslint: 8.56.0 + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@5.62.0': '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@6.18.1': '@typescript-eslint/scope-manager@6.18.1': dependencies: '@typescript-eslint/types': 6.18.1 '@typescript-eslint/visitor-keys': 6.18.1 - '@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/type-utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@typescript-eslint/typescript-estree': 6.18.1(typescript@5.3.3) @@ -11422,6 +10970,7 @@ snapshots: debug: 4.3.4 eslint: 8.56.0 ts-api-utils: 1.0.3(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color @@ -11430,11 +10979,6 @@ snapshots: '@typescript-eslint/types@6.18.1': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)': - '@typescript-eslint/types@5.62.0': {} - - '@typescript-eslint/types@6.18.1': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 5.62.0 @@ -11444,11 +10988,11 @@ snapshots: is-glob: 4.0.3 semver: 7.5.4 tsutils: 3.21.0(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3)': '@typescript-eslint/typescript-estree@6.18.1(typescript@5.3.3)': dependencies: '@typescript-eslint/types': 6.18.1 @@ -11459,11 +11003,11 @@ snapshots: minimatch: 9.0.3 semver: 7.5.4 ts-api-utils: 1.0.3(typescript@5.3.3) + optionalDependencies: typescript: 5.3.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/utils@5.62.0(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -11479,7 +11023,6 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': '@typescript-eslint/utils@6.18.1(eslint@8.56.0)(typescript@5.3.3)': dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -11494,47 +11037,38 @@ snapshots: - supports-color - typescript - '@typescript-eslint/visitor-keys@5.62.0': '@typescript-eslint/visitor-keys@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@6.18.1': '@typescript-eslint/visitor-keys@6.18.1': dependencies: '@typescript-eslint/types': 6.18.1 eslint-visitor-keys: 3.4.3 '@ungap/structured-clone@1.2.0': {} - '@ungap/structured-clone@1.2.0': {} - '@web/browser-logs@0.2.6': '@web/browser-logs@0.2.6': dependencies: errorstacks: 2.4.1 - '@web/browser-logs@0.3.4': '@web/browser-logs@0.3.4': dependencies: errorstacks: 2.4.1 - '@web/browser-logs@0.4.0': '@web/browser-logs@0.4.0': dependencies: errorstacks: 2.4.1 - '@web/config-loader@0.1.3': '@web/config-loader@0.1.3': dependencies: semver: 7.5.4 - '@web/config-loader@0.2.2': '@web/config-loader@0.2.2': dependencies: semver: 7.5.4 - '@web/dev-server-core@0.4.1': '@web/dev-server-core@0.4.1': dependencies: '@types/koa': 2.14.0 @@ -11560,7 +11094,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-core@0.6.3': '@web/dev-server-core@0.6.3': dependencies: '@types/koa': 2.14.0 @@ -11586,7 +11119,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-core@0.7.0': '@web/dev-server-core@0.7.0': dependencies: '@types/koa': 2.14.0 @@ -11612,7 +11144,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-esbuild@0.3.6': '@web/dev-server-esbuild@0.3.6': dependencies: '@mdn/browser-compat-data': 4.2.1 @@ -11625,7 +11156,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-esbuild@0.4.4': '@web/dev-server-esbuild@0.4.4': dependencies: '@mdn/browser-compat-data': 4.2.1 @@ -11638,7 +11168,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-rollup@0.4.1': '@web/dev-server-rollup@0.4.1': dependencies: '@rollup/plugin-node-resolve': 13.3.0(rollup@2.79.1) @@ -11652,7 +11181,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server-rollup@0.5.4': '@web/dev-server-rollup@0.5.4': dependencies: '@rollup/plugin-node-resolve': 15.2.3(rollup@3.29.4) @@ -11666,7 +11194,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server@0.1.38': '@web/dev-server@0.1.38': dependencies: '@babel/code-frame': 7.23.5 @@ -11688,7 +11215,6 @@ snapshots: - supports-color - utf-8-validate - '@web/dev-server@0.3.7': '@web/dev-server@0.3.7': dependencies: '@babel/code-frame': 7.23.5 @@ -11710,19 +11236,16 @@ snapshots: - supports-color - utf-8-validate - '@web/parse5-utils@1.3.1': '@web/parse5-utils@1.3.1': dependencies: '@types/parse5': 6.0.3 parse5: 6.0.1 - '@web/parse5-utils@2.1.0': '@web/parse5-utils@2.1.0': dependencies: '@types/parse5': 6.0.3 parse5: 6.0.1 - '@web/test-runner-chrome@0.10.7': '@web/test-runner-chrome@0.10.7': dependencies: '@web/test-runner-core': 0.10.29 @@ -11735,7 +11258,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-chrome@0.14.4(typescript@5.3.3)': '@web/test-runner-chrome@0.14.4(typescript@5.3.3)': dependencies: '@web/test-runner-core': 0.12.0 @@ -11750,7 +11272,6 @@ snapshots: - typescript - utf-8-validate - '@web/test-runner-commands@0.6.6': '@web/test-runner-commands@0.6.6': dependencies: '@web/test-runner-core': 0.10.29 @@ -11760,7 +11281,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-commands@0.8.3': '@web/test-runner-commands@0.8.3': dependencies: '@web/test-runner-core': 0.12.0 @@ -11770,7 +11290,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-commands@0.9.0': '@web/test-runner-commands@0.9.0': dependencies: '@web/test-runner-core': 0.13.0 @@ -11780,7 +11299,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-core@0.10.29': '@web/test-runner-core@0.10.29': dependencies: '@babel/code-frame': 7.23.5 @@ -11814,7 +11332,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-core@0.12.0': '@web/test-runner-core@0.12.0': dependencies: '@babel/code-frame': 7.23.5 @@ -11848,7 +11365,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-core@0.13.0': '@web/test-runner-core@0.13.0': dependencies: '@babel/code-frame': 7.23.5 @@ -11882,7 +11398,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-coverage-v8@0.4.9': '@web/test-runner-coverage-v8@0.4.9': dependencies: '@web/test-runner-core': 0.10.29 @@ -11894,7 +11409,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-coverage-v8@0.7.3': '@web/test-runner-coverage-v8@0.7.3': dependencies: '@web/test-runner-core': 0.12.0 @@ -11907,7 +11421,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-mocha@0.7.5': '@web/test-runner-mocha@0.7.5': dependencies: '@types/mocha': 8.2.3 @@ -11917,7 +11430,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner-mocha@0.8.2': '@web/test-runner-mocha@0.8.2': dependencies: '@web/test-runner-core': 0.12.0 @@ -11926,7 +11438,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner@0.13.31': '@web/test-runner@0.13.31': dependencies: '@web/browser-logs': 0.2.6 @@ -11951,7 +11462,6 @@ snapshots: - supports-color - utf-8-validate - '@web/test-runner@0.17.3(typescript@5.3.3)': '@web/test-runner@0.17.3(typescript@5.3.3)': dependencies: '@web/browser-logs': 0.3.4 @@ -11977,31 +11487,26 @@ snapshots: - typescript - utf-8-validate - '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': '@yarnpkg/esbuild-plugin-pnp@3.0.0-rc.15(esbuild@0.18.20)': dependencies: esbuild: 0.18.20 tslib: 2.6.2 - '@yarnpkg/fslib@2.10.3': '@yarnpkg/fslib@2.10.3': dependencies: '@yarnpkg/libzip': 2.3.0 tslib: 1.14.1 - '@yarnpkg/libzip@2.3.0': '@yarnpkg/libzip@2.3.0': dependencies: '@types/emscripten': 1.39.10 tslib: 1.14.1 - accepts@1.3.8: accepts@1.3.8: dependencies: mime-types: 2.1.35 negotiator: 0.6.3 - acorn-jsx@5.3.2(acorn@8.11.3): acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 @@ -12014,36 +11519,23 @@ snapshots: agent-base@5.1.1: {} - agent-base@6.0.2: - - acorn-walk@8.3.1: {} - - acorn@8.11.3: {} - - address@1.2.2: {} - - agent-base@5.1.1: {} - agent-base@6.0.2: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - agent-base@7.1.0: agent-base@7.1.0: dependencies: debug: 4.3.4 transitivePeerDependencies: - supports-color - aggregate-error@3.1.0: aggregate-error@3.1.0: dependencies: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv@6.12.6: ajv@6.12.6: dependencies: fast-deep-equal: 3.1.3 @@ -12052,96 +11544,71 @@ snapshots: uri-js: 4.4.1 anser@2.1.1: {} - anser@2.1.1: {} - ansi-colors@4.1.3: {} ansi-colors@4.1.3: {} - ansi-escapes@4.3.2: ansi-escapes@4.3.2: dependencies: type-fest: 0.21.3 - ansi-escapes@5.0.0: ansi-escapes@5.0.0: dependencies: type-fest: 1.4.0 ansi-regex@5.0.1: {} - ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} ansi-regex@6.0.1: {} - ansi-styles@3.2.1: ansi-styles@3.2.1: dependencies: color-convert: 1.9.3 - ansi-styles@4.3.0: ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 ansi-styles@5.2.0: {} - ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} ansi-styles@6.2.1: {} - anymatch@3.1.3: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 app-root-dir@1.0.2: {} - app-root-dir@1.0.2: {} - arg@4.1.3: {} arg@4.1.3: {} - argparse@1.0.10: argparse@1.0.10: dependencies: sprintf-js: 1.0.3 argparse@2.0.1: {} - argparse@2.0.1: {} - aria-hidden@1.2.3: aria-hidden@1.2.3: dependencies: tslib: 2.6.2 array-back@3.1.0: {} - array-back@3.1.0: {} - array-back@4.0.2: {} array-back@4.0.2: {} - array-back@6.2.2: {} array-back@6.2.2: {} - array-buffer-byte-length@1.0.0: array-buffer-byte-length@1.0.0: dependencies: call-bind: 1.0.5 is-array-buffer: 3.0.2 array-flatten@1.1.1: {} - array-flatten@1.1.1: {} - array-parallel@0.1.3: {} array-parallel@0.1.3: {} - array-series@0.1.5: {} array-series@0.1.5: {} - array-union@2.1.0: {} array-union@2.1.0: {} - array.prototype.flat@1.3.2: array.prototype.flat@1.3.2: dependencies: call-bind: 1.0.5 @@ -12149,7 +11616,6 @@ snapshots: es-abstract: 1.22.3 es-shim-unscopables: 1.0.2 - arraybuffer.prototype.slice@1.0.2: arraybuffer.prototype.slice@1.0.2: dependencies: array-buffer-byte-length: 1.0.0 @@ -12161,9 +11627,7 @@ snapshots: is-shared-array-buffer: 1.0.2 arrify@1.0.1: {} - arrify@1.0.1: {} - assert@2.1.0: assert@2.1.0: dependencies: call-bind: 1.0.5 @@ -12172,28 +11636,22 @@ snapshots: object.assign: 4.1.5 util: 0.12.5 - ast-types@0.13.4: ast-types@0.13.4: dependencies: tslib: 2.6.2 - ast-types@0.16.1: ast-types@0.16.1: dependencies: tslib: 2.6.2 astral-regex@2.0.0: {} - astral-regex@2.0.0: {} - async-limiter@1.0.1: {} async-limiter@1.0.1: {} - async-mutex@0.4.0: async-mutex@0.4.0: dependencies: tslib: 2.6.2 - async@2.6.4: async@2.6.4: dependencies: lodash: 4.17.21 @@ -12210,20 +11668,6 @@ snapshots: available-typed-arrays@1.0.5: {} - aws-sdk@2.1532.0: - - async@3.2.5: {} - - asynckit@0.4.0: {} - - at-least-node@1.0.0: {} - - atob@2.1.2: {} - - auto-bind@4.0.0: {} - - available-typed-arrays@1.0.5: {} - aws-sdk@2.1532.0: dependencies: buffer: 4.9.2 @@ -12238,16 +11682,13 @@ snapshots: xml2js: 0.5.0 axe-core@4.8.3: {} - axe-core@4.8.3: {} - axios@0.21.4(debug@4.3.4): axios@0.21.4(debug@4.3.4): dependencies: follow-redirects: 1.15.4(debug@4.3.4) transitivePeerDependencies: - debug - axios@0.27.2: axios@0.27.2: dependencies: follow-redirects: 1.15.4(debug@4.3.4) @@ -12256,14 +11697,11 @@ snapshots: - debug b4a@1.6.4: {} - b4a@1.6.4: {} - babel-core@7.0.0-bridge.0(@babel/core@7.23.7): babel-core@7.0.0-bridge.0(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 - babel-jest@29.7.0(@babel/core@7.23.7): babel-jest@29.7.0(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -12277,7 +11715,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-istanbul@6.1.1: babel-plugin-istanbul@6.1.1: dependencies: '@babel/helper-plugin-utils': 7.22.5 @@ -12288,7 +11725,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-jest-hoist@29.6.3: babel-plugin-jest-hoist@29.6.3: dependencies: '@babel/template': 7.22.15 @@ -12296,7 +11732,6 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.5 - babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): babel-plugin-polyfill-corejs2@0.4.7(@babel/core@7.23.7): dependencies: '@babel/compat-data': 7.23.5 @@ -12306,7 +11741,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): babel-plugin-polyfill-corejs3@0.8.7(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -12315,7 +11749,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): babel-plugin-polyfill-regenerator@0.5.4(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -12323,7 +11756,6 @@ snapshots: transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -12340,7 +11772,6 @@ snapshots: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.7) '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.7) - babel-preset-jest@29.6.3(@babel/core@7.23.7): babel-preset-jest@29.6.3(@babel/core@7.23.7): dependencies: '@babel/core': 7.23.7 @@ -12348,46 +11779,34 @@ snapshots: babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.7) bail@2.0.2: {} - bail@2.0.2: {} - - balanced-match@1.0.2: {} - base64-arraybuffer@1.0.2: balanced-match@1.0.2: {} base64-arraybuffer@1.0.2: optional: true base64-js@1.5.1: {} - base64-js@1.5.1: {} - basic-ftp@5.0.4: {} basic-ftp@5.0.4: {} - better-opn@3.0.2: better-opn@3.0.2: dependencies: open: 8.4.2 - better-path-resolve@1.0.0: better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 big-integer@1.6.52: {} - big-integer@1.6.52: {} - binary-extensions@2.2.0: {} binary-extensions@2.2.0: {} - bl@4.1.0: bl@4.1.0: dependencies: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 - body-parser@1.20.1: body-parser@1.20.1: dependencies: bytes: 3.1.2 @@ -12405,41 +11824,33 @@ snapshots: transitivePeerDependencies: - supports-color - bplist-parser@0.2.0: bplist-parser@0.2.0: dependencies: big-integer: 1.6.52 - brace-expansion@1.1.11: brace-expansion@1.1.11: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: brace-expansion@2.0.1: dependencies: balanced-match: 1.0.2 - braces@3.0.2: braces@3.0.2: dependencies: fill-range: 7.0.1 - breakword@1.0.6: breakword@1.0.6: dependencies: wcwidth: 1.0.1 browser-assert@1.2.1: {} - browser-assert@1.2.1: {} - browserify-zlib@0.1.4: browserify-zlib@0.1.4: dependencies: pako: 0.2.9 - browserslist@4.22.2: browserslist@4.22.2: dependencies: caniuse-lite: 1.0.30001576 @@ -12447,12 +11858,10 @@ snapshots: node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) - bs-logger@0.2.6: bs-logger@0.2.6: dependencies: fast-json-stable-stringify: 2.1.0 - bser@2.1.1: bser@2.1.1: dependencies: node-int64: 0.4.0 @@ -12463,62 +11872,44 @@ snapshots: buffer-from@1.1.2: {} - buffer@4.9.2: - - btoa@1.2.1: {} - - buffer-crc32@0.2.13: {} - - buffer-from@1.1.2: {} - buffer@4.9.2: dependencies: base64-js: 1.5.1 ieee754: 1.1.13 isarray: 1.0.0 - buffer@5.7.1: buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 builtin-modules@3.3.0: {} - builtin-modules@3.3.0: {} - bytes@3.0.0: {} bytes@3.0.0: {} - bytes@3.1.2: {} bytes@3.1.2: {} - cache-content-type@1.0.1: cache-content-type@1.0.1: dependencies: mime-types: 2.1.35 ylru: 1.3.2 - call-bind@1.0.5: call-bind@1.0.5: dependencies: function-bind: 1.1.2 get-intrinsic: 1.2.2 set-function-length: 1.1.1 - caller-callsite@4.1.0: caller-callsite@4.1.0: dependencies: callsites: 3.1.0 - caller-path@3.0.1: caller-path@3.0.1: dependencies: caller-callsite: 4.1.0 callsites@3.1.0: {} - callsites@3.1.0: {} - camelcase-keys@6.2.2: camelcase-keys@6.2.2: dependencies: camelcase: 5.3.1 @@ -12526,15 +11917,11 @@ snapshots: quick-lru: 4.0.1 camelcase@5.3.1: {} - camelcase@5.3.1: {} - camelcase@6.3.0: {} camelcase@6.3.0: {} - caniuse-lite@1.0.30001576: {} caniuse-lite@1.0.30001576: {} - canvg@3.0.10: canvg@3.0.10: dependencies: '@babel/runtime': 7.23.8 @@ -12548,44 +11935,34 @@ snapshots: optional: true ccount@2.0.1: {} - ccount@2.0.1: {} - chai-a11y-axe@1.5.0: chai-a11y-axe@1.5.0: dependencies: axe-core: 4.8.3 - chalk-template@0.4.0: chalk-template@0.4.0: dependencies: chalk: 4.1.2 - chalk@2.4.2: chalk@2.4.2: dependencies: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 - chalk@4.1.2: chalk@4.1.2: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 chalk@5.3.0: {} - chalk@5.3.0: {} - char-regex@1.0.2: {} char-regex@1.0.2: {} - character-entities@2.0.2: {} character-entities@2.0.2: {} - chardet@0.7.0: {} chardet@0.7.0: {} - chokidar@3.5.2: chokidar@3.5.2: dependencies: anymatch: 3.1.3 @@ -12598,7 +11975,6 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@3.5.3: chokidar@3.5.3: dependencies: anymatch: 3.1.3 @@ -12612,12 +11988,9 @@ snapshots: fsevents: 2.3.3 chownr@1.1.4: {} - chownr@1.1.4: {} - chownr@2.0.0: {} chownr@2.0.0: {} - chrome-launcher@0.14.2: chrome-launcher@0.14.2: dependencies: '@types/node': 18.19.6 @@ -12627,7 +12000,6 @@ snapshots: transitivePeerDependencies: - supports-color - chrome-launcher@0.15.2: chrome-launcher@0.15.2: dependencies: '@types/node': 18.19.6 @@ -12637,7 +12009,6 @@ snapshots: transitivePeerDependencies: - supports-color - chrome-remote-interface@0.32.2: chrome-remote-interface@0.32.2: dependencies: commander: 2.11.0 @@ -12646,79 +12017,63 @@ snapshots: - bufferutil - utf-8-validate - chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): chromium-bidi@0.4.16(devtools-protocol@0.0.1147663): dependencies: devtools-protocol: 0.0.1147663 mitt: 3.0.0 ci-info@2.0.0: {} - ci-info@2.0.0: {} - ci-info@3.9.0: {} ci-info@3.9.0: {} - citty@0.1.5: citty@0.1.5: dependencies: consola: 3.2.3 cjs-module-lexer@1.2.3: {} - cjs-module-lexer@1.2.3: {} - clean-stack@2.2.0: {} clean-stack@2.2.0: {} - cli-boxes@2.2.1: {} cli-boxes@2.2.1: {} - cli-cursor@3.1.0: cli-cursor@3.1.0: dependencies: restore-cursor: 3.1.0 - cli-cursor@4.0.0: cli-cursor@4.0.0: dependencies: restore-cursor: 4.0.0 cli-spinners@2.9.2: {} - cli-spinners@2.9.2: {} - cli-table3@0.6.3: cli-table3@0.6.3: dependencies: string-width: 4.2.3 optionalDependencies: '@colors/colors': 1.5.0 - cli-truncate@2.1.0: cli-truncate@2.1.0: dependencies: slice-ansi: 3.0.0 string-width: 4.2.3 - cli-truncate@3.1.0: cli-truncate@3.1.0: dependencies: slice-ansi: 5.0.0 string-width: 5.1.2 - cliui@6.0.0: cliui@6.0.0: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - cliui@8.0.1: cliui@8.0.1: dependencies: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - clone-deep@4.0.1: clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 @@ -12726,12 +12081,9 @@ snapshots: shallow-clone: 3.0.1 clone@1.0.4: {} - clone@1.0.4: {} - clone@2.1.2: {} clone@2.1.2: {} - co-body@6.1.0: co-body@6.1.0: dependencies: inflation: 2.1.0 @@ -12740,47 +12092,35 @@ snapshots: type-is: 1.6.18 co@4.6.0: {} - co@4.6.0: {} - code-excerpt@3.0.0: code-excerpt@3.0.0: dependencies: convert-to-spaces: 1.0.2 collect-v8-coverage@1.0.2: {} - collect-v8-coverage@1.0.2: {} - color-convert@0.5.3: {} color-convert@0.5.3: {} - color-convert@1.9.3: color-convert@1.9.3: dependencies: color-name: 1.1.3 - color-convert@2.0.1: color-convert@2.0.1: dependencies: color-name: 1.1.4 color-diff@1.4.0: {} - color-diff@1.4.0: {} - color-name@1.1.3: {} color-name@1.1.3: {} - color-name@1.1.4: {} color-name@1.1.4: {} - colorette@2.0.20: {} colorette@2.0.20: {} - combined-stream@1.0.8: combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 - command-line-args@5.1.2: command-line-args@5.1.2: dependencies: array-back: 6.2.2 @@ -12788,7 +12128,6 @@ snapshots: lodash.camelcase: 4.3.0 typical: 4.0.0 - command-line-args@5.2.1: command-line-args@5.2.1: dependencies: array-back: 3.1.0 @@ -12796,7 +12135,6 @@ snapshots: lodash.camelcase: 4.3.0 typical: 4.0.0 - command-line-usage@6.1.3: command-line-usage@6.1.3: dependencies: array-back: 4.0.2 @@ -12804,7 +12142,6 @@ snapshots: table-layout: 1.0.2 typical: 5.2.0 - command-line-usage@7.0.1: command-line-usage@7.0.1: dependencies: array-back: 6.2.2 @@ -12813,32 +12150,23 @@ snapshots: typical: 7.1.1 commander@11.0.0: {} - commander@11.0.0: {} - commander@2.11.0: {} commander@2.11.0: {} - commander@6.2.1: {} commander@6.2.1: {} - commander@7.2.0: {} commander@7.2.0: {} - commander@9.5.0: {} commander@9.5.0: {} - comment-parser@1.2.4: {} comment-parser@1.2.4: {} - commondir@1.0.1: {} commondir@1.0.1: {} - compressible@2.0.18: compressible@2.0.18: dependencies: mime-db: 1.52.0 - compression@1.7.4: compression@1.7.4: dependencies: accepts: 1.3.8 @@ -12852,9 +12180,7 @@ snapshots: - supports-color concat-map@0.0.1: {} - concat-map@0.0.1: {} - concat-stream@1.6.2: concat-stream@1.6.2: dependencies: buffer-from: 1.1.2 @@ -12862,7 +12188,6 @@ snapshots: readable-stream: 2.3.8 typedarray: 0.0.6 - concurrently@8.2.2: concurrently@8.2.2: dependencies: chalk: 4.1.2 @@ -12876,50 +12201,37 @@ snapshots: yargs: 17.7.2 consola@3.2.3: {} - consola@3.2.3: {} - content-disposition@0.5.4: content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 content-type@1.0.5: {} - content-type@1.0.5: {} - convert-source-map@1.9.0: {} convert-source-map@1.9.0: {} - convert-source-map@2.0.0: {} convert-source-map@2.0.0: {} - convert-to-spaces@1.0.2: {} convert-to-spaces@1.0.2: {} - cookie-signature@1.0.6: {} cookie-signature@1.0.6: {} - cookie@0.5.0: {} cookie@0.5.0: {} - cookies@0.9.1: cookies@0.9.1: dependencies: depd: 2.0.0 keygrip: 1.1.0 - core-js-compat@3.35.0: core-js-compat@3.35.0: dependencies: browserslist: 4.22.2 - core-js@3.35.0: core-js@3.35.0: optional: true core-util-is@1.0.3: {} - core-util-is@1.0.3: {} - cosmiconfig@7.1.0: cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 @@ -12928,14 +12240,13 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 - create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): - create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): + create-jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -12945,36 +12256,30 @@ snapshots: - ts-node create-require@1.1.1: {} - create-require@1.1.1: {} - cross-fetch@3.1.5: cross-fetch@3.1.5: dependencies: node-fetch: 2.6.7 transitivePeerDependencies: - encoding - cross-fetch@4.0.0: cross-fetch@4.0.0: dependencies: node-fetch: 2.7.0 transitivePeerDependencies: - encoding - cross-spawn@4.0.2: cross-spawn@4.0.2: dependencies: lru-cache: 4.1.5 which: 1.3.1 - cross-spawn@5.1.0: cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.3: cross-spawn@7.0.3: dependencies: path-key: 3.1.1 @@ -12982,27 +12287,20 @@ snapshots: which: 2.0.2 crypto-random-string@2.0.0: {} - crypto-random-string@2.0.0: {} - css-line-break@2.1.0: css-line-break@2.1.0: dependencies: utrie: 1.0.2 optional: true csstype@3.1.3: {} - csstype@3.1.3: {} - csv-generate@3.4.3: {} csv-generate@3.4.3: {} - csv-parse@4.16.3: {} csv-parse@4.16.3: {} - csv-stringify@5.6.5: {} csv-stringify@5.6.5: {} - csv@5.5.3: csv@5.5.3: dependencies: csv-generate: 3.4.3 @@ -13011,17 +12309,13 @@ snapshots: stream-transform: 2.1.3 custom-elements-manifest@1.0.0: {} - custom-elements-manifest@1.0.0: {} - d3-array@3.2.4: d3-array@3.2.4: dependencies: internmap: 2.0.3 d3-axis@3.0.0: {} - d3-axis@3.0.0: {} - d3-brush@3.0.0: d3-brush@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -13030,15 +12324,12 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - d3-chord@3.0.1: d3-chord@3.0.1: dependencies: d3-path: 3.1.0 d3-color@3.1.0: {} - d3-color@3.1.0: {} - d3-contour@4.0.2: d3-contour@4.0.2: dependencies: d3-array: 3.2.4 @@ -13050,21 +12341,17 @@ snapshots: quadprog: 1.6.1 stringify-object: 5.0.0 - d3-delaunay@6.0.4: d3-delaunay@6.0.4: dependencies: delaunator: 5.0.0 d3-dispatch@3.0.1: {} - d3-dispatch@3.0.1: {} - d3-drag@3.0.0: d3-drag@3.0.0: dependencies: d3-dispatch: 3.0.1 d3-selection: 3.0.0 - d3-dsv@3.0.1: d3-dsv@3.0.1: dependencies: commander: 7.2.0 @@ -13072,14 +12359,11 @@ snapshots: rw: 1.3.3 d3-ease@3.0.1: {} - d3-ease@3.0.1: {} - d3-fetch@3.0.1: d3-fetch@3.0.1: dependencies: d3-dsv: 3.0.1 - d3-force@3.0.0: d3-force@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -13087,40 +12371,30 @@ snapshots: d3-timer: 3.0.1 d3-format@3.1.0: {} - d3-format@3.1.0: {} - d3-geo@3.1.0: d3-geo@3.1.0: dependencies: d3-array: 3.2.4 d3-hierarchy@3.1.2: {} - d3-hierarchy@3.1.2: {} - d3-interpolate@3.0.1: d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 d3-path@3.1.0: {} - d3-path@3.1.0: {} - d3-polygon@3.0.1: {} d3-polygon@3.0.1: {} - d3-quadtree@3.0.1: {} d3-quadtree@3.0.1: {} - d3-random@3.0.1: {} d3-random@3.0.1: {} - d3-scale-chromatic@3.0.0: d3-scale-chromatic@3.0.0: dependencies: d3-color: 3.1.0 d3-interpolate: 3.0.1 - d3-scale@4.0.2: d3-scale@4.0.2: dependencies: d3-array: 3.2.4 @@ -13130,29 +12404,21 @@ snapshots: d3-time-format: 4.1.0 d3-selection@3.0.0: {} - d3-selection@3.0.0: {} - d3-shape@3.2.0: d3-shape@3.2.0: dependencies: d3-path: 3.1.0 - d3-time-format@4.1.0: d3-time-format@4.1.0: dependencies: d3-time: 3.1.0 - d3-time@3.1.0: d3-time@3.1.0: dependencies: d3-array: 3.2.4 d3-timer@3.0.1: {} - d3-transition@3.0.1(d3-selection@3.0.0): - - d3-timer@3.0.1: {} - d3-transition@3.0.1(d3-selection@3.0.0): dependencies: d3-color: 3.1.0 @@ -13162,7 +12428,6 @@ snapshots: d3-selection: 3.0.0 d3-timer: 3.0.1 - d3-zoom@3.0.0: d3-zoom@3.0.0: dependencies: d3-dispatch: 3.0.1 @@ -13171,7 +12436,6 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) - d3@7.8.5: d3@7.8.5: dependencies: d3-array: 3.2.4 @@ -13206,45 +12470,32 @@ snapshots: d3-zoom: 3.0.0 data-uri-to-buffer@6.0.1: {} - data-uri-to-buffer@6.0.1: {} - date-fns@2.30.0: date-fns@2.30.0: dependencies: '@babel/runtime': 7.23.8 debounce@1.2.1: {} - debug@2.6.9: - - debounce@1.2.1: {} - debug@2.6.9: dependencies: ms: 2.0.0 - debug@3.2.7: - debug@3.2.7: dependencies: ms: 2.1.3 - debug@4.3.4: - debug@4.3.4: dependencies: ms: 2.1.2 - decamelize-keys@1.1.1: decamelize-keys@1.1.1: dependencies: decamelize: 1.2.0 map-obj: 1.0.1 decamelize@1.2.0: {} - decamelize@1.2.0: {} - decode-named-character-reference@1.0.2: decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -13259,29 +12510,15 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@3.0.0: - - dedent@1.5.1: {} - - deep-equal@1.0.1: {} - - deep-extend@0.6.0: {} - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - default-browser-id@3.0.0: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 - defaults@1.0.4: defaults@1.0.4: dependencies: clone: 1.0.4 - define-data-property@1.1.1: define-data-property@1.1.1: dependencies: get-intrinsic: 1.2.2 @@ -13289,9 +12526,7 @@ snapshots: has-property-descriptors: 1.0.1 define-lazy-prop@2.0.0: {} - define-lazy-prop@2.0.0: {} - define-properties@1.2.1: define-properties@1.2.1: dependencies: define-data-property: 1.1.1 @@ -13299,16 +12534,13 @@ snapshots: object-keys: 1.1.1 defu@6.1.4: {} - defu@6.1.4: {} - degenerator@5.0.1: degenerator@5.0.1: dependencies: ast-types: 0.13.4 escodegen: 2.1.0 esprima: 4.0.1 - del@6.1.1: del@6.1.1: dependencies: globby: 11.1.0 @@ -13320,47 +12552,34 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 - delaunator@5.0.0: delaunator@5.0.0: dependencies: robust-predicates: 3.0.2 delayed-stream@1.0.0: {} - delayed-stream@1.0.0: {} - delegates@1.0.0: {} delegates@1.0.0: {} - depd@1.1.2: {} depd@1.1.2: {} - depd@2.0.0: {} depd@2.0.0: {} - dependency-graph@0.11.0: {} dependency-graph@0.11.0: {} - dequal@2.0.3: {} dequal@2.0.3: {} - destroy@1.2.0: {} destroy@1.2.0: {} - detect-indent@6.1.0: {} detect-indent@6.1.0: {} - detect-newline@3.1.0: {} detect-newline@3.1.0: {} - detect-node-es@1.1.0: {} detect-node-es@1.1.0: {} - detect-package-manager@2.0.1: detect-package-manager@2.0.1: dependencies: execa: 5.1.1 - detect-port@1.5.1: detect-port@1.5.1: dependencies: address: 1.2.2 @@ -13369,41 +12588,30 @@ snapshots: - supports-color devtools-protocol@0.0.1147663: {} - devtools-protocol@0.0.1147663: {} - devtools-protocol@0.0.981744: {} devtools-protocol@0.0.981744: {} - diff-sequences@29.6.3: {} diff-sequences@29.6.3: {} - diff@4.0.2: {} diff@4.0.2: {} - diff@5.1.0: {} diff@5.1.0: {} - dir-glob@3.0.1: dir-glob@3.0.1: dependencies: path-type: 4.0.0 - doctrine@3.0.0: doctrine@3.0.0: dependencies: esutils: 2.0.3 - dompurify@2.4.7: dompurify@2.4.7: optional: true dotenv-expand@10.0.0: {} - dotenv-expand@10.0.0: {} - dotenv@16.0.3: {} dotenv@16.0.3: {} - duplexify@3.7.1: duplexify@3.7.1: dependencies: end-of-stream: 1.4.4 @@ -13412,40 +12620,29 @@ snapshots: stream-shift: 1.0.1 eastasianwidth@0.2.0: {} - eastasianwidth@0.2.0: {} - ee-first@1.1.1: {} ee-first@1.1.1: {} - ejs@3.1.9: ejs@3.1.9: dependencies: jake: 10.8.7 electron-to-chromium@1.4.626: {} - electron-to-chromium@1.4.626: {} - emittery@0.13.1: {} emittery@0.13.1: {} - emoji-mart@5.5.2: {} emoji-mart@5.5.2: {} - emoji-regex@8.0.0: {} emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} emoji-regex@9.2.2: {} - encodeurl@1.0.2: {} encodeurl@1.0.2: {} - end-of-stream@1.4.4: end-of-stream@1.4.4: dependencies: once: 1.4.0 - enquirer@2.4.1: enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -13453,18 +12650,12 @@ snapshots: envinfo@7.11.0: {} - error-ex@1.3.2: - - envinfo@7.11.0: {} - error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 errorstacks@2.4.1: {} - errorstacks@2.4.1: {} - es-abstract@1.22.3: es-abstract@1.22.3: dependencies: array-buffer-byte-length: 1.0.0 @@ -13508,98 +12699,75 @@ snapshots: which-typed-array: 1.1.13 es-module-lexer@0.9.3: {} - es-module-lexer@0.9.3: {} - es-module-lexer@1.4.1: {} es-module-lexer@1.4.1: {} - es-set-tostringtag@2.0.2: es-set-tostringtag@2.0.2: dependencies: get-intrinsic: 1.2.2 has-tostringtag: 1.0.0 hasown: 2.0.0 - es-shim-unscopables@1.0.2: es-shim-unscopables@1.0.2: dependencies: hasown: 2.0.0 - es-to-primitive@1.2.1: es-to-primitive@1.2.1: dependencies: is-callable: 1.2.7 is-date-object: 1.0.5 is-symbol: 1.0.4 - esbuild-android-64@0.14.54: esbuild-android-64@0.14.54: optional: true - esbuild-android-arm64@0.14.54: esbuild-android-arm64@0.14.54: optional: true - esbuild-darwin-64@0.14.54: esbuild-darwin-64@0.14.54: optional: true - esbuild-darwin-arm64@0.14.54: esbuild-darwin-arm64@0.14.54: optional: true - esbuild-freebsd-64@0.14.54: esbuild-freebsd-64@0.14.54: optional: true - esbuild-freebsd-arm64@0.14.54: esbuild-freebsd-arm64@0.14.54: optional: true - esbuild-linux-32@0.14.54: esbuild-linux-32@0.14.54: optional: true - esbuild-linux-64@0.14.54: esbuild-linux-64@0.14.54: optional: true - esbuild-linux-arm64@0.14.54: esbuild-linux-arm64@0.14.54: optional: true - esbuild-linux-arm@0.14.54: esbuild-linux-arm@0.14.54: optional: true - esbuild-linux-mips64le@0.14.54: esbuild-linux-mips64le@0.14.54: optional: true - esbuild-linux-ppc64le@0.14.54: esbuild-linux-ppc64le@0.14.54: optional: true - esbuild-linux-riscv64@0.14.54: esbuild-linux-riscv64@0.14.54: optional: true - esbuild-linux-s390x@0.14.54: esbuild-linux-s390x@0.14.54: optional: true - esbuild-netbsd-64@0.14.54: esbuild-netbsd-64@0.14.54: optional: true - esbuild-openbsd-64@0.14.54: esbuild-openbsd-64@0.14.54: optional: true esbuild-plugin-alias@0.2.1: {} - esbuild-plugin-alias@0.2.1: {} - esbuild-register@3.5.0(esbuild@0.18.20): esbuild-register@3.5.0(esbuild@0.18.20): dependencies: debug: 4.3.4 @@ -13607,29 +12775,23 @@ snapshots: transitivePeerDependencies: - supports-color - esbuild-sass-plugin@2.2.6: esbuild-sass-plugin@2.2.6: dependencies: esbuild: 0.14.54 sass: 1.69.7 - esbuild-sunos-64@0.14.54: esbuild-sunos-64@0.14.54: optional: true - esbuild-windows-32@0.14.54: esbuild-windows-32@0.14.54: optional: true - esbuild-windows-64@0.14.54: esbuild-windows-64@0.14.54: optional: true - esbuild-windows-arm64@0.14.54: esbuild-windows-arm64@0.14.54: optional: true - esbuild@0.14.54: esbuild@0.14.54: optionalDependencies: '@esbuild/linux-loong64': 0.14.54 @@ -13654,7 +12816,6 @@ snapshots: esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 - esbuild@0.17.19: esbuild@0.17.19: optionalDependencies: '@esbuild/android-arm': 0.17.19 @@ -13680,7 +12841,6 @@ snapshots: '@esbuild/win32-ia32': 0.17.19 '@esbuild/win32-x64': 0.17.19 - esbuild@0.18.20: esbuild@0.18.20: optionalDependencies: '@esbuild/android-arm': 0.18.20 @@ -13706,7 +12866,6 @@ snapshots: '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 - esbuild@0.19.11: esbuild@0.19.11: optionalDependencies: '@esbuild/aix-ppc64': 0.19.11 @@ -13734,24 +12893,17 @@ snapshots: '@esbuild/win32-x64': 0.19.11 escalade@3.1.1: {} - escalade@3.1.1: {} - escape-html@1.0.3: {} escape-html@1.0.3: {} - escape-string-regexp@1.0.5: {} escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@4.0.0: {} - escape-string-regexp@5.0.0: {} escape-string-regexp@5.0.0: {} - escodegen@2.1.0: escodegen@2.1.0: dependencies: esprima: 4.0.1 @@ -13760,12 +12912,10 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@9.1.0(eslint@8.56.0): eslint-config-prettier@9.1.0(eslint@8.56.0): dependencies: eslint: 8.56.0 - eslint-plugin-storybook@0.6.15(eslint@8.56.0)(typescript@5.3.3): eslint-plugin-storybook@0.6.15(eslint@8.56.0)(typescript@5.3.3): dependencies: '@storybook/csf': 0.0.1 @@ -13777,22 +12927,18 @@ snapshots: - supports-color - typescript - eslint-scope@5.1.1: eslint-scope@5.1.1: dependencies: esrecurse: 4.3.0 estraverse: 4.3.0 - eslint-scope@7.2.2: eslint-scope@7.2.2: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@3.4.3: {} - eslint@8.56.0: eslint@8.56.0: dependencies: '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) @@ -13836,7 +12982,6 @@ snapshots: transitivePeerDependencies: - supports-color - espree@9.6.1: espree@9.6.1: dependencies: acorn: 8.11.3 @@ -13845,44 +12990,30 @@ snapshots: esprima@4.0.1: {} - esquery@1.5.0: - - esprima@4.0.1: {} - esquery@1.5.0: dependencies: estraverse: 5.3.0 - esrecurse@4.3.0: esrecurse@4.3.0: dependencies: estraverse: 5.3.0 estraverse@4.3.0: {} - estraverse@4.3.0: {} - estraverse@5.3.0: {} estraverse@5.3.0: {} - estree-walker@1.0.1: {} estree-walker@1.0.1: {} - estree-walker@2.0.2: {} estree-walker@2.0.2: {} - esutils@2.0.3: {} esutils@2.0.3: {} - etag@1.8.1: {} etag@1.8.1: {} - eventemitter3@5.0.1: {} eventemitter3@5.0.1: {} - events@1.1.1: {} events@1.1.1: {} - execa@5.1.1: execa@5.1.1: dependencies: cross-spawn: 7.0.3 @@ -13895,7 +13026,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@7.2.0: execa@7.2.0: dependencies: cross-spawn: 7.0.3 @@ -13908,7 +13038,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 3.0.0 - execa@8.0.1: execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -13922,9 +13051,7 @@ snapshots: strip-final-newline: 3.0.0 exit@0.1.2: {} - exit@0.1.2: {} - expect@29.7.0: expect@29.7.0: dependencies: '@jest/expect-utils': 29.7.0 @@ -13933,7 +13060,6 @@ snapshots: jest-message-util: 29.7.0 jest-util: 29.7.0 - express@4.18.2: express@4.18.2: dependencies: accepts: 1.3.8 @@ -13971,19 +13097,15 @@ snapshots: - supports-color extend@3.0.2: {} - extend@3.0.2: {} - extendable-error@0.1.7: {} extendable-error@0.1.7: {} - external-editor@3.1.0: external-editor@3.1.0: dependencies: chardet: 0.7.0 iconv-lite: 0.4.24 tmp: 0.0.33 - extract-zip@1.7.0: extract-zip@1.7.0: dependencies: concat-stream: 1.6.2 @@ -13993,7 +13115,6 @@ snapshots: transitivePeerDependencies: - supports-color - extract-zip@2.0.1: extract-zip@2.0.1: dependencies: debug: 4.3.4 @@ -14005,12 +13126,9 @@ snapshots: - supports-color fast-deep-equal@3.1.3: {} - fast-deep-equal@3.1.3: {} - fast-fifo@1.3.2: {} fast-fifo@1.3.2: {} - fast-glob@3.3.2: fast-glob@3.3.2: dependencies: '@nodelib/fs.stat': 2.0.5 @@ -14020,54 +13138,42 @@ snapshots: micromatch: 4.0.5 fast-json-stable-stringify@2.1.0: {} - fast-json-stable-stringify@2.1.0: {} - fast-levenshtein@2.0.6: {} fast-levenshtein@2.0.6: {} - fastq@1.16.0: fastq@1.16.0: dependencies: reusify: 1.0.4 - fb-watchman@2.0.2: fb-watchman@2.0.2: dependencies: bser: 2.1.1 - fd-slicer@1.1.0: fd-slicer@1.1.0: dependencies: pend: 1.2.0 fetch-retry@5.0.6: {} - fetch-retry@5.0.6: {} - fflate@0.4.8: {} fflate@0.4.8: {} - file-entry-cache@6.0.1: file-entry-cache@6.0.1: dependencies: flat-cache: 3.2.0 - file-system-cache@2.3.0: file-system-cache@2.3.0: dependencies: fs-extra: 11.1.1 ramda: 0.29.0 - filelist@1.0.4: filelist@1.0.4: dependencies: minimatch: 5.1.6 - fill-range@7.0.1: fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 - finalhandler@1.2.0: finalhandler@1.2.0: dependencies: debug: 2.6.9 @@ -14080,14 +13186,12 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@2.1.0: find-cache-dir@2.1.0: dependencies: commondir: 1.0.1 make-dir: 2.1.0 pkg-dir: 3.0.0 - find-cache-dir@3.3.2: find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 @@ -14095,37 +13199,30 @@ snapshots: pkg-dir: 4.2.0 find-free-port-sync@1.0.0: {} - find-free-port-sync@1.0.0: {} - find-replace@3.0.0: find-replace@3.0.0: dependencies: array-back: 3.1.0 - find-up@3.0.0: find-up@3.0.0: dependencies: locate-path: 3.0.0 - find-up@4.1.0: find-up@4.1.0: dependencies: locate-path: 5.0.0 path-exists: 4.0.0 - find-up@5.0.0: find-up@5.0.0: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - find-yarn-workspace-root2@1.2.16: find-yarn-workspace-root2@1.2.16: dependencies: micromatch: 4.0.5 pkg-dir: 4.2.0 - flat-cache@3.2.0: flat-cache@3.2.0: dependencies: flatted: 3.2.9 @@ -14139,29 +13236,18 @@ snapshots: flow-parser@0.226.0: {} follow-redirects@1.15.4(debug@4.3.4): - - flatpickr@4.6.13: {} - - flatted@3.2.9: {} - - flow-parser@0.226.0: {} - - follow-redirects@1.15.4(debug@4.3.4): - dependencies: + optionalDependencies: debug: 4.3.4 - for-each@0.3.3: for-each@0.3.3: dependencies: is-callable: 1.2.7 - foreground-child@3.1.1: foreground-child@3.1.1: dependencies: cross-spawn: 7.0.3 signal-exit: 4.1.0 - form-data@4.0.0: form-data@4.0.0: dependencies: asynckit: 0.4.0 @@ -14169,43 +13255,35 @@ snapshots: mime-types: 2.1.35 forwarded@0.2.0: {} - forwarded@0.2.0: {} - fresh@0.5.2: {} fresh@0.5.2: {} - fs-constants@1.0.0: {} fs-constants@1.0.0: {} - fs-extra@11.1.1: fs-extra@11.1.1: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@11.2.0: fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 jsonfile: 6.1.0 universalify: 2.0.1 - fs-extra@7.0.1: fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - fs-extra@8.1.0: fs-extra@8.1.0: dependencies: graceful-fs: 4.2.11 jsonfile: 4.0.0 universalify: 0.1.2 - fs-extra@9.1.0: fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 @@ -14213,7 +13291,6 @@ snapshots: jsonfile: 6.1.0 universalify: 2.0.1 - fs-minipass@2.1.0: fs-minipass@2.1.0: dependencies: minipass: 3.3.6 @@ -14221,16 +13298,10 @@ snapshots: fs.realpath@1.0.0: {} fsevents@2.3.3: + optional: true - fs.realpath@1.0.0: {} - - fsevents@2.3.3: - optional: true - - function-bind@1.1.2: {} function-bind@1.1.2: {} - function.prototype.name@1.1.6: function.prototype.name@1.1.6: dependencies: call-bind: 1.0.5 @@ -14239,15 +13310,11 @@ snapshots: functions-have-names: 1.2.3 functions-have-names@1.2.3: {} - functions-have-names@1.2.3: {} - gensync@1.0.0-beta.2: {} gensync@1.0.0-beta.2: {} - get-caller-file@2.0.5: {} get-caller-file@2.0.5: {} - get-intrinsic@1.2.2: get-intrinsic@1.2.2: dependencies: function-bind: 1.1.2 @@ -14270,18 +13337,14 @@ snapshots: pump: 3.0.0 get-stream@6.0.1: {} - get-stream@6.0.1: {} - get-stream@8.0.1: {} get-stream@8.0.1: {} - get-symbol-description@1.0.0: get-symbol-description@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 - get-uri@6.0.2: get-uri@6.0.2: dependencies: basic-ftp: 5.0.4 @@ -14291,7 +13354,6 @@ snapshots: transitivePeerDependencies: - supports-color - giget@1.2.1: giget@1.2.1: dependencies: citty: 0.1.5 @@ -14304,22 +13366,17 @@ snapshots: tar: 6.2.0 github-slugger@1.5.0: {} - github-slugger@1.5.0: {} - glob-parent@5.1.2: glob-parent@5.1.2: dependencies: is-glob: 4.0.3 - glob-parent@6.0.2: glob-parent@6.0.2: dependencies: is-glob: 4.0.3 glob-to-regexp@0.4.1: {} - glob-to-regexp@0.4.1: {} - glob@10.3.10: glob@10.3.10: dependencies: foreground-child: 3.1.1 @@ -14328,7 +13385,6 @@ snapshots: minipass: 7.0.4 path-scurry: 1.10.1 - glob@7.2.3: glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -14339,19 +13395,15 @@ snapshots: path-is-absolute: 1.0.1 globals@11.12.0: {} - globals@11.12.0: {} - globals@13.24.0: globals@13.24.0: dependencies: type-fest: 0.20.2 - globalthis@1.0.3: globalthis@1.0.3: dependencies: define-properties: 1.2.1 - globby@11.0.4: globby@11.0.4: dependencies: array-union: 2.1.0 @@ -14361,7 +13413,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - globby@11.1.0: globby@11.1.0: dependencies: array-union: 2.1.0 @@ -14371,7 +13422,6 @@ snapshots: merge2: 1.4.1 slash: 3.0.0 - gm@1.25.0: gm@1.25.0: dependencies: array-parallel: 0.1.3 @@ -14381,24 +13431,18 @@ snapshots: transitivePeerDependencies: - supports-color - gopd@1.0.1: gopd@1.0.1: dependencies: get-intrinsic: 1.2.2 graceful-fs@4.2.11: {} - graceful-fs@4.2.11: {} - grapheme-splitter@1.0.4: {} grapheme-splitter@1.0.4: {} - graphemer@1.4.0: {} graphemer@1.4.0: {} - gridstack@9.5.1: {} gridstack@9.5.1: {} - gunzip-maybe@1.4.2: gunzip-maybe@1.4.2: dependencies: browserify-zlib: 0.1.4 @@ -14408,7 +13452,6 @@ snapshots: pumpify: 1.5.1 through2: 2.0.5 - handlebars@4.7.8: handlebars@4.7.8: dependencies: minimist: 1.2.8 @@ -14419,58 +13462,44 @@ snapshots: uglify-js: 3.17.4 hard-rejection@2.1.0: {} - hard-rejection@2.1.0: {} - has-bigints@1.0.2: {} has-bigints@1.0.2: {} - has-flag@3.0.0: {} has-flag@3.0.0: {} - has-flag@4.0.0: {} has-flag@4.0.0: {} - has-property-descriptors@1.0.1: has-property-descriptors@1.0.1: dependencies: get-intrinsic: 1.2.2 has-proto@1.0.1: {} - has-proto@1.0.1: {} - has-symbols@1.0.3: {} has-symbols@1.0.3: {} - has-tostringtag@1.0.0: has-tostringtag@1.0.0: dependencies: has-symbols: 1.0.3 - hasown@2.0.0: hasown@2.0.0: dependencies: function-bind: 1.1.2 hosted-git-info@2.8.9: {} - hosted-git-info@2.8.9: {} - html-escaper@2.0.2: {} html-escaper@2.0.2: {} - html2canvas@1.4.1: html2canvas@1.4.1: dependencies: css-line-break: 2.1.0 text-segmentation: 1.0.3 optional: true - http-assert@1.5.0: http-assert@1.5.0: dependencies: deep-equal: 1.0.1 http-errors: 1.8.1 - http-errors@1.6.3: http-errors@1.6.3: dependencies: depd: 1.1.2 @@ -14478,7 +13507,6 @@ snapshots: setprototypeof: 1.1.0 statuses: 1.5.0 - http-errors@1.8.1: http-errors@1.8.1: dependencies: depd: 1.1.2 @@ -14487,7 +13515,6 @@ snapshots: statuses: 1.5.0 toidentifier: 1.0.1 - http-errors@2.0.0: http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -14496,7 +13523,6 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-proxy-agent@7.0.0: http-proxy-agent@7.0.0: dependencies: agent-base: 7.1.0 @@ -14504,7 +13530,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@4.0.0: https-proxy-agent@4.0.0: dependencies: agent-base: 5.1.1 @@ -14512,7 +13537,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@5.0.1: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 @@ -14520,7 +13544,6 @@ snapshots: transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.2: https-proxy-agent@7.0.2: dependencies: agent-base: 7.1.0 @@ -14538,46 +13561,27 @@ snapshots: husky@8.0.3: {} - iconv-lite@0.4.24: - - human-id@1.0.2: {} - - human-signals@2.1.0: {} - - human-signals@4.3.1: {} - - human-signals@5.0.0: {} - - husky@8.0.3: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 - iconv-lite@0.6.3: iconv-lite@0.6.3: dependencies: safer-buffer: 2.1.2 ieee754@1.1.13: {} - ieee754@1.1.13: {} - ieee754@1.2.1: {} ieee754@1.2.1: {} - ignore@5.3.0: {} ignore@5.3.0: {} - immutable@4.3.4: {} immutable@4.3.4: {} - import-fresh@3.3.0: import-fresh@3.3.0: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-jsx@4.0.1: import-jsx@4.0.1: dependencies: '@babel/core': 7.23.7 @@ -14592,22 +13596,17 @@ snapshots: transitivePeerDependencies: - supports-color - import-local@3.1.0: import-local@3.1.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 imurmurhash@0.1.4: {} - imurmurhash@0.1.4: {} - indent-string@4.0.0: {} indent-string@4.0.0: {} - inflation@2.1.0: {} inflation@2.1.0: {} - inflight@1.0.6: inflight@1.0.6: dependencies: once: 1.4.0 @@ -14617,13 +13616,7 @@ snapshots: inherits@2.0.4: {} - ink@3.2.0(react@17.0.2): - - inherits@2.0.3: {} - - inherits@2.0.4: {} - - ink@3.2.0(react@17.0.2): + ink@3.2.0(@types/react@18.2.47)(react@17.0.2): dependencies: ansi-escapes: 4.3.2 auto-bind: 4.0.0 @@ -14649,11 +13642,12 @@ snapshots: wrap-ansi: 6.2.0 ws: 7.5.9 yoga-layout-prebuilt: 1.10.0 + optionalDependencies: + '@types/react': 18.2.47 transitivePeerDependencies: - bufferutil - utf-8-validate - internal-slot@1.0.6: internal-slot@1.0.6: dependencies: get-intrinsic: 1.2.2 @@ -14661,35 +13655,26 @@ snapshots: side-channel: 1.0.4 internmap@2.0.3: {} - internmap@2.0.3: {} - interpret@1.4.0: {} interpret@1.4.0: {} - invariant@2.2.4: invariant@2.2.4: dependencies: loose-envify: 1.4.0 ip@1.1.8: {} - ip@1.1.8: {} - ip@2.0.0: {} ip@2.0.0: {} - ipaddr.js@1.9.1: {} ipaddr.js@1.9.1: {} - is-absolute-url@3.0.3: {} is-absolute-url@3.0.3: {} - is-arguments@1.1.1: is-arguments@1.1.1: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 - is-array-buffer@3.0.2: is-array-buffer@3.0.2: dependencies: call-bind: 1.0.5 @@ -14697,46 +13682,36 @@ snapshots: is-typed-array: 1.1.12 is-arrayish@0.2.1: {} - is-arrayish@0.2.1: {} - is-bigint@1.0.4: is-bigint@1.0.4: dependencies: has-bigints: 1.0.2 - is-binary-path@2.1.0: is-binary-path@2.1.0: dependencies: binary-extensions: 2.2.0 - is-boolean-object@1.1.2: is-boolean-object@1.1.2: dependencies: call-bind: 1.0.5 has-tostringtag: 1.0.0 is-buffer@2.0.5: {} - is-buffer@2.0.5: {} - is-builtin-module@3.2.1: is-builtin-module@3.2.1: dependencies: builtin-modules: 3.3.0 is-callable@1.2.7: {} - is-callable@1.2.7: {} - is-ci@2.0.0: is-ci@2.0.0: dependencies: ci-info: 2.0.0 - is-core-module@2.13.1: is-core-module@2.13.1: dependencies: hasown: 2.0.0 - is-date-object@1.0.5: is-date-object@1.0.5: dependencies: has-tostringtag: 1.0.0 @@ -14753,48 +13728,27 @@ snapshots: is-generator-fn@2.1.0: {} - is-generator-function@1.0.10: - - is-deflate@1.0.0: {} - - is-docker@2.2.1: {} - - is-extglob@2.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - - is-fullwidth-code-point@4.0.0: {} - - is-generator-fn@2.1.0: {} - is-generator-function@1.0.10: dependencies: has-tostringtag: 1.0.0 - is-glob@4.0.3: is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-gzip@1.0.0: {} - is-gzip@1.0.0: {} - is-interactive@1.0.0: {} is-interactive@1.0.0: {} - is-module@1.0.0: {} is-module@1.0.0: {} - is-nan@1.3.2: is-nan@1.3.2: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 is-negative-zero@2.0.2: {} - is-negative-zero@2.0.2: {} - is-number-object@1.0.7: is-number-object@1.0.7: dependencies: has-tostringtag: 1.0.0 @@ -14815,7 +13769,6 @@ snapshots: dependencies: isobject: 3.0.1 - is-regex@1.1.4: is-regex@1.1.4: dependencies: call-bind: 1.0.5 @@ -14823,72 +13776,54 @@ snapshots: is-regexp@3.1.0: {} - is-shared-array-buffer@1.0.2: is-shared-array-buffer@1.0.2: dependencies: call-bind: 1.0.5 is-stream@2.0.1: {} - is-stream@2.0.1: {} - is-stream@3.0.0: {} is-stream@3.0.0: {} - is-string@1.0.7: is-string@1.0.7: dependencies: has-tostringtag: 1.0.0 - is-subdir@1.2.0: is-subdir@1.2.0: dependencies: better-path-resolve: 1.0.0 - is-symbol@1.0.4: is-symbol@1.0.4: dependencies: has-symbols: 1.0.3 - is-typed-array@1.1.12: is-typed-array@1.1.12: dependencies: which-typed-array: 1.1.13 is-unicode-supported@0.1.0: {} - is-unicode-supported@0.1.0: {} - is-weakref@1.0.2: is-weakref@1.0.2: dependencies: call-bind: 1.0.5 is-windows@1.0.2: {} - is-windows@1.0.2: {} - is-wsl@2.2.0: is-wsl@2.2.0: dependencies: is-docker: 2.2.1 isarray@1.0.0: {} - isarray@1.0.0: {} - isarray@2.0.5: {} isarray@2.0.5: {} - isbinaryfile@5.0.0: {} isbinaryfile@5.0.0: {} - isexe@2.0.0: {} isexe@2.0.0: {} - isobject@3.0.1: {} isobject@3.0.1: {} - istanbul-lib-coverage@3.2.2: {} istanbul-lib-coverage@3.2.2: {} - istanbul-lib-instrument@5.2.1: istanbul-lib-instrument@5.2.1: dependencies: '@babel/core': 7.23.7 @@ -14899,7 +13834,6 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.1: istanbul-lib-instrument@6.0.1: dependencies: '@babel/core': 7.23.7 @@ -14910,14 +13844,12 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-lib-report@3.0.1: istanbul-lib-report@3.0.1: dependencies: istanbul-lib-coverage: 3.2.2 make-dir: 4.0.0 supports-color: 7.2.0 - istanbul-lib-source-maps@4.0.1: istanbul-lib-source-maps@4.0.1: dependencies: debug: 4.3.4 @@ -14926,20 +13858,17 @@ snapshots: transitivePeerDependencies: - supports-color - istanbul-reports@3.1.6: istanbul-reports@3.1.6: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - jackspeak@2.3.6: jackspeak@2.3.6: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.8.7: jake@10.8.7: dependencies: async: 3.2.5 @@ -14949,14 +13878,12 @@ snapshots: javascript-lp-solver@0.4.24: {} - jest-changed-files@29.7.0: jest-changed-files@29.7.0: dependencies: execa: 5.1.1 jest-util: 29.7.0 p-limit: 3.1.0 - jest-circus@29.7.0: jest-circus@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -14983,17 +13910,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): - jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): + jest-cli@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + create-jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + jest-config: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -15003,13 +13929,11 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): - jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): + jest-config@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)): dependencies: '@babel/core': 7.23.7 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 18.19.6 babel-jest: 29.7.0(@babel/core@7.23.7) chalk: 4.1.2 ci-info: 3.9.0 @@ -15029,12 +13953,13 @@ snapshots: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 + optionalDependencies: + '@types/node': 18.19.6 ts-node: 10.9.2(@types/node@18.19.6)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color - jest-diff@29.7.0: jest-diff@29.7.0: dependencies: chalk: 4.1.2 @@ -15042,12 +13967,10 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-docblock@29.7.0: jest-docblock@29.7.0: dependencies: detect-newline: 3.1.0 - jest-each@29.7.0: jest-each@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15056,7 +13979,6 @@ snapshots: jest-util: 29.7.0 pretty-format: 29.7.0 - jest-environment-node@29.7.0: jest-environment-node@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -15067,9 +13989,7 @@ snapshots: jest-util: 29.7.0 jest-get-type@29.6.3: {} - jest-get-type@29.6.3: {} - jest-haste-map@29.7.0: jest-haste-map@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15086,13 +14006,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - jest-leak-detector@29.7.0: jest-leak-detector@29.7.0: dependencies: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-matcher-utils@29.7.0: jest-matcher-utils@29.7.0: dependencies: chalk: 4.1.2 @@ -15100,7 +14018,6 @@ snapshots: jest-get-type: 29.6.3 pretty-format: 29.7.0 - jest-message-util@29.7.0: jest-message-util@29.7.0: dependencies: '@babel/code-frame': 7.23.5 @@ -15113,7 +14030,6 @@ snapshots: slash: 3.0.0 stack-utils: 2.0.6 - jest-mock@29.7.0: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15121,14 +14037,11 @@ snapshots: jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): - dependencies: + optionalDependencies: jest-resolve: 29.7.0 jest-regex-util@29.6.3: {} - jest-regex-util@29.6.3: {} - jest-resolve-dependencies@29.7.0: jest-resolve-dependencies@29.7.0: dependencies: jest-regex-util: 29.6.3 @@ -15136,7 +14049,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-resolve@29.7.0: jest-resolve@29.7.0: dependencies: chalk: 4.1.2 @@ -15149,7 +14061,6 @@ snapshots: resolve.exports: 2.0.2 slash: 3.0.0 - jest-runner@29.7.0: jest-runner@29.7.0: dependencies: '@jest/console': 29.7.0 @@ -15176,7 +14087,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-runtime@29.7.0: jest-runtime@29.7.0: dependencies: '@jest/environment': 29.7.0 @@ -15204,7 +14114,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-snapshot@29.7.0: jest-snapshot@29.7.0: dependencies: '@babel/core': 7.23.7 @@ -15230,7 +14139,6 @@ snapshots: transitivePeerDependencies: - supports-color - jest-util@29.7.0: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15240,7 +14148,6 @@ snapshots: graceful-fs: 4.2.11 picomatch: 2.3.1 - jest-validate@29.7.0: jest-validate@29.7.0: dependencies: '@jest/types': 29.6.3 @@ -15250,7 +14157,6 @@ snapshots: leven: 3.1.0 pretty-format: 29.7.0 - jest-watcher@29.7.0: jest-watcher@29.7.0: dependencies: '@jest/test-result': 29.7.0 @@ -15262,7 +14168,6 @@ snapshots: jest-util: 29.7.0 string-length: 4.0.2 - jest-worker@29.7.0: jest-worker@29.7.0: dependencies: '@types/node': 18.19.6 @@ -15270,13 +14175,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): - jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2): + jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + jest-cli: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -15284,9 +14188,7 @@ snapshots: - ts-node jmespath@0.16.0: {} - jmespath@0.16.0: {} - joi@17.11.0: joi@17.11.0: dependencies: '@hapi/hoek': 9.3.0 @@ -15296,21 +14198,17 @@ snapshots: '@sideway/pinpoint': 2.0.0 js-tokens@4.0.0: {} - js-tokens@4.0.0: {} - js-yaml@3.14.1: js-yaml@3.14.1: dependencies: argparse: 1.0.10 esprima: 4.0.1 - js-yaml@4.1.0: js-yaml@4.1.0: dependencies: argparse: 2.0.1 - jscodeshift@0.15.1(@babel/preset-env@7.23.8): - jscodeshift@0.15.1(@babel/preset-env@7.23.8): + jscodeshift@0.15.1(@babel/preset-env@7.23.8(@babel/core@7.23.7)): dependencies: '@babel/core': 7.23.7 '@babel/parser': 7.23.6 @@ -15319,7 +14217,6 @@ snapshots: '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.7) '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.7) '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.7) - '@babel/preset-env': 7.23.8(@babel/core@7.23.7) '@babel/preset-flow': 7.23.3(@babel/core@7.23.7) '@babel/preset-typescript': 7.23.3(@babel/core@7.23.7) '@babel/register': 7.23.7(@babel/core@7.23.7) @@ -15333,6 +14230,8 @@ snapshots: recast: 0.23.4 temp: 0.8.4 write-file-atomic: 2.4.3 + optionalDependencies: + '@babel/preset-env': 7.23.8(@babel/core@7.23.7) transitivePeerDependencies: - supports-color @@ -15350,34 +14249,16 @@ snapshots: json5@2.2.3: {} - jsonfile@4.0.0: - - jsesc@0.5.0: {} - - jsesc@2.5.2: {} - - json-buffer@3.0.1: {} - - json-parse-even-better-errors@2.3.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@2.2.3: {} - jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 - jsonfile@6.1.0: jsonfile@6.1.0: dependencies: universalify: 2.0.1 optionalDependencies: graceful-fs: 4.2.11 - jspdf@2.5.1: jspdf@2.5.1: dependencies: '@babel/runtime': 7.23.8 @@ -15390,40 +14271,31 @@ snapshots: dompurify: 2.4.7 html2canvas: 1.4.1 - keygrip@1.1.0: keygrip@1.1.0: dependencies: tsscmp: 1.0.6 - keyv@4.5.4: keyv@4.5.4: dependencies: json-buffer: 3.0.1 kind-of@6.0.3: {} - kind-of@6.0.3: {} - kleur@3.0.3: {} kleur@3.0.3: {} - kleur@4.1.5: {} kleur@4.1.5: {} - koa-compose@4.1.0: {} koa-compose@4.1.0: {} - koa-convert@2.0.0: koa-convert@2.0.0: dependencies: co: 4.6.0 koa-compose: 4.1.0 - koa-etag@4.0.0: koa-etag@4.0.0: dependencies: etag: 1.8.1 - koa-send@5.0.1: koa-send@5.0.1: dependencies: debug: 4.3.4 @@ -15432,7 +14304,6 @@ snapshots: transitivePeerDependencies: - supports-color - koa-static@5.0.0: koa-static@5.0.0: dependencies: debug: 3.2.7 @@ -15440,7 +14311,6 @@ snapshots: transitivePeerDependencies: - supports-color - koa@2.15.0: koa@2.15.0: dependencies: accepts: 1.3.8 @@ -15469,7 +14339,6 @@ snapshots: transitivePeerDependencies: - supports-color - lazy-universal-dotenv@4.0.0: lazy-universal-dotenv@4.0.0: dependencies: app-root-dir: 1.0.2 @@ -15477,15 +14346,12 @@ snapshots: dotenv-expand: 10.0.0 leven@3.1.0: {} - leven@3.1.0: {} - levn@0.4.1: levn@0.4.1: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - lighthouse-logger@1.4.2: lighthouse-logger@1.4.2: dependencies: debug: 2.6.9 @@ -15494,20 +14360,17 @@ snapshots: - supports-color lilconfig@2.1.0: {} - lilconfig@2.1.0: {} - lines-and-columns@1.2.4: {} lines-and-columns@1.2.4: {} - lint-staged@14.0.1: - lint-staged@14.0.1: + lint-staged@14.0.1(enquirer@2.4.1): dependencies: chalk: 5.3.0 commander: 11.0.0 debug: 4.3.4 execa: 7.2.0 lilconfig: 2.1.0 - listr2: 6.6.1 + listr2: 6.6.1(enquirer@2.4.1) micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 @@ -15516,8 +14379,7 @@ snapshots: - enquirer - supports-color - listr2@6.6.1: - listr2@6.6.1: + listr2@6.6.1(enquirer@2.4.1): dependencies: cli-truncate: 3.1.0 colorette: 2.0.20 @@ -15525,27 +14387,25 @@ snapshots: log-update: 5.0.1 rfdc: 1.3.0 wrap-ansi: 8.1.0 + optionalDependencies: + enquirer: 2.4.1 - lit-element@4.0.3: lit-element@4.0.3: dependencies: '@lit-labs/ssr-dom-shim': 1.1.2 '@lit/reactive-element': 2.0.3 lit-html: 3.1.1 - lit-html@3.1.1: lit-html@3.1.1: dependencies: '@types/trusted-types': 2.0.7 - lit@3.1.1: lit@3.1.1: dependencies: '@lit/reactive-element': 2.0.3 lit-element: 4.0.3 lit-html: 3.1.1 - load-yaml-file@0.2.0: load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 @@ -15553,53 +14413,40 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - locate-path@3.0.0: locate-path@3.0.0: dependencies: p-locate: 3.0.0 path-exists: 3.0.0 - locate-path@5.0.0: locate-path@5.0.0: dependencies: p-locate: 4.1.0 - locate-path@6.0.0: locate-path@6.0.0: dependencies: p-locate: 5.0.0 lodash-es@4.17.21: {} - lodash-es@4.17.21: {} - lodash.assignwith@4.2.0: {} lodash.assignwith@4.2.0: {} - lodash.camelcase@4.3.0: {} lodash.camelcase@4.3.0: {} - lodash.debounce@4.0.8: {} lodash.debounce@4.0.8: {} - lodash.memoize@4.1.2: {} lodash.memoize@4.1.2: {} - lodash.merge@4.6.2: {} lodash.merge@4.6.2: {} - lodash.startcase@4.4.0: {} lodash.startcase@4.4.0: {} - lodash@4.17.21: {} lodash@4.17.21: {} - log-symbols@4.1.0: log-symbols@4.1.0: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - log-update@4.0.0: log-update@4.0.0: dependencies: ansi-escapes: 4.3.2 @@ -15607,7 +14454,6 @@ snapshots: slice-ansi: 4.0.0 wrap-ansi: 6.2.0 - log-update@5.0.1: log-update@5.0.1: dependencies: ansi-escapes: 5.0.0 @@ -15616,13 +14462,12 @@ snapshots: strip-ansi: 7.1.0 wrap-ansi: 8.1.0 - loki@0.32.0: - loki@0.32.0: + loki@0.32.0(@types/react@18.2.47): dependencies: '@loki/integration-react': 0.32.0 '@loki/integration-react-native': 0.32.0 '@loki/integration-vue': 0.32.0 - '@loki/runner': 0.32.0 + '@loki/runner': 0.32.0(@types/react@18.2.47) '@loki/target-chrome-app': 0.32.0 '@loki/target-chrome-docker': 0.32.0 '@loki/target-native-android-emulator': 0.32.0 @@ -15637,9 +14482,7 @@ snapshots: - utf-8-validate longest-streak@3.1.0: {} - longest-streak@3.1.0: {} - looks-same@4.1.0: looks-same@4.1.0: dependencies: color-diff: 1.4.0 @@ -15648,61 +14491,48 @@ snapshots: parse-color: 1.0.0 pngjs: 3.4.0 - loose-envify@1.4.0: loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 lru-cache@10.1.0: {} - lru-cache@10.1.0: {} - lru-cache@4.1.5: lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 yallist: 2.1.2 - lru-cache@5.1.1: lru-cache@5.1.1: dependencies: yallist: 3.1.1 - lru-cache@6.0.0: lru-cache@6.0.0: dependencies: yallist: 4.0.0 lru-cache@7.18.3: {} - lru-cache@7.18.3: {} - lru-cache@8.0.5: {} lru-cache@8.0.5: {} - magic-string@0.30.5: magic-string@0.30.5: dependencies: '@jridgewell/sourcemap-codec': 1.4.15 - make-dir@2.1.0: make-dir@2.1.0: dependencies: pify: 4.0.1 semver: 5.7.2 - make-dir@3.1.0: make-dir@3.1.0: dependencies: semver: 6.3.1 - make-dir@4.0.0: make-dir@4.0.0: dependencies: semver: 7.5.4 make-error@1.3.6: {} - make-error@1.3.6: {} - makeerror@1.0.12: makeerror@1.0.12: dependencies: tmpl: 1.0.5 @@ -15717,31 +14547,16 @@ snapshots: markdown-table@3.0.3: {} - markdown-to-jsx@7.4.0(react@18.2.0): - - map-obj@1.0.1: {} - - map-obj@4.3.0: {} - - map-or-similar@1.5.0: {} - - mark.js@8.11.1: {} - - markdown-table@3.0.3: {} - markdown-to-jsx@7.4.0(react@18.2.0): dependencies: react: 18.2.0 marky@1.2.5: {} - marky@1.2.5: {} - mdast-util-definitions@4.0.0: mdast-util-definitions@4.0.0: dependencies: unist-util-visit: 2.0.3 - mdast-util-find-and-replace@2.2.2: mdast-util-find-and-replace@2.2.2: dependencies: '@types/mdast': 3.0.15 @@ -15749,7 +14564,6 @@ snapshots: unist-util-is: 5.2.1 unist-util-visit-parents: 5.1.3 - mdast-util-from-markdown@1.3.1: mdast-util-from-markdown@1.3.1: dependencies: '@types/mdast': 3.0.15 @@ -15767,7 +14581,6 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-autolink-literal@1.0.3: mdast-util-gfm-autolink-literal@1.0.3: dependencies: '@types/mdast': 3.0.15 @@ -15775,20 +14588,17 @@ snapshots: mdast-util-find-and-replace: 2.2.2 micromark-util-character: 1.2.0 - mdast-util-gfm-footnote@1.0.2: mdast-util-gfm-footnote@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 micromark-util-normalize-identifier: 1.1.0 - mdast-util-gfm-strikethrough@1.0.3: mdast-util-gfm-strikethrough@1.0.3: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 - mdast-util-gfm-table@1.0.7: mdast-util-gfm-table@1.0.7: dependencies: '@types/mdast': 3.0.15 @@ -15798,13 +14608,11 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-gfm-task-list-item@1.0.2: mdast-util-gfm-task-list-item@1.0.2: dependencies: '@types/mdast': 3.0.15 mdast-util-to-markdown: 1.5.0 - mdast-util-gfm@2.0.2: mdast-util-gfm@2.0.2: dependencies: mdast-util-from-markdown: 1.3.1 @@ -15817,13 +14625,11 @@ snapshots: transitivePeerDependencies: - supports-color - mdast-util-phrasing@3.0.1: mdast-util-phrasing@3.0.1: dependencies: '@types/mdast': 3.0.15 unist-util-is: 5.2.1 - mdast-util-to-markdown@1.5.0: mdast-util-to-markdown@1.5.0: dependencies: '@types/mdast': 3.0.15 @@ -15836,22 +14642,17 @@ snapshots: zwitch: 2.0.4 mdast-util-to-string@1.1.0: {} - mdast-util-to-string@1.1.0: {} - mdast-util-to-string@3.2.0: mdast-util-to-string@3.2.0: dependencies: '@types/mdast': 3.0.15 media-typer@0.3.0: {} - media-typer@0.3.0: {} - memoizerific@1.11.3: memoizerific@1.11.3: dependencies: map-or-similar: 1.5.0 - meow@6.1.1: meow@6.1.1: dependencies: '@types/minimist': 1.2.5 @@ -15867,18 +14668,13 @@ snapshots: yargs-parser: 18.1.3 merge-descriptors@1.0.1: {} - merge-descriptors@1.0.1: {} - merge-stream@2.0.0: {} merge-stream@2.0.0: {} - merge2@1.4.1: {} merge2@1.4.1: {} - methods@1.1.2: {} methods@1.1.2: {} - micromark-core-commonmark@1.1.0: micromark-core-commonmark@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -15898,7 +14694,6 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-autolink-literal@1.0.5: micromark-extension-gfm-autolink-literal@1.0.5: dependencies: micromark-util-character: 1.2.0 @@ -15906,7 +14701,6 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-extension-gfm-footnote@1.1.2: micromark-extension-gfm-footnote@1.1.2: dependencies: micromark-core-commonmark: 1.1.0 @@ -15918,7 +14712,6 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-strikethrough@1.0.7: micromark-extension-gfm-strikethrough@1.0.7: dependencies: micromark-util-chunked: 1.1.0 @@ -15928,7 +14721,6 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-table@1.0.7: micromark-extension-gfm-table@1.0.7: dependencies: micromark-factory-space: 1.1.0 @@ -15937,12 +14729,10 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm-tagfilter@1.0.2: micromark-extension-gfm-tagfilter@1.0.2: dependencies: micromark-util-types: 1.1.0 - micromark-extension-gfm-task-list-item@1.0.5: micromark-extension-gfm-task-list-item@1.0.5: dependencies: micromark-factory-space: 1.1.0 @@ -15951,7 +14741,6 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-extension-gfm@2.0.3: micromark-extension-gfm@2.0.3: dependencies: micromark-extension-gfm-autolink-literal: 1.0.5 @@ -15963,14 +14752,12 @@ snapshots: micromark-util-combine-extensions: 1.1.0 micromark-util-types: 1.1.0 - micromark-factory-destination@1.1.0: micromark-factory-destination@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-factory-label@1.1.0: micromark-factory-label@1.1.0: dependencies: micromark-util-character: 1.2.0 @@ -15978,13 +14765,11 @@ snapshots: micromark-util-types: 1.1.0 uvu: 0.5.6 - micromark-factory-space@1.1.0: micromark-factory-space@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-types: 1.1.0 - micromark-factory-title@1.1.0: micromark-factory-title@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -15992,7 +14777,6 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-factory-whitespace@1.1.0: micromark-factory-whitespace@1.1.0: dependencies: micromark-factory-space: 1.1.0 @@ -16000,36 +14784,30 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-util-character@1.2.0: micromark-util-character@1.2.0: dependencies: micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-util-chunked@1.1.0: micromark-util-chunked@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - micromark-util-classify-character@1.1.0: micromark-util-classify-character@1.1.0: dependencies: micromark-util-character: 1.2.0 micromark-util-symbol: 1.1.0 micromark-util-types: 1.1.0 - micromark-util-combine-extensions@1.1.0: micromark-util-combine-extensions@1.1.0: dependencies: micromark-util-chunked: 1.1.0 micromark-util-types: 1.1.0 - micromark-util-decode-numeric-character-reference@1.1.0: micromark-util-decode-numeric-character-reference@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - micromark-util-decode-string@1.1.0: micromark-util-decode-string@1.1.0: dependencies: decode-named-character-reference: 1.0.2 @@ -16038,29 +14816,23 @@ snapshots: micromark-util-symbol: 1.1.0 micromark-util-encode@1.1.0: {} - micromark-util-encode@1.1.0: {} - micromark-util-html-tag-name@1.2.0: {} micromark-util-html-tag-name@1.2.0: {} - micromark-util-normalize-identifier@1.1.0: micromark-util-normalize-identifier@1.1.0: dependencies: micromark-util-symbol: 1.1.0 - micromark-util-resolve-all@1.1.0: micromark-util-resolve-all@1.1.0: dependencies: micromark-util-types: 1.1.0 - micromark-util-sanitize-uri@1.2.0: micromark-util-sanitize-uri@1.2.0: dependencies: micromark-util-character: 1.2.0 micromark-util-encode: 1.1.0 micromark-util-symbol: 1.1.0 - micromark-util-subtokenize@1.1.0: micromark-util-subtokenize@1.1.0: dependencies: micromark-util-chunked: 1.1.0 @@ -16069,12 +14841,9 @@ snapshots: uvu: 0.5.6 micromark-util-symbol@1.1.0: {} - micromark-util-symbol@1.1.0: {} - micromark-util-types@1.1.0: {} micromark-util-types@1.1.0: {} - micromark@3.2.0: micromark@3.2.0: dependencies: '@types/debug': 4.1.12 @@ -16097,16 +14866,13 @@ snapshots: transitivePeerDependencies: - supports-color - micromatch@4.0.5: micromatch@4.0.5: dependencies: braces: 3.0.2 picomatch: 2.3.1 mime-db@1.52.0: {} - mime-db@1.52.0: {} - mime-types@2.1.35: mime-types@2.1.35: dependencies: mime-db: 1.52.0 @@ -16121,32 +14887,18 @@ snapshots: min-indent@1.0.1: {} - minimatch@3.1.2: - mime@1.6.0: {} - - mime@2.6.0: {} - - mimic-fn@2.1.0: {} - - mimic-fn@4.0.0: {} - - min-indent@1.0.1: {} - minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 - minimatch@5.1.6: minimatch@5.1.6: dependencies: brace-expansion: 2.0.1 - minimatch@9.0.3: minimatch@9.0.3: dependencies: brace-expansion: 2.0.1 - minimist-options@4.1.0: minimist-options@4.1.0: dependencies: arrify: 1.0.1 @@ -16154,35 +14906,26 @@ snapshots: kind-of: 6.0.3 minimist@1.2.8: {} - minimist@1.2.8: {} - minipass@3.3.6: minipass@3.3.6: dependencies: yallist: 4.0.0 minipass@5.0.0: {} - minipass@5.0.0: {} - minipass@7.0.4: {} minipass@7.0.4: {} - minizlib@2.1.2: minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 mitt@3.0.0: {} - mitt@3.0.0: {} - mixme@0.5.10: {} mixme@0.5.10: {} - mkdirp-classic@0.5.3: {} mkdirp-classic@0.5.3: {} - mkdirp@0.5.6: mkdirp@0.5.6: dependencies: minimist: 1.2.8 @@ -16211,57 +14954,24 @@ snapshots: netmask@2.0.2: {} - node-dir@0.1.17: - - mkdirp@1.0.4: {} - - monaco-editor@0.38.0: {} - - mri@1.2.0: {} - - ms@2.0.0: {} - - ms@2.1.2: {} - - ms@2.1.3: {} - - nanocolors@0.2.13: {} - - nanoid@3.3.7: {} - - natural-compare@1.4.0: {} - - negotiator@0.6.3: {} - - neo-async@2.6.2: {} - - netmask@2.0.2: {} - node-dir@0.1.17: dependencies: minimatch: 3.1.2 node-fetch-native@1.6.1: {} - node-fetch@2.6.7: - node-fetch-native@1.6.1: {} - node-fetch@2.6.7: dependencies: whatwg-url: 5.0.0 - node-fetch@2.7.0: node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 node-int64@0.4.0: {} - node-int64@0.4.0: {} - node-releases@2.0.14: {} node-releases@2.0.14: {} - normalize-package-data@2.5.0: normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 @@ -16270,19 +14980,15 @@ snapshots: validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} - normalize-path@3.0.0: {} - npm-run-path@4.0.1: npm-run-path@4.0.1: dependencies: path-key: 3.1.1 - npm-run-path@5.2.0: npm-run-path@5.2.0: dependencies: path-key: 4.0.0 - nypm@0.3.4: nypm@0.3.4: dependencies: citty: 0.1.5 @@ -16291,21 +14997,16 @@ snapshots: ufo: 1.3.2 object-assign@4.1.1: {} - object-assign@4.1.1: {} - object-inspect@1.13.1: {} object-inspect@1.13.1: {} - object-is@1.1.5: object-is@1.1.5: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 object-keys@1.1.1: {} - object-keys@1.1.1: {} - object.assign@4.1.5: object.assign@4.1.5: dependencies: call-bind: 1.0.5 @@ -16314,42 +15015,33 @@ snapshots: object-keys: 1.1.1 ohash@1.1.3: {} - ohash@1.1.3: {} - on-finished@2.4.1: on-finished@2.4.1: dependencies: ee-first: 1.1.1 on-headers@1.0.2: {} - on-headers@1.0.2: {} - once@1.4.0: once@1.4.0: dependencies: wrappy: 1.0.2 - onetime@5.1.2: onetime@5.1.2: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: onetime@6.0.0: dependencies: mimic-fn: 4.0.0 only@0.0.2: {} - only@0.0.2: {} - open@8.4.2: open@8.4.2: dependencies: define-lazy-prop: 2.0.0 is-docker: 2.2.1 is-wsl: 2.2.0 - optionator@0.9.3: optionator@0.9.3: dependencies: '@aashutoshrathi/word-wrap': 1.2.6 @@ -16359,7 +15051,6 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - ora@5.4.1: ora@5.4.1: dependencies: bl: 4.1.0 @@ -16373,53 +15064,41 @@ snapshots: wcwidth: 1.0.1 os-tmpdir@1.0.2: {} - os-tmpdir@1.0.2: {} - outdent@0.5.0: {} outdent@0.5.0: {} - p-filter@2.1.0: p-filter@2.1.0: dependencies: p-map: 2.1.0 - p-limit@2.3.0: p-limit@2.3.0: dependencies: p-try: 2.2.0 - p-limit@3.1.0: p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 - p-locate@3.0.0: p-locate@3.0.0: dependencies: p-limit: 2.3.0 - p-locate@4.1.0: p-locate@4.1.0: dependencies: p-limit: 2.3.0 - p-locate@5.0.0: p-locate@5.0.0: dependencies: p-limit: 3.1.0 p-map@2.1.0: {} - p-map@2.1.0: {} - p-map@4.0.0: p-map@4.0.0: dependencies: aggregate-error: 3.1.0 p-try@2.2.0: {} - p-try@2.2.0: {} - pac-proxy-agent@7.0.1: pac-proxy-agent@7.0.1: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 @@ -16433,7 +15112,6 @@ snapshots: transitivePeerDependencies: - supports-color - pac-resolver@7.0.0: pac-resolver@7.0.0: dependencies: degenerator: 5.0.1 @@ -16441,19 +15119,15 @@ snapshots: netmask: 2.0.2 pako@0.2.9: {} - pako@0.2.9: {} - parent-module@1.0.1: parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-color@1.0.0: parse-color@1.0.0: dependencies: color-convert: 0.5.3 - parse-json@5.2.0: parse-json@5.2.0: dependencies: '@babel/code-frame': 7.23.5 @@ -16462,48 +15136,34 @@ snapshots: lines-and-columns: 1.2.4 parse5@6.0.1: {} - parse5@6.0.1: {} - parseurl@1.3.3: {} parseurl@1.3.3: {} - patch-console@1.0.0: {} patch-console@1.0.0: {} - path-exists@3.0.0: {} path-exists@3.0.0: {} - path-exists@4.0.0: {} path-exists@4.0.0: {} - path-is-absolute@1.0.1: {} path-is-absolute@1.0.1: {} - path-key@3.1.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} path-key@4.0.0: {} - path-parse@1.0.7: {} path-parse@1.0.7: {} - path-scurry@1.10.1: path-scurry@1.10.1: dependencies: lru-cache: 10.1.0 minipass: 7.0.4 path-to-regexp@0.1.7: {} - path-to-regexp@0.1.7: {} - path-type@4.0.0: {} path-type@4.0.0: {} - pathe@1.1.1: {} pathe@1.1.1: {} - peek-stream@1.1.3: peek-stream@1.1.3: dependencies: buffer-from: 1.1.2 @@ -16511,9 +15171,7 @@ snapshots: through2: 2.0.5 pend@1.2.0: {} - pend@1.2.0: {} - performance-now@2.1.0: performance-now@2.1.0: optional: true @@ -16527,51 +15185,32 @@ snapshots: pirates@4.0.6: {} - pixelmatch@5.3.0: - picocolors@1.0.0: {} - - picomatch@2.3.1: {} - - pidtree@0.6.0: {} - - pify@4.0.1: {} - - pirates@4.0.6: {} - pixelmatch@5.3.0: dependencies: pngjs: 6.0.0 - pkg-dir@3.0.0: pkg-dir@3.0.0: dependencies: find-up: 3.0.0 - pkg-dir@4.2.0: pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: pkg-dir@5.0.0: dependencies: find-up: 5.0.0 pngjs@3.4.0: {} - pngjs@3.4.0: {} - pngjs@4.0.1: {} pngjs@4.0.1: {} - pngjs@6.0.0: {} pngjs@6.0.0: {} - polished@4.2.2: polished@4.2.2: dependencies: '@babel/runtime': 7.23.8 - portfinder@1.0.32: portfinder@1.0.32: dependencies: async: 2.6.4 @@ -16580,14 +15219,12 @@ snapshots: transitivePeerDependencies: - supports-color - postcss@8.4.33: postcss@8.4.33: dependencies: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 - preferred-pm@3.1.2: preferred-pm@3.1.2: dependencies: find-up: 5.0.0 @@ -16603,16 +15240,6 @@ snapshots: prettier@3.0.3: {} - pretty-format@29.7.0: - - prelude-ls@1.2.1: {} - - prettier@2.6.2: {} - - prettier@2.8.8: {} - - prettier@3.0.3: {} - pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 @@ -16620,30 +15247,23 @@ snapshots: react-is: 18.2.0 pretty-hrtime@1.0.3: {} - pretty-hrtime@1.0.3: {} - process-nextick-args@2.0.1: {} process-nextick-args@2.0.1: {} - process@0.11.10: {} process@0.11.10: {} - progress@2.0.3: {} progress@2.0.3: {} - prompts@2.4.2: prompts@2.4.2: dependencies: kleur: 3.0.3 sisteransi: 1.0.5 - proxy-addr@2.0.7: proxy-addr@2.0.7: dependencies: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-agent@6.3.0: proxy-agent@6.3.0: dependencies: agent-base: 7.1.0 @@ -16658,24 +15278,19 @@ snapshots: - supports-color proxy-from-env@1.1.0: {} - proxy-from-env@1.1.0: {} - pseudomap@1.0.2: {} pseudomap@1.0.2: {} - pump@2.0.1: pump@2.0.1: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - pump@3.0.0: pump@3.0.0: dependencies: end-of-stream: 1.4.4 once: 1.4.0 - pumpify@1.5.1: pumpify@1.5.1: dependencies: duplexify: 3.7.1 @@ -16683,12 +15298,9 @@ snapshots: pump: 2.0.1 punycode@1.3.2: {} - punycode@1.3.2: {} - punycode@2.3.1: {} punycode@2.3.1: {} - puppeteer-core@13.7.0: puppeteer-core@13.7.0: dependencies: cross-fetch: 3.1.5 @@ -16709,7 +15321,6 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@2.1.1: puppeteer-core@2.1.1: dependencies: '@types/mime-types': 2.1.4 @@ -16727,7 +15338,6 @@ snapshots: - supports-color - utf-8-validate - puppeteer-core@20.9.0(typescript@5.3.3): puppeteer-core@20.9.0(typescript@5.3.3): dependencies: '@puppeteer/browsers': 1.4.6(typescript@5.3.3) @@ -16735,8 +15345,9 @@ snapshots: cross-fetch: 4.0.0 debug: 4.3.4 devtools-protocol: 0.0.1147663 - typescript: 5.3.3 ws: 8.13.0 + optionalDependencies: + typescript: 5.3.3 transitivePeerDependencies: - bufferutil - encoding @@ -16744,14 +15355,11 @@ snapshots: - utf-8-validate pure-rand@6.0.4: {} - pure-rand@6.0.4: {} - qs@6.11.0: qs@6.11.0: dependencies: side-channel: 1.0.4 - qs@6.11.2: qs@6.11.2: dependencies: side-channel: 1.0.4 @@ -16772,15 +15380,11 @@ snapshots: optional: true ramda@0.27.2: {} - ramda@0.27.2: {} - ramda@0.29.0: {} ramda@0.29.0: {} - range-parser@1.2.1: {} range-parser@1.2.1: {} - raw-body@2.5.1: raw-body@2.5.1: dependencies: bytes: 3.1.2 @@ -16788,7 +15392,6 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - raw-body@2.5.2: raw-body@2.5.2: dependencies: bytes: 3.1.2 @@ -16796,13 +15399,11 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): - react-colorful@5.6.1(react-dom@18.2.0)(react@18.2.0): + react-colorful@5.6.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-devtools-core@4.28.5: react-devtools-core@4.28.5: dependencies: shell-quote: 1.8.1 @@ -16811,7 +15412,6 @@ snapshots: - bufferutil - utf-8-validate - react-dom@18.2.0(react@18.2.0): react-dom@18.2.0(react@18.2.0): dependencies: loose-envify: 1.4.0 @@ -16820,10 +15420,6 @@ snapshots: react-is@18.2.0: {} - react-reconciler@0.26.2(react@17.0.2): - - react-is@18.2.0: {} - react-reconciler@0.26.2(react@17.0.2): dependencies: loose-envify: 1.4.0 @@ -16831,50 +15427,49 @@ snapshots: react: 17.0.2 scheduler: 0.20.2 - react-remove-scroll-bar@2.3.4(react@18.2.0): - react-remove-scroll-bar@2.3.4(react@18.2.0): + react-remove-scroll-bar@2.3.4(@types/react@18.2.47)(react@18.2.0): dependencies: react: 18.2.0 - react-style-singleton: 2.2.1(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0) tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.2.47 - react-remove-scroll@2.5.5(react@18.2.0): - react-remove-scroll@2.5.5(react@18.2.0): + react-remove-scroll@2.5.5(@types/react@18.2.47)(react@18.2.0): dependencies: react: 18.2.0 - react-remove-scroll-bar: 2.3.4(react@18.2.0) - react-style-singleton: 2.2.1(react@18.2.0) + react-remove-scroll-bar: 2.3.4(@types/react@18.2.47)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.47)(react@18.2.0) tslib: 2.6.2 - use-callback-ref: 1.3.1(react@18.2.0) - use-sidecar: 1.1.2(react@18.2.0) + use-callback-ref: 1.3.1(@types/react@18.2.47)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.47)(react@18.2.0) + optionalDependencies: + '@types/react': 18.2.47 - react-style-singleton@2.2.1(react@18.2.0): - react-style-singleton@2.2.1(react@18.2.0): + react-style-singleton@2.2.1(@types/react@18.2.47)(react@18.2.0): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 react: 18.2.0 tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.2.47 - react@17.0.2: react@17.0.2: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react@18.2.0: react@18.2.0: dependencies: loose-envify: 1.4.0 - read-pkg-up@7.0.1: read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 read-pkg: 5.2.0 type-fest: 0.8.1 - read-pkg@5.2.0: read-pkg@5.2.0: dependencies: '@types/normalize-package-data': 2.4.4 @@ -16882,7 +15477,6 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 - read-yaml-file@1.1.0: read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -16890,7 +15484,6 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 - readable-stream@2.3.8: readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -16901,19 +15494,16 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 - readable-stream@3.6.2: readable-stream@3.6.2: dependencies: inherits: 2.0.4 string_decoder: 1.3.0 util-deprecate: 1.0.2 - readdirp@3.6.0: readdirp@3.6.0: dependencies: picomatch: 2.3.1 - recast@0.23.4: recast@0.23.4: dependencies: assert: 2.1.0 @@ -16922,48 +15512,38 @@ snapshots: source-map: 0.6.1 tslib: 2.6.2 - rechoir@0.6.2: rechoir@0.6.2: dependencies: resolve: 1.22.8 - redent@3.0.0: redent@3.0.0: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 reduce-flatten@2.0.0: {} - reduce-flatten@2.0.0: {} - regenerate-unicode-properties@10.1.1: regenerate-unicode-properties@10.1.1: dependencies: regenerate: 1.4.2 regenerate@1.4.2: {} - regenerate@1.4.2: {} - regenerator-runtime@0.13.11: regenerator-runtime@0.13.11: optional: true regenerator-runtime@0.14.1: {} - regenerator-runtime@0.14.1: {} - regenerator-transform@0.15.2: regenerator-transform@0.15.2: dependencies: '@babel/runtime': 7.23.8 - regexp.prototype.flags@1.5.1: regexp.prototype.flags@1.5.1: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 set-function-name: 2.0.1 - regexpu-core@5.3.2: regexpu-core@5.3.2: dependencies: '@babel/regjsgen': 0.8.0 @@ -16973,12 +15553,10 @@ snapshots: unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.1.0 - regjsparser@0.9.1: regjsparser@0.9.1: dependencies: jsesc: 0.5.0 - remark-external-links@8.0.0: remark-external-links@8.0.0: dependencies: extend: 3.0.2 @@ -16987,7 +15565,6 @@ snapshots: space-separated-tokens: 1.1.5 unist-util-visit: 2.0.3 - remark-gfm@3.0.1: remark-gfm@3.0.1: dependencies: '@types/mdast': 3.0.15 @@ -16997,7 +15574,6 @@ snapshots: transitivePeerDependencies: - supports-color - remark-slug@6.1.0: remark-slug@6.1.0: dependencies: github-slugger: 1.5.0 @@ -17005,51 +15581,39 @@ snapshots: unist-util-visit: 2.0.3 require-directory@2.1.1: {} - require-directory@2.1.1: {} - require-main-filename@2.0.0: {} require-main-filename@2.0.0: {} - requireindex@1.2.0: {} requireindex@1.2.0: {} - resolve-cwd@3.0.0: resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 resolve-from@3.0.0: {} - resolve-from@3.0.0: {} - resolve-from@4.0.0: {} resolve-from@4.0.0: {} - resolve-from@5.0.0: {} resolve-from@5.0.0: {} - resolve-path@1.4.0: resolve-path@1.4.0: dependencies: http-errors: 1.6.3 path-is-absolute: 1.0.1 resolve.exports@2.0.2: {} - resolve.exports@2.0.2: {} - resolve@1.22.8: resolve@1.22.8: dependencies: is-core-module: 2.13.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: restore-cursor@3.1.0: dependencies: onetime: 5.1.2 signal-exit: 3.0.7 - restore-cursor@4.0.0: restore-cursor@4.0.0: dependencies: onetime: 5.1.2 @@ -17059,67 +15623,49 @@ snapshots: rfdc@1.3.0: {} - rgbcolor@1.0.1: - - reusify@1.0.4: {} - - rfdc@1.3.0: {} - rgbcolor@1.0.1: optional: true - rimraf@2.6.3: rimraf@2.6.3: dependencies: glob: 7.2.3 - rimraf@2.7.1: rimraf@2.7.1: dependencies: glob: 7.2.3 - rimraf@3.0.2: rimraf@3.0.2: dependencies: glob: 7.2.3 robust-predicates@3.0.2: {} - robust-predicates@3.0.2: {} - rollup@2.79.1: rollup@2.79.1: optionalDependencies: fsevents: 2.3.3 - rollup@3.29.4: rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 - run-parallel@1.2.0: run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 rw@1.3.3: {} - rw@1.3.3: {} - rxjs@6.6.7: rxjs@6.6.7: dependencies: tslib: 1.14.1 - rxjs@7.8.1: rxjs@7.8.1: dependencies: tslib: 2.6.2 - sade@1.8.1: sade@1.8.1: dependencies: mri: 1.2.0 - safe-array-concat@1.0.1: safe-array-concat@1.0.1: dependencies: call-bind: 1.0.5 @@ -17128,12 +15674,9 @@ snapshots: isarray: 2.0.5 safe-buffer@5.1.2: {} - safe-buffer@5.1.2: {} - safe-buffer@5.2.1: {} safe-buffer@5.2.1: {} - safe-regex-test@1.0.1: safe-regex-test@1.0.1: dependencies: call-bind: 1.0.5 @@ -17141,9 +15684,7 @@ snapshots: is-regex: 1.1.4 safer-buffer@2.1.2: {} - safer-buffer@2.1.2: {} - sass@1.69.7: sass@1.69.7: dependencies: chokidar: 3.5.3 @@ -17151,31 +15692,24 @@ snapshots: source-map-js: 1.0.2 sax@1.2.1: {} - sax@1.2.1: {} - scheduler@0.20.2: scheduler@0.20.2: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - scheduler@0.23.0: scheduler@0.23.0: dependencies: loose-envify: 1.4.0 semver@5.7.2: {} - semver@5.7.2: {} - semver@6.3.1: {} semver@6.3.1: {} - semver@7.5.4: semver@7.5.4: dependencies: lru-cache: 6.0.0 - send@0.18.0: send@0.18.0: dependencies: debug: 2.6.9 @@ -17194,7 +15728,6 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.15.0: serve-static@1.15.0: dependencies: encodeurl: 1.0.2 @@ -17205,9 +15738,7 @@ snapshots: - supports-color set-blocking@2.0.0: {} - set-blocking@2.0.0: {} - set-function-length@1.1.1: set-function-length@1.1.1: dependencies: define-data-property: 1.1.1 @@ -17215,7 +15746,6 @@ snapshots: gopd: 1.0.1 has-property-descriptors: 1.0.1 - set-function-name@2.0.1: set-function-name@2.0.1: dependencies: define-data-property: 1.1.1 @@ -17223,48 +15753,37 @@ snapshots: has-property-descriptors: 1.0.1 setprototypeof@1.1.0: {} - setprototypeof@1.1.0: {} - setprototypeof@1.2.0: {} setprototypeof@1.2.0: {} - shallow-clone@3.0.1: shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 - shebang-command@1.2.0: shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 - shebang-command@2.0.0: shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@1.0.0: {} - shebang-regex@1.0.0: {} - shebang-regex@3.0.0: {} shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} shell-quote@1.8.1: {} - shelljs@0.8.5: shelljs@0.8.5: dependencies: glob: 7.2.3 interpret: 1.4.0 rechoir: 0.6.2 - showdown@2.1.0: showdown@2.1.0: dependencies: commander: 9.5.0 - side-channel@1.0.4: side-channel@1.0.4: dependencies: call-bind: 1.0.5 @@ -17272,46 +15791,36 @@ snapshots: object-inspect: 1.13.1 signal-exit@3.0.7: {} - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} signal-exit@4.1.0: {} - simple-update-notifier@2.0.0: simple-update-notifier@2.0.0: dependencies: semver: 7.5.4 sisteransi@1.0.5: {} - sisteransi@1.0.5: {} - slash@3.0.0: {} slash@3.0.0: {} - slice-ansi@3.0.0: slice-ansi@3.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@4.0.0: slice-ansi@4.0.0: dependencies: ansi-styles: 4.3.0 astral-regex: 2.0.0 is-fullwidth-code-point: 3.0.0 - slice-ansi@5.0.0: slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 is-fullwidth-code-point: 4.0.0 smart-buffer@4.2.0: {} - smart-buffer@4.2.0: {} - smartwrap@2.0.2: smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.2 @@ -17321,7 +15830,6 @@ snapshots: wcwidth: 1.0.1 yargs: 15.4.1 - socks-proxy-agent@8.0.2: socks-proxy-agent@8.0.2: dependencies: agent-base: 7.1.0 @@ -17330,85 +15838,65 @@ snapshots: transitivePeerDependencies: - supports-color - socks@2.7.1: socks@2.7.1: dependencies: ip: 2.0.0 smart-buffer: 4.2.0 source-map-js@1.0.2: {} - source-map-js@1.0.2: {} - source-map-support@0.5.13: source-map-support@0.5.13: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 - source-map-support@0.5.21: source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 source-map: 0.6.1 source-map@0.6.1: {} - source-map@0.6.1: {} - source-map@0.7.4: {} source-map@0.7.4: {} - space-separated-tokens@1.1.5: {} space-separated-tokens@1.1.5: {} - spawn-command@0.0.2: {} spawn-command@0.0.2: {} - spawndamnit@2.0.0: spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 signal-exit: 3.0.7 - spdx-correct@3.2.0: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 spdx-license-ids: 3.0.16 spdx-exceptions@2.3.0: {} - spdx-exceptions@2.3.0: {} - spdx-expression-parse@3.0.1: spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.3.0 spdx-license-ids: 3.0.16 spdx-license-ids@3.0.16: {} - spdx-license-ids@3.0.16: {} - sprintf-js@1.0.3: {} sprintf-js@1.0.3: {} - stack-utils@2.0.6: stack-utils@2.0.6: dependencies: escape-string-regexp: 2.0.0 - stackblur-canvas@2.6.0: stackblur-canvas@2.6.0: optional: true statuses@1.5.0: {} - statuses@1.5.0: {} - statuses@2.0.1: {} statuses@2.0.1: {} - store2@2.14.2: {} store2@2.14.2: {} - storybook@7.6.7: storybook@7.6.7: dependencies: '@storybook/cli': 7.6.7 @@ -17419,72 +15907,59 @@ snapshots: - utf-8-validate stream-read-all@3.0.1: {} - stream-read-all@3.0.1: {} - stream-shift@1.0.1: {} stream-shift@1.0.1: {} - stream-transform@2.1.3: stream-transform@2.1.3: dependencies: mixme: 0.5.10 - streamx@2.15.6: streamx@2.15.6: dependencies: fast-fifo: 1.3.2 queue-tick: 1.0.1 string-argv@0.3.2: {} - string-argv@0.3.2: {} - string-length@4.0.2: string-length@4.0.2: dependencies: char-regex: 1.0.2 strip-ansi: 6.0.1 - string-width@4.2.3: string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: string-width@5.1.2: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 strip-ansi: 7.1.0 - string.prototype.trim@1.2.8: string.prototype.trim@1.2.8: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - string.prototype.trimend@1.0.7: string.prototype.trimend@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - string.prototype.trimstart@1.0.7: string.prototype.trimstart@1.0.7: dependencies: call-bind: 1.0.5 define-properties: 1.2.1 es-abstract: 1.22.3 - string_decoder@1.1.1: string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 - string_decoder@1.3.0: string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -17499,58 +15974,43 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: strip-ansi@7.1.0: dependencies: ansi-regex: 6.0.1 strip-bom@3.0.0: {} - strip-bom@3.0.0: {} - strip-bom@4.0.0: {} strip-bom@4.0.0: {} - strip-final-newline@2.0.0: {} strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} strip-final-newline@3.0.0: {} - strip-indent@3.0.0: strip-indent@3.0.0: dependencies: min-indent: 1.0.1 strip-json-comments@3.1.1: {} - strip-json-comments@3.1.1: {} - supports-color@5.5.0: supports-color@5.5.0: dependencies: has-flag: 3.0.0 - supports-color@7.2.0: supports-color@7.2.0: dependencies: has-flag: 4.0.0 - supports-color@8.1.1: supports-color@8.1.1: dependencies: has-flag: 4.0.0 supports-preserve-symlinks-flag@1.0.0: {} - svg-pathdata@6.0.3: - supports-preserve-symlinks-flag@1.0.0: {} - svg-pathdata@6.0.3: optional: true synchronous-promise@2.0.17: {} - synchronous-promise@2.0.17: {} - table-layout@1.0.2: table-layout@1.0.2: dependencies: array-back: 4.0.2 @@ -17558,7 +16018,6 @@ snapshots: typical: 5.2.0 wordwrapjs: 4.0.1 - table-layout@3.0.2: table-layout@3.0.2: dependencies: '@75lb/deep-merge': 1.1.1 @@ -17569,7 +16028,6 @@ snapshots: typical: 7.1.1 wordwrapjs: 5.1.0 - tar-fs@2.1.1: tar-fs@2.1.1: dependencies: chownr: 1.1.4 @@ -17577,14 +16035,12 @@ snapshots: pump: 3.0.0 tar-stream: 2.2.0 - tar-fs@3.0.4: tar-fs@3.0.4: dependencies: mkdirp-classic: 0.5.3 pump: 3.0.0 tar-stream: 3.1.6 - tar-stream@2.2.0: tar-stream@2.2.0: dependencies: bl: 4.1.0 @@ -17593,14 +16049,12 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - tar-stream@3.1.6: tar-stream@3.1.6: dependencies: b4a: 1.6.4 fast-fifo: 1.3.2 streamx: 2.15.6 - tar@6.2.0: tar@6.2.0: dependencies: chownr: 2.0.0 @@ -17610,26 +16064,21 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 - telejson@7.2.0: telejson@7.2.0: dependencies: memoizerific: 1.11.3 temp-dir@2.0.0: {} - temp-dir@2.0.0: {} - temp@0.8.4: temp@0.8.4: dependencies: rimraf: 2.6.3 - tempfile@3.0.0: tempfile@3.0.0: dependencies: temp-dir: 2.0.0 uuid: 3.4.0 - tempy@1.0.1: tempy@1.0.1: dependencies: del: 6.1.1 @@ -17639,67 +16088,51 @@ snapshots: unique-string: 2.0.0 term-size@2.2.1: {} - term-size@2.2.1: {} - test-exclude@6.0.0: test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - text-segmentation@1.0.3: text-segmentation@1.0.3: dependencies: utrie: 1.0.2 optional: true text-table@0.2.0: {} - text-table@0.2.0: {} - through2@2.0.5: through2@2.0.5: dependencies: readable-stream: 2.3.8 xtend: 4.0.2 through@2.3.8: {} - through@2.3.8: {} - tiny-invariant@1.3.1: {} tiny-invariant@1.3.1: {} - tmp@0.0.33: tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 tmpl@1.0.5: {} - tmpl@1.0.5: {} - to-fast-properties@2.0.0: {} to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: to-regex-range@5.0.1: dependencies: is-number: 7.0.0 tocbot@4.25.0: {} - tocbot@4.25.0: {} - toidentifier@1.0.1: {} toidentifier@1.0.1: {} - tr46@0.0.3: {} tr46@0.0.3: {} - tr46@3.0.0: tr46@3.0.0: dependencies: punycode: 2.3.1 - transliteration@2.3.5: transliteration@2.3.5: dependencies: yargs: 17.7.2 @@ -17710,31 +16143,17 @@ snapshots: trough@2.1.0: {} - ts-api-utils@1.0.3(typescript@5.3.3): - - tree-kill@1.2.2: {} - - trim-newlines@3.0.1: {} - - trough@2.1.0: {} - ts-api-utils@1.0.3(typescript@5.3.3): dependencies: typescript: 5.3.3 ts-dedent@2.2.0: {} - ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3): - - ts-dedent@2.2.0: {} - - ts-jest@29.1.1(@babel/core@7.23.7)(esbuild@0.19.11)(jest@29.7.0)(typescript@5.3.3): + ts-jest@29.1.1(@babel/core@7.23.7)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.23.7))(esbuild@0.19.11)(jest@29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)))(typescript@5.3.3): dependencies: - '@babel/core': 7.23.7 bs-logger: 0.2.6 - esbuild: 0.19.11 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2) + jest: 29.7.0(@types/node@18.19.6)(ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 @@ -17742,8 +16161,12 @@ snapshots: semver: 7.5.4 typescript: 5.3.3 yargs-parser: 21.1.1 + optionalDependencies: + '@babel/core': 7.23.7 + '@jest/types': 29.6.3 + babel-jest: 29.7.0(@babel/core@7.23.7) + esbuild: 0.19.11 - ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3): ts-node@10.9.2(@types/node@18.19.6)(typescript@5.3.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -17770,21 +16193,11 @@ snapshots: tsscmp@1.0.6: {} - tsutils@3.21.0(typescript@5.3.3): - ts-simple-type@2.0.0-next.0: {} - - tslib@1.14.1: {} - - tslib@2.6.2: {} - - tsscmp@1.0.6: {} - tsutils@3.21.0(typescript@5.3.3): dependencies: tslib: 1.14.1 typescript: 5.3.3 - tty-table@4.2.3: tty-table@4.2.3: dependencies: chalk: 4.1.2 @@ -17795,55 +16208,41 @@ snapshots: wcwidth: 1.0.1 yargs: 17.7.2 - type-check@0.4.0: type-check@0.4.0: dependencies: prelude-ls: 1.2.1 type-detect@4.0.8: {} - type-detect@4.0.8: {} - type-fest@0.12.0: {} type-fest@0.12.0: {} - type-fest@0.13.1: {} type-fest@0.13.1: {} - type-fest@0.16.0: {} type-fest@0.16.0: {} - type-fest@0.20.2: {} type-fest@0.20.2: {} - type-fest@0.21.3: {} type-fest@0.21.3: {} - type-fest@0.6.0: {} type-fest@0.6.0: {} - type-fest@0.8.1: {} type-fest@0.8.1: {} - type-fest@1.4.0: {} type-fest@1.4.0: {} - type-fest@2.19.0: {} type-fest@2.19.0: {} - type-is@1.6.18: type-is@1.6.18: dependencies: media-typer: 0.3.0 mime-types: 2.1.35 - typed-array-buffer@1.0.0: typed-array-buffer@1.0.0: dependencies: call-bind: 1.0.5 get-intrinsic: 1.2.2 is-typed-array: 1.1.12 - typed-array-byte-length@1.0.0: typed-array-byte-length@1.0.0: dependencies: call-bind: 1.0.5 @@ -17851,7 +16250,6 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 - typed-array-byte-offset@1.0.0: typed-array-byte-offset@1.0.0: dependencies: available-typed-arrays: 1.0.5 @@ -17860,7 +16258,6 @@ snapshots: has-proto: 1.0.1 is-typed-array: 1.1.12 - typed-array-length@1.0.4: typed-array-length@1.0.4: dependencies: call-bind: 1.0.5 @@ -17885,30 +16282,9 @@ snapshots: ufo@1.3.2: {} - uglify-js@3.17.4: - - typedarray@0.0.6: {} - - typescript@4.3.5: {} - - typescript@5.2.2: {} - - typescript@5.3.3: {} - - typical@4.0.0: {} - - typical@5.2.0: {} - - typical@7.1.1: {} - - ua-parser-js@1.0.37: {} - - ufo@1.3.2: {} - uglify-js@3.17.4: optional: true - unbox-primitive@1.0.2: unbox-primitive@1.0.2: dependencies: call-bind: 1.0.5 @@ -17916,31 +16292,24 @@ snapshots: has-symbols: 1.0.3 which-boxed-primitive: 1.0.2 - unbzip2-stream@1.4.3: unbzip2-stream@1.4.3: dependencies: buffer: 5.7.1 through: 2.3.8 undici-types@5.26.5: {} - undici-types@5.26.5: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} unicode-canonical-property-names-ecmascript@2.0.0: {} - unicode-match-property-ecmascript@2.0.0: unicode-match-property-ecmascript@2.0.0: dependencies: unicode-canonical-property-names-ecmascript: 2.0.0 unicode-property-aliases-ecmascript: 2.1.0 unicode-match-property-value-ecmascript@2.1.0: {} - unicode-match-property-value-ecmascript@2.1.0: {} - unicode-property-aliases-ecmascript@2.1.0: {} unicode-property-aliases-ecmascript@2.1.0: {} - unified@10.1.2: unified@10.1.2: dependencies: '@types/unist': 2.0.10 @@ -17951,44 +16320,36 @@ snapshots: trough: 2.1.0 vfile: 5.3.7 - unique-string@2.0.0: unique-string@2.0.0: dependencies: crypto-random-string: 2.0.0 unist-util-is@4.1.0: {} - unist-util-is@4.1.0: {} - unist-util-is@5.2.1: unist-util-is@5.2.1: dependencies: '@types/unist': 2.0.10 - unist-util-stringify-position@3.0.3: unist-util-stringify-position@3.0.3: dependencies: '@types/unist': 2.0.10 - unist-util-visit-parents@3.1.1: unist-util-visit-parents@3.1.1: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 - unist-util-visit-parents@5.1.3: unist-util-visit-parents@5.1.3: dependencies: '@types/unist': 2.0.10 unist-util-is: 5.2.1 - unist-util-visit@2.0.3: unist-util-visit@2.0.3: dependencies: '@types/unist': 2.0.10 unist-util-is: 4.1.0 unist-util-visit-parents: 3.1.1 - unist-util-visit@4.1.2: unist-util-visit@4.1.2: dependencies: '@types/unist': 2.0.10 @@ -17996,15 +16357,11 @@ snapshots: unist-util-visit-parents: 5.1.3 universalify@0.1.2: {} - universalify@0.1.2: {} - universalify@2.0.1: {} universalify@2.0.1: {} - unpipe@1.0.0: {} unpipe@1.0.0: {} - unplugin@1.6.0: unplugin@1.6.0: dependencies: acorn: 8.11.3 @@ -18014,51 +16371,44 @@ snapshots: untildify@4.0.0: {} - update-browserslist-db@1.0.13(browserslist@4.22.2): - - untildify@4.0.0: {} - update-browserslist-db@1.0.13(browserslist@4.22.2): dependencies: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 - uri-js@4.4.1: uri-js@4.4.1: dependencies: punycode: 2.3.1 - url@0.10.3: url@0.10.3: dependencies: punycode: 1.3.2 querystring: 0.2.0 - use-callback-ref@1.3.1(react@18.2.0): - use-callback-ref@1.3.1(react@18.2.0): + use-callback-ref@1.3.1(@types/react@18.2.47)(react@18.2.0): dependencies: react: 18.2.0 tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.2.47 - use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): - use-resize-observer@9.1.0(react-dom@18.2.0)(react@18.2.0): + use-resize-observer@9.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: '@juggle/resize-observer': 3.4.0 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - use-sidecar@1.1.2(react@18.2.0): - use-sidecar@1.1.2(react@18.2.0): + use-sidecar@1.1.2(@types/react@18.2.47)(react@18.2.0): dependencies: detect-node-es: 1.1.0 react: 18.2.0 tslib: 2.6.2 + optionalDependencies: + '@types/react': 18.2.47 util-deprecate@1.0.2: {} - util-deprecate@1.0.2: {} - util@0.12.5: util@0.12.5: dependencies: inherits: 2.0.4 @@ -18068,9 +16418,7 @@ snapshots: which-typed-array: 1.1.13 utils-merge@1.0.1: {} - utils-merge@1.0.1: {} - utrie@1.0.2: utrie@1.0.2: dependencies: base64-arraybuffer: 1.0.2 @@ -18082,13 +16430,6 @@ snapshots: uuid@9.0.1: {} - uvu@0.5.6: - uuid@3.4.0: {} - - uuid@8.0.0: {} - - uuid@9.0.1: {} - uvu@0.5.6: dependencies: dequal: 2.0.3 @@ -18097,16 +16438,13 @@ snapshots: sade: 1.8.1 v8-compile-cache-lib@3.0.1: {} - v8-compile-cache-lib@3.0.1: {} - v8-to-istanbul@8.1.1: v8-to-istanbul@8.1.1: dependencies: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 1.9.0 source-map: 0.7.4 - v8-to-istanbul@9.2.0: v8-to-istanbul@9.2.0: dependencies: '@jridgewell/trace-mapping': 0.3.20 @@ -18114,27 +16452,21 @@ snapshots: convert-source-map: 2.0.0 validate-color@2.2.4: {} - validate-color@2.2.4: {} - validate-npm-package-license@3.0.4: validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 vanilla-colorful@0.7.2: {} - vanilla-colorful@0.7.2: {} - vary@1.1.2: {} vary@1.1.2: {} - vfile-message@3.1.4: vfile-message@3.1.4: dependencies: '@types/unist': 2.0.10 unist-util-stringify-position: 3.0.3 - vfile@5.3.7: vfile@5.3.7: dependencies: '@types/unist': 2.0.10 @@ -18142,20 +16474,18 @@ snapshots: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - vite@4.5.1(sass@1.69.7): - vite@4.5.1(sass@1.69.7): + vite@4.5.1(@types/node@18.19.6)(sass@1.69.7): dependencies: esbuild: 0.18.20 postcss: 8.4.33 rollup: 3.29.4 - sass: 1.69.7 optionalDependencies: + '@types/node': 18.19.6 fsevents: 2.3.3 + sass: 1.69.7 vue@2.6.14: {} - vue@2.6.14: {} - wait-on@5.3.0(debug@4.3.4): wait-on@5.3.0(debug@4.3.4): dependencies: axios: 0.21.4(debug@4.3.4) @@ -18166,23 +16496,19 @@ snapshots: transitivePeerDependencies: - debug - walker@1.0.8: walker@1.0.8: dependencies: makeerror: 1.0.12 - watchpack@2.4.0: watchpack@2.4.0: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - wcwidth@1.0.1: wcwidth@1.0.1: dependencies: defaults: 1.0.4 - web-component-analyzer@2.0.0: web-component-analyzer@2.0.0: dependencies: fast-glob: 3.3.2 @@ -18191,30 +16517,23 @@ snapshots: yargs: 17.7.2 webidl-conversions@3.0.1: {} - webidl-conversions@3.0.1: {} - webidl-conversions@7.0.0: {} webidl-conversions@7.0.0: {} - webpack-sources@3.2.3: {} webpack-sources@3.2.3: {} - webpack-virtual-modules@0.6.1: {} webpack-virtual-modules@0.6.1: {} - whatwg-url@11.0.0: whatwg-url@11.0.0: dependencies: tr46: 3.0.0 webidl-conversions: 7.0.0 - whatwg-url@5.0.0: whatwg-url@5.0.0: dependencies: tr46: 0.0.3 webidl-conversions: 3.0.1 - which-boxed-primitive@1.0.2: which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -18224,15 +16543,12 @@ snapshots: is-symbol: 1.0.4 which-module@2.0.1: {} - which-module@2.0.1: {} - which-pm@2.0.0: which-pm@2.0.0: dependencies: load-yaml-file: 0.2.0 path-exists: 4.0.0 - which-typed-array@1.1.13: which-typed-array@1.1.13: dependencies: available-typed-arrays: 1.0.5 @@ -18241,53 +16557,43 @@ snapshots: gopd: 1.0.1 has-tostringtag: 1.0.0 - which@1.3.1: which@1.3.1: dependencies: isexe: 2.0.0 - which@2.0.2: which@2.0.2: dependencies: isexe: 2.0.0 - which@3.0.1: which@3.0.1: dependencies: isexe: 2.0.0 - widest-line@3.1.0: widest-line@3.1.0: dependencies: string-width: 4.2.3 wordwrap@1.0.0: {} - wordwrap@1.0.0: {} - wordwrapjs@4.0.1: wordwrapjs@4.0.1: dependencies: reduce-flatten: 2.0.0 typical: 5.2.0 wordwrapjs@5.1.0: {} - wordwrapjs@5.1.0: {} - wrap-ansi@6.2.0: wrap-ansi@6.2.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@7.0.0: wrap-ansi@7.0.0: dependencies: ansi-styles: 4.3.0 string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: wrap-ansi@8.1.0: dependencies: ansi-styles: 6.2.1 @@ -18295,22 +16601,18 @@ snapshots: strip-ansi: 7.1.0 wrappy@1.0.2: {} - wrappy@1.0.2: {} - write-file-atomic@2.4.3: write-file-atomic@2.4.3: dependencies: graceful-fs: 4.2.11 imurmurhash: 0.1.4 signal-exit: 3.0.7 - write-file-atomic@4.0.2: write-file-atomic@4.0.2: dependencies: imurmurhash: 0.1.4 signal-exit: 3.0.7 - ws@6.2.2: ws@6.2.2: dependencies: async-limiter: 1.0.1 @@ -18323,58 +16625,36 @@ snapshots: ws@8.5.0: {} - xml2js@0.5.0: - - ws@7.5.9: {} - - ws@8.13.0: {} - - ws@8.16.0: {} - - ws@8.5.0: {} - xml2js@0.5.0: dependencies: sax: 1.2.1 xmlbuilder: 11.0.1 xmlbuilder@11.0.1: {} - xmlbuilder@11.0.1: {} - xtend@4.0.2: {} xtend@4.0.2: {} - y18n@4.0.3: {} y18n@4.0.3: {} - y18n@5.0.8: {} y18n@5.0.8: {} - yallist@2.1.2: {} yallist@2.1.2: {} - yallist@3.1.1: {} yallist@3.1.1: {} - yallist@4.0.0: {} yallist@4.0.0: {} - yaml@1.10.2: {} yaml@1.10.2: {} - yaml@2.3.1: {} yaml@2.3.1: {} - yargs-parser@18.1.3: yargs-parser@18.1.3: dependencies: camelcase: 5.3.1 decamelize: 1.2.0 yargs-parser@21.1.1: {} - yargs-parser@21.1.1: {} - yargs@15.4.1: yargs@15.4.1: dependencies: cliui: 6.0.0 @@ -18389,7 +16669,6 @@ snapshots: y18n: 4.0.3 yargs-parser: 18.1.3 - yargs@17.7.1: yargs@17.7.1: dependencies: cliui: 8.0.1 @@ -18400,7 +16679,6 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yargs@17.7.2: yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -18411,25 +16689,19 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 - yauzl@2.10.0: yauzl@2.10.0: dependencies: buffer-crc32: 0.2.13 fd-slicer: 1.1.0 ylru@1.3.2: {} - ylru@1.3.2: {} - yn@3.1.1: {} yn@3.1.1: {} - yocto-queue@0.1.0: {} yocto-queue@0.1.0: {} - yoga-layout-prebuilt@1.10.0: yoga-layout-prebuilt@1.10.0: dependencies: '@types/yoga-layout': 1.9.2 zwitch@2.0.4: {} - zwitch@2.0.4: {} From 558705cddfb4cb1639b2e14e0baca1156a7414ba Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 11 Jun 2024 17:04:29 +0530 Subject: [PATCH 32/64] f-dag-app element placement in section --- .../src/components/f-dag/f-dag.ts | 175 +++++++++++++----- .../src/components/f-dag/types.ts | 17 +- stories/flow-lineage/dag-config.ts | 35 +++- 3 files changed, 170 insertions(+), 57 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index fd48ac577..80f4720b3 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -8,7 +8,14 @@ import * as d3 from "d3"; import { property, query, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; -import type { CoOrdinates, FDagConfig, FDagElement, FDagLink } from "./types"; +import type { + CoOrdinates, + CustomPlacement, + CustomSectionPlacement, + FDagConfig, + FDagElement, + FDagLink +} from "./types"; import { dropLine, generatePath, @@ -25,11 +32,13 @@ export type HierarchyNode = { width?: number; group?: string; type: "group" | "node"; + placement?: CustomPlacement; children: HierarchyNode[]; next?: HierarchyNode[]; }; function buildHierarchy(config: FDagConfig) { const nodesMap = new Map(); + const customPlacementMap = new Map(); const groupMap = new Map(); config.groups.forEach(group => { @@ -43,8 +52,12 @@ function buildHierarchy(config: FDagConfig) { width: node.width, type: "node", height: node.height, + placement: node.placement, children: [] }); + if (node.placement) { + customPlacementMap.set(node.id, nodesMap.get(node.id)!); + } }); const roots: HierarchyNode[] = []; @@ -61,9 +74,14 @@ function buildHierarchy(config: FDagConfig) { type: "group", height: group.height, width: group.width, + placement: group.placement, children: [] }; + if (group.placement) { + customPlacementMap.set(group.id, groupNode); + } + config.nodes.forEach(node => { if (node.group === group.id) { groupNode.children.push(nodesMap.get(node.id)!); @@ -89,7 +107,7 @@ function buildHierarchy(config: FDagConfig) { } }); - return roots; + return { roots, customPlacements: customPlacementMap }; } @flowElement("f-dag") @@ -160,12 +178,24 @@ export class FDag extends FRoot { return elementObj!; } + getCustomPlacementElements(section: number, customPlacements: Map) { + const nodes = this.config.nodes + .filter(n => n.placement && (n.placement as CustomSectionPlacement).section === section) + .map(n => customPlacements.get(n.id)); + const groups = this.config.groups + .filter(n => n.placement && (n.placement as CustomSectionPlacement).section === section) + .map(n => customPlacements.get(n.id)); + + return [...nodes, ...groups]; + } + protected willUpdate(changedProperties: PropertyValueMap | Map): void { super.willUpdate(changedProperties); - const rootNodes = buildHierarchy(this.config); + const { roots: rootNodes, customPlacements } = buildHierarchy(this.config); const positionNodes = ( + containerId: string, elements: HierarchyNode[], x: number, y: number, @@ -202,66 +232,111 @@ export class FDag extends FRoot { let maxY = 0; const minX = x; const minY = y; + let section = 0; const calculateCords = (ns: HierarchyNode[]) => { const nexts: HierarchyNode[] = []; let maxWidth = this.defaultElementWidth; let maxHeight = this.defaultElementHeight; - ns.forEach(n => { + section += 1; + const nextSection = () => { + if (this.config.layoutDirection === "vertical") { + y += maxHeight + spaceY; + x = initialX; + } else { + x += maxWidth + spaceX; + y = initialY; + } + }; + const placeElement = (n: HierarchyNode) => { const elementObject = this.getElement(n.id); - if (!elementObject.x && !elementObject.y) { - elementObject.x = x; - elementObject.y = y; - - if (n.type === "group" && n.children && n.children.length > 0) { - const { width, height } = positionNodes( - n.children, - x + 20, - y + 60, - elementObject.spacing?.x, - elementObject.spacing?.y - ); - - elementObject.width = width; - elementObject.height = height + 20; - } else { - if (!elementObject.width) { - elementObject.width = this.defaultElementWidth; + if ( + !elementObject.placement || + (elementObject.placement && + (elementObject.placement as CustomSectionPlacement).section === section && + containerId === "root") + ) { + if (elementObject.x === undefined && elementObject.y === undefined) { + elementObject.x = x; + elementObject.y = y; + + if (n.type === "group" && n.children && n.children.length > 0) { + const { width, height } = positionNodes( + n.id, + n.children, + x + 20, + y + 60, + elementObject.spacing?.x, + elementObject.spacing?.y + ); + + elementObject.width = width; + elementObject.height = height + 20; + } else { + if (!elementObject.width) { + elementObject.width = this.defaultElementWidth; + } + if (!elementObject.height) { + elementObject.height = this.defaultElementHeight; + } } - if (!elementObject.height) { - elementObject.height = this.defaultElementHeight; + if (x + elementObject.width > maxX) { + maxX = x + elementObject.width; + } + if (y + elementObject.height > maxY) { + maxY = y + elementObject.height; } - } - if (x + elementObject.width > maxX) { - maxX = x + elementObject.width; - } - if (y + elementObject.height > maxY) { - maxY = y + elementObject.height; - } - if (this.config.layoutDirection === "vertical") { - x += elementObject.width + spaceX; - } else { - y += elementObject.height + spaceY; - } + if (this.config.layoutDirection === "vertical") { + x += elementObject.width + spaceX; + } else { + y += elementObject.height + spaceY; + } - if (elementObject.width > maxWidth) { - maxWidth = elementObject.width; - } - if (elementObject.height > maxHeight) { - maxHeight = elementObject.height; - } + if (elementObject.width > maxWidth) { + maxWidth = elementObject.width; + } + if (elementObject.height > maxHeight) { + maxHeight = elementObject.height; + } - if (n.next) nexts.push(...n.next); + if (n.next) nexts.push(...n.next); + } } + }; + const customPlacementsElements = + containerId === "root" ? this.getCustomPlacementElements(section, customPlacements) : []; + + const beforeElements = + containerId === "root" + ? customPlacementsElements.filter(c => c?.placement?.position === "before") + : []; + const afterElements = + containerId === "root" + ? customPlacementsElements.filter(c => c?.placement?.position === "after") + : []; + beforeElements.forEach(b => { + if (b) placeElement(b); }); - if (this.config.layoutDirection === "vertical") { - y += maxHeight + spaceY; - x = initialX; - } else { - x += maxWidth + spaceX; - y = initialY; + + if (beforeElements.length > 0) { + nextSection(); + maxHeight = this.defaultElementHeight; + maxWidth = this.defaultElementWidth; } + const skipTheseElements = [...beforeElements, ...afterElements].map(ba => ba?.id); + ns.filter(n => !skipTheseElements.includes(n.id)).forEach(placeElement); + + if (afterElements.length > 0) { + nextSection(); + maxHeight = this.defaultElementHeight; + maxWidth = this.defaultElementWidth; + } + afterElements.forEach(b => { + if (b) placeElement(b); + }); + nextSection(); + if (nexts.length > 0) calculateCords(nexts); }; calculateCords(Array.from(roots)); @@ -272,7 +347,7 @@ export class FDag extends FRoot { }; }; - positionNodes(rootNodes, 0, 0, this.config.spacing?.x, this.config.spacing?.y); + positionNodes("root", rootNodes, 0, 0, this.config.spacing?.x, this.config.spacing?.y); } handleZoom(event: WheelEvent) { // const chartContainer = event.currentTarget as HTMLElement; diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 03de23961..c831ecfa9 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -2,6 +2,17 @@ export type CoOrdinates = { x?: number; y?: number; }; + +export type CustomSectionPlacement = { + section: number; + position: "before" | "after"; +}; +export type CustomPlacement = + | CustomSectionPlacement + | { + position: "before" | "after"; + elementId: string; + }; export type FDagElement = { id: string; label: string; @@ -13,11 +24,7 @@ export type FDagElement = { x: number; y: number; }; - placement?: { - section: number; - position: "before" | "after"; - elementId?: string; - }; + placement?: CustomPlacement; } & CoOrdinates; export type FDagLinkDirection = "horizontal" | "vertical"; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 38781477c..a4b21bb17 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -51,7 +51,25 @@ const dagConfig: FDagConfig = { { id: "node8", label: "Node 8", - icon: "i-box" + icon: "i-box", + height: 48, + width: 100 + }, + { + id: "node9", + label: "Node 9", + icon: "i-box", + height: 48, + width: 120, + group: "group5" + }, + { + id: "node10", + label: "Node 10", + icon: "i-box", + height: 48, + width: 120, + group: "group5" } ], links: [ @@ -142,6 +160,19 @@ const dagConfig: FDagConfig = { y: 20 }, group: "group1" + }, + { + id: "group5", + label: "Group 5", + icon: "i-tree", + spacing: { + x: 20, + y: 20 + }, + placement: { + section: 3, + position: "after" + } } ], spacing: { @@ -152,7 +183,7 @@ const dagConfig: FDagConfig = { width: 200, height: 48 }, - layoutDirection: "horizontal" + layoutDirection: "vertical" }; export default dagConfig; From 275936f70b677e2fc6a1746dfbc030e0e8e86025 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 11 Jun 2024 17:45:31 +0530 Subject: [PATCH 33/64] f-dag-app custom placement by node --- .../src/components/f-dag/f-dag.ts | 56 ++++++++++++++++--- .../src/components/f-dag/types.ts | 13 ++--- stories/flow-lineage/dag-config.ts | 21 +++++++ 3 files changed, 76 insertions(+), 14 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 80f4720b3..1ce8da5a7 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -11,7 +11,8 @@ import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./n import type { CoOrdinates, CustomPlacement, - CustomSectionPlacement, + CustomPlacementByElement, + CustomPlacementBySection, FDagConfig, FDagElement, FDagLink @@ -180,10 +181,24 @@ export class FDag extends FRoot { getCustomPlacementElements(section: number, customPlacements: Map) { const nodes = this.config.nodes - .filter(n => n.placement && (n.placement as CustomSectionPlacement).section === section) + .filter(n => n.placement && (n.placement as CustomPlacementBySection).section === section) .map(n => customPlacements.get(n.id)); const groups = this.config.groups - .filter(n => n.placement && (n.placement as CustomSectionPlacement).section === section) + .filter(n => n.placement && (n.placement as CustomPlacementBySection).section === section) + .map(n => customPlacements.get(n.id)); + + return [...nodes, ...groups]; + } + + getCustomPlacementElementsByElementId( + elementId: string, + customPlacements: Map + ) { + const nodes = this.config.nodes + .filter(n => n.placement && (n.placement as CustomPlacementByElement).elementId === elementId) + .map(n => customPlacements.get(n.id)); + const groups = this.config.groups + .filter(n => n.placement && (n.placement as CustomPlacementByElement).elementId === elementId) .map(n => customPlacements.get(n.id)); return [...nodes, ...groups]; @@ -247,15 +262,39 @@ export class FDag extends FRoot { y = initialY; } }; + + let currentNodeId: string | null; + const isElementPlacement = (elementObject: FDagElement) => + elementObject.placement && + (elementObject.placement as CustomPlacementByElement).elementId === currentNodeId; + const isSectionPlacement = (elementObject: FDagElement) => + elementObject.placement && + (elementObject.placement as CustomPlacementBySection).section === section && + containerId === "root"; const placeElement = (n: HierarchyNode) => { const elementObject = this.getElement(n.id); if ( !elementObject.placement || - (elementObject.placement && - (elementObject.placement as CustomSectionPlacement).section === section && - containerId === "root") + isSectionPlacement(elementObject) || + isElementPlacement(elementObject) ) { if (elementObject.x === undefined && elementObject.y === undefined) { + const customPlacementsByElements = this.getCustomPlacementElementsByElementId( + elementObject.id, + customPlacements + ); + if (customPlacementsByElements.length > 0) { + currentNodeId = elementObject.id; + } + const beforeCustomElements = customPlacementsByElements.filter( + c => c?.placement?.position === "before" + ); + const afterCustomElements = customPlacementsByElements.filter( + c => c?.placement?.position === "after" + ); + beforeCustomElements.forEach(b => { + if (b) placeElement(b); + }); elementObject.x = x; elementObject.y = y; @@ -298,7 +337,10 @@ export class FDag extends FRoot { if (elementObject.height > maxHeight) { maxHeight = elementObject.height; } - + afterCustomElements.forEach(b => { + if (b) placeElement(b); + }); + currentNodeId = null; if (n.next) nexts.push(...n.next); } } diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index c831ecfa9..fd0b39726 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -3,16 +3,15 @@ export type CoOrdinates = { y?: number; }; -export type CustomSectionPlacement = { +export type CustomPlacementBySection = { section: number; position: "before" | "after"; }; -export type CustomPlacement = - | CustomSectionPlacement - | { - position: "before" | "after"; - elementId: string; - }; +export type CustomPlacementByElement = { + elementId: string; + position: "before" | "after"; +}; +export type CustomPlacement = CustomPlacementBySection | CustomPlacementByElement; export type FDagElement = { id: string; label: string; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index a4b21bb17..cd683088a 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -70,6 +70,14 @@ const dagConfig: FDagConfig = { height: 48, width: 120, group: "group5" + }, + { + id: "node11", + label: "Node 11", + icon: "i-box", + height: 48, + width: 120, + group: "group6" } ], links: [ @@ -173,6 +181,19 @@ const dagConfig: FDagConfig = { section: 3, position: "after" } + }, + { + id: "group6", + label: "Group 6", + icon: "i-tree", + spacing: { + x: 20, + y: 20 + }, + placement: { + elementId: "node4", + position: "after" + } } ], spacing: { From 827b7db123d364982f942f6408187e4c6494804b Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 12 Jun 2024 11:37:43 +0530 Subject: [PATCH 34/64] f-dag-app group should take pririty w.r.t custom placement --- .../src/components/f-dag/f-dag.ts | 6 +++ stories/flow-lineage/dag-config.ts | 42 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 1ce8da5a7..97e46e09d 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -47,6 +47,9 @@ function buildHierarchy(config: FDagConfig) { }); config.nodes.forEach(node => { + if (node.group && node.placement) { + node.placement = undefined; + } nodesMap.set(node.id, { id: node.id, group: node.group, @@ -70,6 +73,9 @@ function buildHierarchy(config: FDagConfig) { }); function addGroupToHierarchy(group: FDagElement, parent?: HierarchyNode): void { + if (group.group && group.placement) { + group.placement = undefined; + } const groupNode: HierarchyNode = { id: group.id, type: "group", diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index cd683088a..db845a2f0 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -78,6 +78,30 @@ const dagConfig: FDagConfig = { height: 48, width: 120, group: "group6" + }, + { + id: "node91", + label: "Node 91", + icon: "i-box", + height: 48, + width: 120, + group: "group7" + }, + { + id: "node101", + label: "Node 101", + icon: "i-box", + height: 48, + width: 120, + group: "group7" + }, + { + id: "node111", + label: "Node 111", + icon: "i-box", + height: 48, + width: 120, + group: "group7" } ], links: [ @@ -177,6 +201,19 @@ const dagConfig: FDagConfig = { x: 20, y: 20 }, + placement: { + section: 1, + position: "before" + } + }, + { + id: "group7", + label: "Group 7", + icon: "i-tree", + spacing: { + x: 20, + y: 20 + }, placement: { section: 3, position: "after" @@ -191,9 +228,10 @@ const dagConfig: FDagConfig = { y: 20 }, placement: { - elementId: "node4", + elementId: "group4", position: "after" - } + }, + group: "group3" } ], spacing: { From fe35af544aaaafc22f6c3db0d07e36951a86fea3 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 12 Jun 2024 12:44:46 +0530 Subject: [PATCH 35/64] f-dag-app layoutDirection in group added --- .../flow-lineage/src/components/f-dag/f-dag.ts | 15 ++++++++++++--- .../flow-lineage/src/components/f-dag/types.ts | 3 ++- stories/flow-lineage/dag-config.ts | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 97e46e09d..cc1cdbf31 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -224,7 +224,16 @@ export class FDag extends FRoot { spaceY = 100 ) => { const elementIds = elements.map(e => e.id); - + const conatinerElementObject = this.getElement(containerId) as FDagElement; + const layoutDirection = (() => { + if (containerId === "root") { + return this.config.layoutDirection; + } + if (conatinerElementObject.layoutDirection === "vertical") { + return "horizontal"; + } + return "vertical"; + })(); const nodeLinks = this.config.links.filter( l => elementIds.includes(l.from.elementId) && elementIds.includes(l.to.elementId) ); @@ -260,7 +269,7 @@ export class FDag extends FRoot { let maxHeight = this.defaultElementHeight; section += 1; const nextSection = () => { - if (this.config.layoutDirection === "vertical") { + if (layoutDirection === "vertical") { y += maxHeight + spaceY; x = initialX; } else { @@ -331,7 +340,7 @@ export class FDag extends FRoot { maxY = y + elementObject.height; } - if (this.config.layoutDirection === "vertical") { + if (layoutDirection === "vertical") { x += elementObject.width + spaceX; } else { y += elementObject.height + spaceY; diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index fd0b39726..72bd9c8d9 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -24,6 +24,7 @@ export type FDagElement = { y: number; }; placement?: CustomPlacement; + layoutDirection?: "horizontal" | "vertical"; } & CoOrdinates; export type FDagLinkDirection = "horizontal" | "vertical"; @@ -34,7 +35,7 @@ export type FDagLink = { }; export type FDagConfig = { - nodes: FDagElement[]; + nodes: Omit[]; links: FDagLink[]; groups: Omit[]; spacing?: { diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index db845a2f0..544069055 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -214,6 +214,7 @@ const dagConfig: FDagConfig = { x: 20, y: 20 }, + layoutDirection: "vertical", placement: { section: 3, position: "after" @@ -230,8 +231,7 @@ const dagConfig: FDagConfig = { placement: { elementId: "group4", position: "after" - }, - group: "group3" + } } ], spacing: { From 967323daa9f47afa3ec9a14e891241f396a96ba1 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 12 Jun 2024 16:35:06 +0530 Subject: [PATCH 36/64] f-dag-app code separation --- .../src/components/f-dag/f-dag.ts | 100 ++---------------- .../src/components/f-dag/hierarchy-builder.ts | 81 ++++++++++++++ .../src/components/f-dag/types.ts | 12 +++ stories/flow-lineage/dag-config.ts | 3 +- 4 files changed, 103 insertions(+), 93 deletions(-) create mode 100644 packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index cc1cdbf31..dc065c3ff 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -10,12 +10,12 @@ import { ifDefined } from "lit-html/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; import type { CoOrdinates, - CustomPlacement, CustomPlacementByElement, CustomPlacementBySection, FDagConfig, FDagElement, - FDagLink + FDagLink, + HierarchyNode } from "./types"; import { dropLine, @@ -24,98 +24,9 @@ import { updateLinePath, updateLink } from "./link-utils"; +import buildHierarchy from "./hierarchy-builder"; injectCss("f-dag", globalStyle); -// Renders attribute names of parent element to textContent -export type HierarchyNode = { - id: string; - height?: number; - width?: number; - group?: string; - type: "group" | "node"; - placement?: CustomPlacement; - children: HierarchyNode[]; - next?: HierarchyNode[]; -}; -function buildHierarchy(config: FDagConfig) { - const nodesMap = new Map(); - const customPlacementMap = new Map(); - const groupMap = new Map(); - - config.groups.forEach(group => { - groupMap.set(group.id, group); - }); - - config.nodes.forEach(node => { - if (node.group && node.placement) { - node.placement = undefined; - } - nodesMap.set(node.id, { - id: node.id, - group: node.group, - width: node.width, - type: "node", - height: node.height, - placement: node.placement, - children: [] - }); - if (node.placement) { - customPlacementMap.set(node.id, nodesMap.get(node.id)!); - } - }); - - const roots: HierarchyNode[] = []; - - nodesMap.forEach(node => { - if (!node.group) { - roots.push(node); - } - }); - - function addGroupToHierarchy(group: FDagElement, parent?: HierarchyNode): void { - if (group.group && group.placement) { - group.placement = undefined; - } - const groupNode: HierarchyNode = { - id: group.id, - type: "group", - height: group.height, - width: group.width, - placement: group.placement, - children: [] - }; - - if (group.placement) { - customPlacementMap.set(group.id, groupNode); - } - - config.nodes.forEach(node => { - if (node.group === group.id) { - groupNode.children.push(nodesMap.get(node.id)!); - } - }); - - if (parent) { - parent.children.push(groupNode); - } else { - roots.push(groupNode); - } - - config.groups.forEach(subGroup => { - if (subGroup.group === group.id) { - addGroupToHierarchy(subGroup, groupNode); - } - }); - } - - config.groups.forEach(group => { - if (!group.group) { - addGroupToHierarchy(group); - } - }); - - return { roots, customPlacements: customPlacementMap }; -} @flowElement("f-dag") export class FDag extends FRoot { @@ -139,6 +50,8 @@ export class FDag extends FRoot { @query(`.background-pattern`) backgroundPattern!: HTMLElement; + viewPortRect!: DOMRect; + createRenderRoot() { return this; } @@ -615,6 +528,9 @@ export class FDag extends FRoot { .attr("startOffset", "100%") .attr("fill", "var(--color-border-default)") .text("▶"); + void this.updateComplete.then(() => { + this.viewPortRect = this.dagViewPort.getBoundingClientRect(); + }); } } diff --git a/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts b/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts new file mode 100644 index 000000000..a8ebe0425 --- /dev/null +++ b/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts @@ -0,0 +1,81 @@ +import { FDagConfig, FDagElement, HierarchyNode } from "./types"; + +export default function buildHierarchy(config: FDagConfig) { + const nodesMap = new Map(); + const customPlacementMap = new Map(); + const groupMap = new Map(); + + config.groups.forEach(group => { + groupMap.set(group.id, group); + }); + + config.nodes.forEach(node => { + if (node.group && node.placement) { + node.placement = undefined; + } + nodesMap.set(node.id, { + id: node.id, + group: node.group, + width: node.width, + type: "node", + height: node.height, + placement: node.placement, + children: [] + }); + if (node.placement) { + customPlacementMap.set(node.id, nodesMap.get(node.id)!); + } + }); + + const roots: HierarchyNode[] = []; + + nodesMap.forEach(node => { + if (!node.group) { + roots.push(node); + } + }); + + function addGroupToHierarchy(group: FDagElement, parent?: HierarchyNode): void { + if (group.group && group.placement) { + group.placement = undefined; + } + const groupNode: HierarchyNode = { + id: group.id, + type: "group", + height: group.height, + width: group.width, + placement: group.placement, + children: [] + }; + + if (group.placement) { + customPlacementMap.set(group.id, groupNode); + } + + config.nodes.forEach(node => { + if (node.group === group.id) { + groupNode.children.push(nodesMap.get(node.id)!); + } + }); + + if (parent) { + parent.children.push(groupNode); + } else { + roots.push(groupNode); + } + + config.groups.forEach(subGroup => { + if (subGroup.group === group.id) { + addGroupToHierarchy(subGroup, groupNode); + } + }); + } + + config.groups.forEach(group => { + if (!group.group) { + addGroupToHierarchy(group); + } + }); + + return { roots, customPlacements: customPlacementMap }; +} diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 72bd9c8d9..e0b6c20d3 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -52,3 +52,15 @@ export type FDagConfig = { export type FDagComputedNode = { next: FDagComputedNode[]; } & FDagElement; + +// Renders attribute names of parent element to textContent +export type HierarchyNode = { + id: string; + height?: number; + width?: number; + group?: string; + type: "group" | "node"; + placement?: CustomPlacement; + children: HierarchyNode[]; + next?: HierarchyNode[]; +}; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 544069055..2901f2782 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -191,7 +191,8 @@ const dagConfig: FDagConfig = { x: 20, y: 20 }, - group: "group1" + group: "group1", + layoutDirection: "vertical" }, { id: "group5", From 744f572f38775ea4f984f278f92af1c06a1b3294 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 13 Jun 2024 13:34:41 +0530 Subject: [PATCH 37/64] f-dag-app plotting link in scaled version --- .../src/components/f-dag/link-utils.ts | 92 ++++++++++--------- .../src/components/f-dag/node-utils.ts | 16 ++-- 2 files changed, 56 insertions(+), 52 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index b09480422..0e655f768 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -9,30 +9,36 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { n.style.pointerEvents = "none"; }); const circle = event.currentTarget as HTMLElement; - const rect = circle.getBoundingClientRect(); - const dagRect = this.getBoundingClientRect(); - const svg = d3.select(this.svgElement.value!); - const circleX = rect.left - dagRect.left - this.viewPortTranslate.x; - const circleY = rect.top - dagRect.top - this.viewPortTranslate.y; + const elementId = circle.dataset.nodeId; - let x1 = event.clientX - dagRect.left - this.viewPortTranslate.x; - let y1 = event.clientY - dagRect.top - this.viewPortTranslate.y; + const elementObject = this.getElement(elementId!); + let x1 = elementObject.x; + let y1 = elementObject.y; - if (Math.abs(x1 - circleX) <= 12) { - let offset = 8; - if (circle.classList.contains("right")) { - offset = 0; - } - x1 = circleX + offset; + if (circle.classList.contains("right")) { + x1! += elementObject.width!; + y1! += event.offsetY; + } + if (circle.classList.contains("bottom")) { + y1! += elementObject.height!; + x1! += event.offsetX; + } + if (circle.classList.contains("left")) { + y1! += event.offsetY; + } + if (circle.classList.contains("top")) { + x1! += event.offsetX; } - if (Math.abs(y1 - circleY) <= 12) { - let offset = 8; - if (circle.classList.contains("bottom")) { - offset = 0; - } - y1 = circleY + offset; + let x2 = x1; + let y2 = y1; + if (circle.classList.contains("bottom") || circle.classList.contains("top")) { + y2! += 8; } + if (circle.classList.contains("left") || circle.classList.contains("right")) { + x2! += 8; + } + const svg = d3.select(this.svgElement.value!); const direction = circle.classList.contains("right") || circle.classList.contains("left") @@ -45,8 +51,8 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { elementId: circle.dataset.nodeId! }, to: { - x: event.clientX - dagRect.left - this.viewPortTranslate.x, - y: event.clientY - dagRect.top - this.viewPortTranslate.y, + x: x2, + y: y2, elementId: `` }, direction @@ -95,10 +101,9 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { } export function updateLinePath(this: FDag, event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { - const dagRect = this.getBoundingClientRect(); this.currentLine.attr("d", d => { - d.to.x = event.clientX - dagRect.left - this.viewPortTranslate.x; - d.to.y = event.clientY - dagRect.top - this.viewPortTranslate.y; + d.to.x! += event.movementX * (1 / this.scale); + d.to.y! += event.movementY * (1 / this.scale); const points: CoOrdinates[] = []; points.push({ @@ -122,8 +127,8 @@ export function updateLinePath(this: FDag, event: MouseEvent) { this.currentArrow = undefined; if (event.buttons === 1) { - this.viewPortTranslate.x += event.movementX; - this.viewPortTranslate.y += event.movementY; + this.viewPortTranslate.x += event.movementX * (1 / this.scale); + this.viewPortTranslate.y += event.movementY * (1 / this.scale); this.backgroundPattern.setAttribute( "patternTransform", `translate(${this.viewPortTranslate.x * this.scale},${ @@ -136,8 +141,7 @@ export function updateLinePath(this: FDag, event: MouseEvent) { } export function dropLine(this: FDag, event: MouseEvent) { const circle = event.currentTarget as HTMLElement; - const rect = circle.getBoundingClientRect(); - const dagRect = this.getBoundingClientRect(); + this.allGroupsAndNodes?.forEach(n => { n.style.pointerEvents = "all"; }); @@ -146,25 +150,23 @@ export function dropLine(this: FDag, event: MouseEvent) { const fromNodeId = linkElement.attr("id").replace(/(->)$/, ""); const toNodeId = circle.dataset.nodeId!; - let x2 = event.clientX - dagRect.left - this.viewPortTranslate.x; - let y2 = event.clientY - dagRect.top - this.viewPortTranslate.y; - - const circleX2 = rect.left - dagRect.left - this.viewPortTranslate.x; - const circleY2 = rect.top - dagRect.top - this.viewPortTranslate.y; + const elementObject = this.getElement(toNodeId); + let x2 = elementObject.x; + let y2 = elementObject.y; - if (Math.abs(y2 - circleY2) <= 12) { - let offset = 8; - if (circle.classList.contains("bottom")) { - offset = 0; - } - y2 = circleY2 + offset; + if (circle.classList.contains("right")) { + x2! += elementObject.width!; + y2! += event.offsetY; } - if (Math.abs(x2 - circleX2) <= 12) { - let offset = 8; - if (circle.classList.contains("right")) { - offset = 0; - } - x2 = circleX2 + offset; + if (circle.classList.contains("bottom")) { + y2! += elementObject.height!; + x2! += event.offsetX; + } + if (circle.classList.contains("left")) { + y2! += event.offsetY; + } + if (circle.classList.contains("top")) { + x2! += event.offsetX; } this.currentLine diff --git a/packages/flow-lineage/src/components/f-dag/node-utils.ts b/packages/flow-lineage/src/components/f-dag/node-utils.ts index f66a7ba55..d3e69231d 100644 --- a/packages/flow-lineage/src/components/f-dag/node-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/node-utils.ts @@ -28,10 +28,12 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv nodeElement.style.setProperty( "transform", - `translate(${translateX + event.movementX}px, ${translateY + event.movementY}px)` + `translate(${translateX + event.movementX * (1 / this.scale)}px, ${ + translateY + event.movementY * (1 / this.scale) + }px)` ); - nodeElement.dataset.lastTranslateX = `${translateX + event.movementX}`; - nodeElement.dataset.lastTranslateY = `${translateY + event.movementY}`; + nodeElement.dataset.lastTranslateX = `${translateX + event.movementX * (1 / this.scale)}`; + nodeElement.dataset.lastTranslateY = `${translateY + event.movementY * (1 / this.scale)}`; const fromLines = d3.selectAll( `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` ); @@ -46,8 +48,8 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv return { ...d, from: { - x: (d.from.x += event.movementX), - y: (d.from.y += event.movementY), + x: (d.from.x += event.movementX * (1 / this.scale)), + y: (d.from.y += event.movementY * (1 / this.scale)), elementId: d.from.elementId } }; @@ -81,8 +83,8 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv return { ...d, to: { - x: (d.to.x += event.movementX), - y: (d.to.y += event.movementY), + x: (d.to.x += event.movementX * (1 / this.scale)), + y: (d.to.y += event.movementY * (1 / this.scale)), elementId: d.to.elementId } }; From 85a308c2db3b4fcfc6cd9a5a8de15fae3ee8ee24 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Thu, 13 Jun 2024 15:53:46 +0530 Subject: [PATCH 38/64] f-dag-app cleanup --- .../src/components/f-dag/f-dag.ts | 24 ++++++++++++++++-- .../src/components/f-dag/link-utils.ts | 25 +++---------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index dc065c3ff..3401f4ef4 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -5,7 +5,7 @@ import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; -import { property, query, queryAll } from "lit/decorators.js"; +import { eventOptions, property, query, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit-html/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; import type { @@ -332,13 +332,19 @@ export class FDag extends FRoot { this.backgroundPattern.setAttribute("width", `${24 * this.scale}`); this.backgroundPattern.setAttribute("height", `${24 * this.scale}`); } + + @eventOptions({ capture: true }) + dragLine(event: MouseEvent) { + this.updateLinePath(event); + } + render() { return html` { this.viewPortRect = this.dagViewPort.getBoundingClientRect(); }); + + this.onmousemove = (event: MouseEvent) => { + if (event.buttons === 1) { + this.viewPortTranslate.x += event.movementX * (1 / this.scale); + this.viewPortTranslate.y += event.movementY * (1 / this.scale); + this.backgroundPattern.setAttribute( + "patternTransform", + `translate(${this.viewPortTranslate.x * this.scale},${ + this.viewPortTranslate.y * this.scale + })` + ); + this.dagViewPort.style.transform = `scale(${this.scale}) translate(${this.viewPortTranslate.x}px,${this.viewPortTranslate.y}px)`; + } + }; } } diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index 0e655f768..479c2b781 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -30,14 +30,6 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { x1! += event.offsetX; } - let x2 = x1; - let y2 = y1; - if (circle.classList.contains("bottom") || circle.classList.contains("top")) { - y2! += 8; - } - if (circle.classList.contains("left") || circle.classList.contains("right")) { - x2! += 8; - } const svg = d3.select(this.svgElement.value!); const direction = @@ -51,8 +43,8 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { elementId: circle.dataset.nodeId! }, to: { - x: x2, - y: y2, + x: x1, + y: y1, elementId: `` }, direction @@ -101,6 +93,7 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { } export function updateLinePath(this: FDag, event: MouseEvent) { if (event.buttons === 1 && this.currentLine) { + event.stopPropagation(); this.currentLine.attr("d", d => { d.to.x! += event.movementX * (1 / this.scale); d.to.y! += event.movementY * (1 / this.scale); @@ -125,18 +118,6 @@ export function updateLinePath(this: FDag, event: MouseEvent) { this.currentLine = undefined; this.currentArrow?.remove(); this.currentArrow = undefined; - - if (event.buttons === 1) { - this.viewPortTranslate.x += event.movementX * (1 / this.scale); - this.viewPortTranslate.y += event.movementY * (1 / this.scale); - this.backgroundPattern.setAttribute( - "patternTransform", - `translate(${this.viewPortTranslate.x * this.scale},${ - this.viewPortTranslate.y * this.scale - })` - ); - this.dagViewPort.style.transform = `scale(${this.scale}) translate(${this.viewPortTranslate.x}px,${this.viewPortTranslate.y}px)`; - } } } export function dropLine(this: FDag, event: MouseEvent) { From a1cecd48070958d762905690b60bf06c93ebeb9f Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 17 Jun 2024 17:39:26 +0530 Subject: [PATCH 39/64] f-dag-app group collapsible feature --- .../src/components/f-dag/f-dag-global.scss | 14 + .../src/components/f-dag/f-dag.ts | 342 ++++++++++++------ .../src/components/f-dag/hierarchy-builder.ts | 6 +- .../src/components/f-dag/link-utils.ts | 2 +- .../src/components/f-dag/types.ts | 23 +- stories/flow-lineage/dag-config.ts | 4 +- 6 files changed, 259 insertions(+), 132 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 716c2c9d4..b254769ba 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -36,9 +36,23 @@ f-dag { overflow: visible; user-select: none; position: absolute; + + &.hidden { + visibility: hidden; + pointer-events: none; + * { + pointer-events: none; + } + .circle { + pointer-events: none !important; + } + } &:active { cursor: grabbing; } + .group-content { + pointer-events: none; + } .circle { border: 1px solid transparent; position: absolute; diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 3401f4ef4..e63e583ee 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -3,10 +3,9 @@ import { flowElement, FRoot } from "@ollion/flow-core"; import { injectCss } from "@ollion/flow-core-config"; import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; -import { ref, createRef, Ref } from "lit/directives/ref.js"; import * as d3 from "d3"; import { eventOptions, property, query, queryAll } from "lit/decorators.js"; -import { ifDefined } from "lit-html/directives/if-defined.js"; +import { ifDefined } from "lit/directives/if-defined.js"; import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; import type { CoOrdinates, @@ -14,7 +13,10 @@ import type { CustomPlacementBySection, FDagConfig, FDagElement, + FDagGroup, + FDagGroupWithSize, FDagLink, + FDagNode, HierarchyNode } from "./types"; import { @@ -25,6 +27,7 @@ import { updateLink } from "./link-utils"; import buildHierarchy from "./hierarchy-builder"; +import { keyed } from "lit/directives/keyed.js"; injectCss("f-dag", globalStyle); @@ -49,6 +52,8 @@ export class FDag extends FRoot { dagViewPort!: HTMLElement; @query(`.background-pattern`) backgroundPattern!: HTMLElement; + @query(`#d-dag-links`) + linksSVG!: SVGSVGElement; viewPortRect!: DOMRect; @@ -68,10 +73,11 @@ export class FDag extends FRoot { return this.config.defaultNodeSize?.height ?? 50; } - svgElement: Ref = createRef(); currentLine?: d3.Selection; currentArrow?: d3.Selection; + collapsedNodeWidth = 200; + collapsedNodeHeight = 100; /** * Node utils */ @@ -90,7 +96,7 @@ export class FDag extends FRoot { updateLink = updateLink; generatePath = generatePath; - getElement(id: string) { + getElement(id: string): FDagNode | FDagGroupWithSize { let elementObj = this.config.nodes.find(n => n.id === id); if (!elementObj) { elementObj = this.config.groups.find(n => n.id === id); @@ -133,11 +139,12 @@ export class FDag extends FRoot { elements: HierarchyNode[], x: number, y: number, + isCollapsed: boolean, spaceX = 100, spaceY = 100 ) => { const elementIds = elements.map(e => e.id); - const conatinerElementObject = this.getElement(containerId) as FDagElement; + const conatinerElementObject = this.getElement(containerId) as FDagGroup; const layoutDirection = (() => { if (containerId === "root") { return this.config.layoutDirection; @@ -182,12 +189,14 @@ export class FDag extends FRoot { let maxHeight = this.defaultElementHeight; section += 1; const nextSection = () => { - if (layoutDirection === "vertical") { - y += maxHeight + spaceY; - x = initialX; - } else { - x += maxWidth + spaceX; - y = initialY; + if (!isCollapsed) { + if (layoutDirection === "vertical") { + y += maxHeight + spaceY; + x = initialX; + } else { + x += maxWidth + spaceX; + y = initialY; + } } }; @@ -227,25 +236,37 @@ export class FDag extends FRoot { elementObject.y = y; if (n.type === "group" && n.children && n.children.length > 0) { + const isCollapseRequired = + isCollapsed || Boolean((elementObject as FDagGroup).collapsed); const { width, height } = positionNodes( n.id, n.children, - x + 20, - y + 60, - elementObject.spacing?.x, - elementObject.spacing?.y + isCollapseRequired ? x : x + 20, + isCollapseRequired ? y : y + 60, + isCollapseRequired, + (elementObject as FDagGroup).spacing?.x, + (elementObject as FDagGroup).spacing?.y ); - + if (isCollapsed) { + elementObject.hidden = true; + } else { + elementObject.hidden = false; + } elementObject.width = width; - elementObject.height = height + 20; + elementObject.height = height + (isCollapseRequired ? 0 : 20); + } else if (isCollapsed) { + elementObject.hidden = true; } else { - if (!elementObject.width) { - elementObject.width = this.defaultElementWidth; - } - if (!elementObject.height) { - elementObject.height = this.defaultElementHeight; - } + elementObject.hidden = false; + } + + if (!elementObject.width) { + elementObject.width = this.defaultElementWidth; } + if (!elementObject.height) { + elementObject.height = this.defaultElementHeight; + } + if (x + elementObject.width > maxX) { maxX = x + elementObject.width; } @@ -253,10 +274,12 @@ export class FDag extends FRoot { maxY = y + elementObject.height; } - if (layoutDirection === "vertical") { - x += elementObject.width + spaceX; - } else { - y += elementObject.height + spaceY; + if (!isCollapsed) { + if (layoutDirection === "vertical") { + x += elementObject.width + spaceX; + } else { + y += elementObject.height + spaceY; + } } if (elementObject.width > maxWidth) { @@ -310,6 +333,12 @@ export class FDag extends FRoot { if (nexts.length > 0) calculateCords(nexts); }; calculateCords(Array.from(roots)); + if (isCollapsed) { + return { + width: this.collapsedNodeWidth, + height: this.collapsedNodeHeight + }; + } return { width: maxX - minX + 40, @@ -317,7 +346,7 @@ export class FDag extends FRoot { }; }; - positionNodes("root", rootNodes, 0, 0, this.config.spacing?.x, this.config.spacing?.y); + positionNodes("root", rootNodes, 0, 0, false, this.config.spacing?.x, this.config.spacing?.y); } handleZoom(event: WheelEvent) { // const chartContainer = event.currentTarget as HTMLElement; @@ -338,6 +367,27 @@ export class FDag extends FRoot { this.updateLinePath(event); } + toggleGroup(g: FDagGroup) { + g.collapsed = !g.collapsed; + this.config.groups.forEach(g => { + g.x = undefined; + g.y = undefined; + (g as FDagGroupWithSize).width = undefined; + (g as FDagGroupWithSize).height = undefined; + }); + this.config.nodes.forEach(n => { + n.x = undefined; + n.y = undefined; + }); + this.config.links.forEach(l => { + l.from.x = undefined; + l.from.y = undefined; + l.to.x = undefined; + l.to.y = undefined; + }); + this.requestUpdate(); + } + render() { return html` ${this.config.nodes.map(n => { - return html` - - ${n.label} - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - `; - })} - ${this.config.groups.map(g => { - return html` - + + ${n.label} + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + ` + ); + })} + ${this.config.groups.map(g => { + // to force re-redner + const gKey = new Date().getTime(); + return keyed( + gKey, + html` - - ${g.label} - - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - `; + + + ${g.label} + e.stopPropagation()} + @click=${() => this.toggleGroup(g)} + > + + + + + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + ` + ); })} - + `; } @@ -444,10 +523,13 @@ export class FDag extends FRoot { return Math.floor(Math.random() * (max - min + 1) + min); } - const svg = d3.select(this.svgElement.value!); + // cloning because d3 is not re-drawing links + const links = structuredClone(this.config.links); + const svg = d3.select(this.linksSVG); + svg.html(``); svg .selectAll("path.dag-line") - .data(this.config.links) + .data(links) .join("path") .attr("class", "dag-line") .attr("id", d => { @@ -464,39 +546,33 @@ export class FDag extends FRoot { const toElement = this.getElement(d.to.elementId); d.to.x = toElement.x; d.to.y = toElement.y; + + const fromWidth = fromElement.hidden ? this.collapsedNodeWidth : fromElement.width; + const fromHeight = fromElement.hidden ? this.collapsedNodeHeight : fromElement.height; + const toWidth = toElement.hidden ? this.collapsedNodeWidth : toElement.width; + const toHeight = toElement.hidden ? this.collapsedNodeHeight : toElement.height; + if (this.config.layoutDirection === "horizontal") { d.direction = "horizontal"; if (d.to.x! > d.from.x!) { - d.from.x! += fromElement.width!; - d.from.y! += randomIntFromInterval( - fromElement.height! / 3, - fromElement.height! * (2 / 3) - ); - d.to.y! += randomIntFromInterval(toElement.height! / 3, toElement.height! * (2 / 3)); + d.from.x! += fromWidth!; + d.from.y! += randomIntFromInterval(fromHeight! / 3, fromHeight! * (2 / 3)); + d.to.y! += randomIntFromInterval(toHeight! / 3, toHeight! * (2 / 3)); } else { - d.from.y! += randomIntFromInterval( - fromElement.height! / 3, - fromElement.height! * (2 / 3) - ); - d.to.x! += fromElement.width!; - d.to.y! += randomIntFromInterval(toElement.height! / 3, toElement.height! * (2 / 3)); + d.from.y! += randomIntFromInterval(fromHeight! / 3, fromHeight! * (2 / 3)); + d.to.x! += fromWidth!; + d.to.y! += randomIntFromInterval(toHeight! / 3, toHeight! * (2 / 3)); } } else { d.direction = "vertical"; if (d.to.y! > d.from.y!) { - d.from.x! += randomIntFromInterval( - fromElement.width! / 3, - fromElement.width! * (2 / 3) - ); - d.from.y! += fromElement.height!; - d.to.x! += randomIntFromInterval(toElement.width! / 3, toElement.width! * (2 / 3)); + d.from.x! += randomIntFromInterval(fromWidth! / 3, fromWidth! * (2 / 3)); + d.from.y! += fromHeight!; + d.to.x! += randomIntFromInterval(toWidth! / 3, toWidth! * (2 / 3)); } else { - d.from.x! += randomIntFromInterval( - fromElement.width! / 3, - fromElement.width! * (2 / 3) - ); - d.to.x! += randomIntFromInterval(toElement.width! / 3, toElement.width! * (2 / 3)); - d.to.y! += toElement.height!; + d.from.x! += randomIntFromInterval(fromWidth! / 3, fromWidth! * (2 / 3)); + d.to.x! += randomIntFromInterval(toWidth! / 3, toWidth! * (2 / 3)); + d.to.y! += toHeight!; } } } @@ -511,11 +587,28 @@ export class FDag extends FRoot { return this.generatePath(points, d.direction)!.toString(); }) - .attr("stroke", "var(--color-border-default)"); + .attr("stroke", d => { + const fromElement = this.getElement(d.from.elementId); + + const toElement = this.getElement(d.to.elementId); + if (fromElement.hidden || toElement.hidden) { + return "var(--color-border-subtle)"; + } + return "var(--color-border-default)"; + }) + .attr("stroke-dasharray", d => { + const fromElement = this.getElement(d.from.elementId); + + const toElement = this.getElement(d.to.elementId); + if (fromElement.hidden || toElement.hidden) { + return "4 4"; + } + return "0"; + }); svg .selectAll("text.link-arrow") - .data(this.config.links) + .data(links) .join("text") .attr("class", "link-arrow") .attr("id", function (d) { @@ -532,7 +625,16 @@ export class FDag extends FRoot { return `#${d.from.elementId}->${d.to.elementId}`; }) .attr("startOffset", "100%") - .attr("fill", "var(--color-border-default)") + .attr("fill", d => { + const fromElement = this.getElement(d.from.elementId); + + const toElement = this.getElement(d.to.elementId); + if (fromElement.hidden || toElement.hidden) { + return "var(--color-border-subtle)"; + } + return "var(--color-border-default)"; + }) + .text("▶"); void this.updateComplete.then(() => { this.viewPortRect = this.dagViewPort.getBoundingClientRect(); diff --git a/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts b/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts index a8ebe0425..efed57647 100644 --- a/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts +++ b/packages/flow-lineage/src/components/f-dag/hierarchy-builder.ts @@ -1,4 +1,4 @@ -import { FDagConfig, FDagElement, HierarchyNode } from "./types"; +import { FDagConfig, FDagElement, FDagGroup, HierarchyNode } from "./types"; export default function buildHierarchy(config: FDagConfig) { const nodesMap = new Map(); @@ -35,15 +35,13 @@ export default function buildHierarchy(config: FDagConfig) { } }); - function addGroupToHierarchy(group: FDagElement, parent?: HierarchyNode): void { + function addGroupToHierarchy(group: FDagGroup, parent?: HierarchyNode): void { if (group.group && group.placement) { group.placement = undefined; } const groupNode: HierarchyNode = { id: group.id, type: "group", - height: group.height, - width: group.width, placement: group.placement, children: [] }; diff --git a/packages/flow-lineage/src/components/f-dag/link-utils.ts b/packages/flow-lineage/src/components/f-dag/link-utils.ts index 479c2b781..b0eaeb800 100644 --- a/packages/flow-lineage/src/components/f-dag/link-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/link-utils.ts @@ -30,7 +30,7 @@ export function startPlottingLine(this: FDag, event: MouseEvent) { x1! += event.offsetX; } - const svg = d3.select(this.svgElement.value!); + const svg = d3.select(this.linksSVG); const direction = circle.classList.contains("right") || circle.classList.contains("left") diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index e0b6c20d3..5d16204d6 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -16,16 +16,29 @@ export type FDagElement = { id: string; label: string; icon: string; + group?: string; + placement?: CustomPlacement; + hidden?: boolean; +} & CoOrdinates; + +export type FDagNode = { height?: number; width?: number; - group?: string; +} & FDagElement; + +export type FDagGroup = { spacing?: { x: number; y: number; }; - placement?: CustomPlacement; layoutDirection?: "horizontal" | "vertical"; -} & CoOrdinates; + collapsed?: boolean; +} & FDagElement; + +export type FDagGroupWithSize = FDagGroup & { + height?: number; + width?: number; +}; export type FDagLinkDirection = "horizontal" | "vertical"; export type FDagLink = { @@ -35,9 +48,9 @@ export type FDagLink = { }; export type FDagConfig = { - nodes: Omit[]; + nodes: FDagNode[]; links: FDagLink[]; - groups: Omit[]; + groups: FDagGroup[]; spacing?: { x: number; y: number; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 2901f2782..ac77557ac 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -230,14 +230,14 @@ const dagConfig: FDagConfig = { y: 20 }, placement: { - elementId: "group4", + elementId: "node8", position: "after" } } ], spacing: { x: 100, - y: 50 + y: 60 }, defaultNodeSize: { width: 200, From 0e5da31862862351fbaf89dcafdda198465a18a5 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 18 Jun 2024 12:33:16 +0530 Subject: [PATCH 40/64] f-dag-app collpase group height updated --- packages/flow-lineage/src/components/f-dag/f-dag.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index e63e583ee..4e4f95e87 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -77,7 +77,7 @@ export class FDag extends FRoot { currentArrow?: d3.Selection; collapsedNodeWidth = 200; - collapsedNodeHeight = 100; + collapsedNodeHeight = 44; /** * Node utils */ @@ -494,8 +494,9 @@ export class FDag extends FRoot { @@ -592,7 +593,7 @@ export class FDag extends FRoot { const toElement = this.getElement(d.to.elementId); if (fromElement.hidden || toElement.hidden) { - return "var(--color-border-subtle)"; + return "var(--color-border-secondary)"; } return "var(--color-border-default)"; }) @@ -630,7 +631,7 @@ export class FDag extends FRoot { const toElement = this.getElement(d.to.elementId); if (fromElement.hidden || toElement.hidden) { - return "var(--color-border-subtle)"; + return "var(--color-border-secondary)"; } return "var(--color-border-default)"; }) From 36a175b4d6bebf8fae760ede6af5870cc41cbd4b Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 18 Jun 2024 18:29:31 +0530 Subject: [PATCH 41/64] f-dag-app open and collapse hroup after re-positioning --- .../src/components/f-dag/f-dag.ts | 379 ++++++++++-------- .../src/components/f-dag/node-utils.ts | 18 +- 2 files changed, 215 insertions(+), 182 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 4e4f95e87..cbb978209 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -27,7 +27,8 @@ import { updateLink } from "./link-utils"; import buildHierarchy from "./hierarchy-builder"; -import { keyed } from "lit/directives/keyed.js"; +import { Keyed, keyed } from "lit/directives/keyed.js"; +import { DirectiveResult } from "lit/directive.js"; injectCss("f-dag", globalStyle); @@ -78,6 +79,9 @@ export class FDag extends FRoot { collapsedNodeWidth = 200; collapsedNodeHeight = 44; + + groupsHTML: DirectiveResult[] = []; + nodesHTML: DirectiveResult[] = []; /** * Node utils */ @@ -131,7 +135,8 @@ export class FDag extends FRoot { protected willUpdate(changedProperties: PropertyValueMap | Map): void { super.willUpdate(changedProperties); - + this.groupsHTML = []; + this.nodesHTML = []; const { roots: rootNodes, customPlacements } = buildHierarchy(this.config); const positionNodes = ( @@ -215,85 +220,98 @@ export class FDag extends FRoot { isSectionPlacement(elementObject) || isElementPlacement(elementObject) ) { - if (elementObject.x === undefined && elementObject.y === undefined) { - const customPlacementsByElements = this.getCustomPlacementElementsByElementId( - elementObject.id, - customPlacements - ); - if (customPlacementsByElements.length > 0) { - currentNodeId = elementObject.id; - } - const beforeCustomElements = customPlacementsByElements.filter( - c => c?.placement?.position === "before" - ); - const afterCustomElements = customPlacementsByElements.filter( - c => c?.placement?.position === "after" - ); - beforeCustomElements.forEach(b => { - if (b) placeElement(b); - }); + const customPlacementsByElements = this.getCustomPlacementElementsByElementId( + elementObject.id, + customPlacements + ); + if (customPlacementsByElements.length > 0) { + currentNodeId = elementObject.id; + } + const beforeCustomElements = customPlacementsByElements.filter( + c => c?.placement?.position === "before" + ); + const afterCustomElements = customPlacementsByElements.filter( + c => c?.placement?.position === "after" + ); + beforeCustomElements.forEach(b => { + if (b) placeElement(b); + }); + + if (elementObject.x === undefined) { elementObject.x = x; + } else { + x = elementObject.x; + } + if (elementObject.y === undefined) { elementObject.y = y; + } else { + y = elementObject.y; + } - if (n.type === "group" && n.children && n.children.length > 0) { - const isCollapseRequired = - isCollapsed || Boolean((elementObject as FDagGroup).collapsed); - const { width, height } = positionNodes( - n.id, - n.children, - isCollapseRequired ? x : x + 20, - isCollapseRequired ? y : y + 60, - isCollapseRequired, - (elementObject as FDagGroup).spacing?.x, - (elementObject as FDagGroup).spacing?.y - ); - if (isCollapsed) { - elementObject.hidden = true; - } else { - elementObject.hidden = false; - } - elementObject.width = width; - elementObject.height = height + (isCollapseRequired ? 0 : 20); - } else if (isCollapsed) { + if (n.type === "group" && n.children && n.children.length > 0) { + const isCollapseRequired = + isCollapsed || Boolean((elementObject as FDagGroup).collapsed); + const { width, height } = positionNodes( + n.id, + n.children, + isCollapseRequired ? x : x + 20, + isCollapseRequired ? y : y + 60, + isCollapseRequired, + (elementObject as FDagGroup).spacing?.x, + (elementObject as FDagGroup).spacing?.y + ); + if (isCollapsed) { elementObject.hidden = true; } else { elementObject.hidden = false; } + elementObject.width = width; + elementObject.height = height + (isCollapseRequired ? 0 : 20); + } else if (isCollapsed) { + elementObject.hidden = true; + } else { + elementObject.hidden = false; + } - if (!elementObject.width) { - elementObject.width = this.defaultElementWidth; - } - if (!elementObject.height) { - elementObject.height = this.defaultElementHeight; - } + if (!elementObject.width) { + elementObject.width = this.defaultElementWidth; + } + if (!elementObject.height) { + elementObject.height = this.defaultElementHeight; + } - if (x + elementObject.width > maxX) { - maxX = x + elementObject.width; - } - if (y + elementObject.height > maxY) { - maxY = y + elementObject.height; - } + if (n.type === "group") { + this.groupsHTML.push(this.getNodeHTML(elementObject, "group")); + } else { + this.nodesHTML.push(this.getNodeHTML(elementObject)); + } - if (!isCollapsed) { - if (layoutDirection === "vertical") { - x += elementObject.width + spaceX; - } else { - y += elementObject.height + spaceY; - } - } + if (x + elementObject.width > maxX) { + maxX = x + elementObject.width; + } + if (y + elementObject.height > maxY) { + maxY = y + elementObject.height; + } - if (elementObject.width > maxWidth) { - maxWidth = elementObject.width; - } - if (elementObject.height > maxHeight) { - maxHeight = elementObject.height; + if (!isCollapsed) { + if (layoutDirection === "vertical") { + x += elementObject.width + spaceX; + } else { + y += elementObject.height + spaceY; } - afterCustomElements.forEach(b => { - if (b) placeElement(b); - }); - currentNodeId = null; - if (n.next) nexts.push(...n.next); } + + if (elementObject.width > maxWidth) { + maxWidth = elementObject.width; + } + if (elementObject.height > maxHeight) { + maxHeight = elementObject.height; + } + afterCustomElements.forEach(b => { + if (b) placeElement(b); + }); + currentNodeId = null; + if (n.next) nexts.push(...n.next); } }; const customPlacementsElements = @@ -367,18 +385,26 @@ export class FDag extends FRoot { this.updateLinePath(event); } + getAllSubElements(g: FDagGroup): FDagGroup[] { + const subGroups = this.config.groups.filter(gr => gr.group === g.id); + const childNodes = this.config.nodes.filter(gr => gr.group === g.id); + const nestedSubGroups = subGroups.map(sg => this.getAllSubElements(sg)); + + return [...subGroups, ...childNodes, ...nestedSubGroups.flat()]; + } + toggleGroup(g: FDagGroup) { g.collapsed = !g.collapsed; - this.config.groups.forEach(g => { - g.x = undefined; - g.y = undefined; - (g as FDagGroupWithSize).width = undefined; - (g as FDagGroupWithSize).height = undefined; - }); - this.config.nodes.forEach(n => { - n.x = undefined; - n.y = undefined; + (g as FDagGroupWithSize).width = undefined; + (g as FDagGroupWithSize).height = undefined; + + const subElements = this.getAllSubElements(g); + + subElements.forEach(e => { + e.x = undefined; + e.y = undefined; }); + this.config.links.forEach(l => { l.from.x = undefined; l.from.y = undefined; @@ -388,6 +414,107 @@ export class FDag extends FRoot { this.requestUpdate(); } + getNodeHTML(element: FDagNode | FDagGroupWithSize, type: "node" | "group" = "node") { + if (type === "node") { + const n = element as FDagNode; + // to force re-redner + const nKey = new Date().getTime(); + const width = n.hidden ? this.collapsedNodeWidth : n.width; + const height = n.hidden ? this.collapsedNodeHeight : n.height; + return keyed( + nKey, + html` + + ${n.label} + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + ` + ); + } else { + const g = element as FDagGroupWithSize; + // to force re-redner + const gKey = new Date().getTime(); + return keyed( + gKey, + html` + + + ${g.label} + e.stopPropagation()} + @click=${() => this.toggleGroup(g)} + > + + + + + ${["left", "right", "top", "bottom"].map(side => { + return html``; + })} + ` + ); + } + } + render() { return html` - ${this.config.nodes.map(n => { - // to force re-redner - const nKey = new Date().getTime(); - const width = n.hidden ? this.collapsedNodeWidth : n.width; - const height = n.hidden ? this.collapsedNodeHeight : n.height; - return keyed( - nKey, - html` - - ${n.label} - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - ` - ); - })} - ${this.config.groups.map(g => { - // to force re-redner - const gKey = new Date().getTime(); - return keyed( - gKey, - html` - - - ${g.label} - e.stopPropagation()} - @click=${() => this.toggleGroup(g)} - > - - - - - ${["left", "right", "top", "bottom"].map(side => { - return html``; - })} - ` - ); - })} + ${this.groupsHTML.reverse()}${this.nodesHTML.reverse()} `; diff --git a/packages/flow-lineage/src/components/f-dag/node-utils.ts b/packages/flow-lineage/src/components/f-dag/node-utils.ts index d3e69231d..385db1df8 100644 --- a/packages/flow-lineage/src/components/f-dag/node-utils.ts +++ b/packages/flow-lineage/src/components/f-dag/node-utils.ts @@ -26,14 +26,16 @@ export function moveElement(this: FDag, nodeElement: HTMLElement, event: MouseEv translateY = translate.translateY; } - nodeElement.style.setProperty( - "transform", - `translate(${translateX + event.movementX * (1 / this.scale)}px, ${ - translateY + event.movementY * (1 / this.scale) - }px)` - ); - nodeElement.dataset.lastTranslateX = `${translateX + event.movementX * (1 / this.scale)}`; - nodeElement.dataset.lastTranslateY = `${translateY + event.movementY * (1 / this.scale)}`; + const newTranslateX = translateX + event.movementX * (1 / this.scale); + const newTranslateY = translateY + event.movementY * (1 / this.scale); + nodeElement.style.setProperty("transform", `translate(${newTranslateX}px, ${newTranslateY}px)`); + + const elementObject = this.getElement(nodeElement.getAttribute("id")!); + elementObject.x = newTranslateX; + elementObject.y = newTranslateY; + + nodeElement.dataset.lastTranslateX = `${newTranslateX}`; + nodeElement.dataset.lastTranslateY = `${newTranslateY}`; const fromLines = d3.selectAll( `.dag-line[id^="${nodeElement.getAttribute("id")}->"]` ); From 0cac38768ede442fa0a65b8b0eb0e5f152c26ec3 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 19 Jun 2024 15:01:41 +0530 Subject: [PATCH 42/64] f-dag-app link direction saved in object --- .../flow-lineage/src/components/f-dag/f-dag.ts | 18 ++++++++++++------ .../flow-lineage/src/components/f-dag/types.ts | 7 ++----- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index cbb978209..bd6cfc40d 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -14,7 +14,6 @@ import type { FDagConfig, FDagElement, FDagGroup, - FDagGroupWithSize, FDagLink, FDagNode, HierarchyNode @@ -100,7 +99,7 @@ export class FDag extends FRoot { updateLink = updateLink; generatePath = generatePath; - getElement(id: string): FDagNode | FDagGroupWithSize { + getElement(id: string): FDagNode | FDagGroup { let elementObj = this.config.nodes.find(n => n.id === id); if (!elementObj) { elementObj = this.config.groups.find(n => n.id === id); @@ -395,8 +394,8 @@ export class FDag extends FRoot { toggleGroup(g: FDagGroup) { g.collapsed = !g.collapsed; - (g as FDagGroupWithSize).width = undefined; - (g as FDagGroupWithSize).height = undefined; + g.width = undefined; + g.height = undefined; const subElements = this.getAllSubElements(g); @@ -414,7 +413,7 @@ export class FDag extends FRoot { this.requestUpdate(); } - getNodeHTML(element: FDagNode | FDagGroupWithSize, type: "node" | "group" = "node") { + getNodeHTML(element: FDagNode | FDagGroup, type: "node" | "group" = "node") { if (type === "node") { const n = element as FDagNode; // to force re-redner @@ -456,7 +455,7 @@ export class FDag extends FRoot { ` ); } else { - const g = element as FDagGroupWithSize; + const g = element as FDagGroup; // to force re-redner const gKey = new Date().getTime(); return keyed( @@ -608,6 +607,13 @@ export class FDag extends FRoot { } } } + if (!d.direction) { + if (this.config.layoutDirection === "horizontal") { + d.direction = "horizontal"; + } else { + d.direction = "vertical"; + } + } points.push({ x: d.from.x, y: d.from.y diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 5d16204d6..2aaff724b 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -27,6 +27,8 @@ export type FDagNode = { } & FDagElement; export type FDagGroup = { + height?: number; + width?: number; spacing?: { x: number; y: number; @@ -35,11 +37,6 @@ export type FDagGroup = { collapsed?: boolean; } & FDagElement; -export type FDagGroupWithSize = FDagGroup & { - height?: number; - width?: number; -}; - export type FDagLinkDirection = "horizontal" | "vertical"; export type FDagLink = { from: CoOrdinates & { elementId: string }; From 855347c3571cc580a9858ef8e29656c93f856f79 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 19 Jun 2024 15:30:31 +0530 Subject: [PATCH 43/64] f-dag-app random connection logic updated --- .../src/components/f-dag/f-dag.ts | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index bd6cfc40d..52856f61c 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -81,6 +81,7 @@ export class FDag extends FRoot { groupsHTML: DirectiveResult[] = []; nodesHTML: DirectiveResult[] = []; + /** * Node utils */ @@ -549,10 +550,23 @@ export class FDag extends FRoot { protected updated(changedProperties: PropertyValueMap | Map): void { super.updated(changedProperties); - function randomIntFromInterval(min: number, max: number) { - // min and max included - return Math.floor(Math.random() * (max - min + 1) + min); - } + const getConnectingPosition = ( + id: string, + side: "left" | "right" | "top" | "bottom", + size: number + ) => { + const element = this.querySelector(`#${id}`)!; + let connectionCount: number = Number(element.dataset[side]); + if (!connectionCount) { + connectionCount = 0; + } + const point = size / 6 + connectionCount * 14; + element.dataset[side] = `${connectionCount + 1}`; + if (point > size) { + return size; + } + return point; + }; // cloning because d3 is not re-drawing links const links = structuredClone(this.config.links); @@ -587,22 +601,22 @@ export class FDag extends FRoot { d.direction = "horizontal"; if (d.to.x! > d.from.x!) { d.from.x! += fromWidth!; - d.from.y! += randomIntFromInterval(fromHeight! / 3, fromHeight! * (2 / 3)); - d.to.y! += randomIntFromInterval(toHeight! / 3, toHeight! * (2 / 3)); + d.from.y! += getConnectingPosition(d.from.elementId, "right", fromHeight!); + d.to.y! += getConnectingPosition(d.to.elementId, "left", toHeight!); } else { - d.from.y! += randomIntFromInterval(fromHeight! / 3, fromHeight! * (2 / 3)); - d.to.x! += fromWidth!; - d.to.y! += randomIntFromInterval(toHeight! / 3, toHeight! * (2 / 3)); + d.from.y! += getConnectingPosition(d.from.elementId, "left", fromHeight!); + d.to.x! += toWidth!; + d.to.y! += getConnectingPosition(d.to.elementId, "right", fromHeight!); } } else { d.direction = "vertical"; if (d.to.y! > d.from.y!) { - d.from.x! += randomIntFromInterval(fromWidth! / 3, fromWidth! * (2 / 3)); + d.from.x! += getConnectingPosition(d.from.elementId, "bottom", fromWidth!); d.from.y! += fromHeight!; - d.to.x! += randomIntFromInterval(toWidth! / 3, toWidth! * (2 / 3)); + d.to.x! += getConnectingPosition(d.to.elementId, "top", toWidth!); } else { - d.from.x! += randomIntFromInterval(fromWidth! / 3, fromWidth! * (2 / 3)); - d.to.x! += randomIntFromInterval(toWidth! / 3, toWidth! * (2 / 3)); + d.from.x! += getConnectingPosition(d.from.elementId, "top", fromWidth!); + d.to.x! += getConnectingPosition(d.to.elementId, "bottom", toWidth!); d.to.y! += toHeight!; } } From bd27bcb353813007a5b42e70364dc81ef3198a97 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Fri, 21 Jun 2024 15:46:03 +0530 Subject: [PATCH 44/64] f-dag-app node template feature --- .storybook/preview.ts | 2 +- package.json | 2 +- .../src/components/f-dag/f-dag.ts | 38 ++++++---- .../src/components/f-dag/types.ts | 4 + pnpm-lock.yaml | 10 +-- stories/flow-lineage/dag-config.ts | 76 ++++++++++--------- stories/flow-lineage/f-dag.stories.ts | 8 +- 7 files changed, 78 insertions(+), 62 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 66a216a1a..37a4ef0a2 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -99,7 +99,7 @@ export const decorators = [ ...AwsIconPack } }); - ConfigUtil.setConfig({ theme: "f-ollion-dark" }); + ConfigUtil.setConfig({ theme: "f-ollion-light" }); return html`
- - ${n.label} + ${(() => { + if (n.template) { + return n.template(n); + } + if (this.config.nodeTemplate) { + return this.config.nodeTemplate(n); + } + return html` + ${n.label}`; + })()} ${["left", "right", "top", "bottom"].map(side => { return html` - - ${g.label} + + ${g.label} diff --git a/packages/flow-lineage/src/components/f-dag/types.ts b/packages/flow-lineage/src/components/f-dag/types.ts index 2aaff724b..db80f3e49 100644 --- a/packages/flow-lineage/src/components/f-dag/types.ts +++ b/packages/flow-lineage/src/components/f-dag/types.ts @@ -1,3 +1,5 @@ +import { HTMLTemplateResult } from "lit"; + export type CoOrdinates = { x?: number; y?: number; @@ -24,6 +26,7 @@ export type FDagElement = { export type FDagNode = { height?: number; width?: number; + template?: (node: FDagNode) => HTMLTemplateResult; } & FDagElement; export type FDagGroup = { @@ -56,6 +59,7 @@ export type FDagConfig = { width: number; height: number; }; + nodeTemplate?: (node: FDagNode) => HTMLTemplateResult; layoutDirection?: "horizontal" | "vertical"; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 446c5d7df..72d9be020 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -36,8 +36,8 @@ importers: specifier: workspace:* version: link:packages/flow-md-editor '@ollion/flow-product-icon': - specifier: 1.14.0 - version: 1.14.0(@ollion/flow-core-config@1.1.3) + specifier: 1.16.0 + version: 1.16.0(@ollion/flow-core-config@1.1.3) '@ollion/flow-system-icon': specifier: latest version: 1.16.1(@ollion/flow-core-config@1.1.3) @@ -2136,8 +2136,8 @@ packages: peerDependencies: '@ollion/flow-core-config': '*' - '@ollion/flow-product-icon@1.14.0': - resolution: {integrity: sha512-qPgwBGKnEIUNTxdNT12rpavenKfjF/SZ9Gee8iOtqVZ1dNrybUnMbSmyekzt2k/DUFubgKvFtga+lRy1cp8XpQ==} + '@ollion/flow-product-icon@1.16.0': + resolution: {integrity: sha512-/scX3x3eA0pL7mqY0IBQgCN1Bwk8U9/pndEGIFvFDOFhKMTJsDeh0Z8cFQqngj3fKh+ezAu9mXfH3y1D4EZKlg==} peerDependencies: '@ollion/flow-core-config': '*' @@ -9524,7 +9524,7 @@ snapshots: dependencies: '@ollion/flow-core-config': 1.1.3 - '@ollion/flow-product-icon@1.14.0(@ollion/flow-core-config@1.1.3)': + '@ollion/flow-product-icon@1.16.0(@ollion/flow-core-config@1.1.3)': dependencies: '@ollion/flow-core-config': 1.1.3 diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index ac77557ac..6a42942cd 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -1,106 +1,107 @@ -import { FDagConfig } from "@ollion/flow-lineage"; +import { FDagConfig, FDagNode } from "@ollion/flow-lineage"; +import { html } from "lit"; + +const nodeTemplate = (node: FDagNode) => { + return html` + ${node.label} + `; +}; const dagConfig: FDagConfig = { nodes: [ { id: "node1", label: "Node 1", - icon: "i-box" + icon: "p-slack" }, { id: "node2", label: "Node 2", - icon: "i-box" + icon: "p-kubernetes" }, { id: "node3", label: "Node 3", - icon: "i-box", + icon: "p-docker", group: "group1" }, { id: "node4", label: "Node 4", - icon: "i-box", + icon: "p-azure", group: "group2" }, { id: "node5", label: "Node 5", - icon: "i-box", - height: 48, - width: 100, + icon: "p-gitlab", + group: "group3" }, { id: "node6", label: "Node 6", - icon: "i-box", - height: 48, - width: 100, + icon: "p-github", + group: "group3" }, { id: "node7", label: "Node 7", - icon: "i-box", - height: 48, - width: 100, + icon: "p-snowflake", + group: "group4" }, { id: "node8", label: "Node 8", - icon: "i-box", - height: 48, - width: 100 + icon: "p-ollion" }, { id: "node9", label: "Node 9", - icon: "i-box", - height: 48, - width: 120, + icon: "p-terraform", + group: "group5" }, { id: "node10", label: "Node 10", - icon: "i-box", - height: 48, - width: 120, + icon: "p-aws-dark", + group: "group5" }, { id: "node11", label: "Node 11", - icon: "i-box", - height: 48, - width: 120, + icon: "p-postgresql", + group: "group6" }, { id: "node91", label: "Node 91", - icon: "i-box", - height: 48, - width: 120, + icon: "p-hadoop", + group: "group7" }, { id: "node101", label: "Node 101", - icon: "i-box", - height: 48, - width: 120, + icon: "p-redis", + group: "group7" }, { id: "node111", label: "Node 111", - icon: "i-box", - height: 48, - width: 120, + icon: "p-mysql", + group: "group7" } ], @@ -217,7 +218,7 @@ const dagConfig: FDagConfig = { }, layoutDirection: "vertical", placement: { - section: 3, + elementId: "group1", position: "after" } }, @@ -240,9 +241,10 @@ const dagConfig: FDagConfig = { y: 60 }, defaultNodeSize: { - width: 200, + width: 48, height: 48 }, + nodeTemplate, layoutDirection: "vertical" }; diff --git a/stories/flow-lineage/f-dag.stories.ts b/stories/flow-lineage/f-dag.stories.ts index edc799143..800ca77f3 100644 --- a/stories/flow-lineage/f-dag.stories.ts +++ b/stories/flow-lineage/f-dag.stories.ts @@ -8,10 +8,8 @@ export default { export const Basic = { render: () => { - return html` - - - `; + return html` + + `; } }; From 725b6a570f5a4447ef4f007a293b5c68d113ebf2 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 24 Jun 2024 18:12:41 +0530 Subject: [PATCH 45/64] f-dag-app select group and delete menu added for node and group --- .../f-timeseries-chart/f-timeseries-chart.ts | 1 + .../src/components/f-dag/f-dag.ts | 61 +++++++++++++++++-- 2 files changed, 56 insertions(+), 6 deletions(-) diff --git a/packages/flow-dashboard/src/components/f-timeseries-chart/f-timeseries-chart.ts b/packages/flow-dashboard/src/components/f-timeseries-chart/f-timeseries-chart.ts index 2e80bd1fe..a4939e802 100644 --- a/packages/flow-dashboard/src/components/f-timeseries-chart/f-timeseries-chart.ts +++ b/packages/flow-dashboard/src/components/f-timeseries-chart/f-timeseries-chart.ts @@ -260,6 +260,7 @@ export class FTimeseriesChart extends FRoot { height="hug-content" max-width="320px" class="f-chart-tooltip hide" + data-theme="f-dark" ${ref(this.chartTooltip)} > diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index d6a7b6791..0c9b6de7c 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -6,7 +6,13 @@ import { html, PropertyValueMap, unsafeCSS } from "lit"; import * as d3 from "d3"; import { eventOptions, property, query, queryAll } from "lit/decorators.js"; import { ifDefined } from "lit/directives/if-defined.js"; -import { dragNestedGroups, dragNode, moveElement, updateNodePosition } from "./node-utils"; +import { + dragNestedGroups, + dragNode, + getTranslateValues, + moveElement, + updateNodePosition +} from "./node-utils"; import type { CoOrdinates, CustomPlacementByElement, @@ -50,6 +56,8 @@ export class FDag extends FRoot { @query(`.dag-view-port`) dagViewPort!: HTMLElement; + @query(`#nodeActions`) + nodeActions!: HTMLElement; @query(`.background-pattern`) backgroundPattern!: HTMLElement; @query(`#d-dag-links`) @@ -76,8 +84,8 @@ export class FDag extends FRoot { currentLine?: d3.Selection; currentArrow?: d3.Selection; - collapsedNodeWidth = 200; - collapsedNodeHeight = 44; + collapsedNodeWidth = 100; + collapsedNodeHeight = 34; groupsHTML: DirectiveResult[] = []; nodesHTML: DirectiveResult[] = []; @@ -414,6 +422,19 @@ export class FDag extends FRoot { this.requestUpdate(); } + handleNodeClick(event: PointerEvent) { + event.stopPropagation(); + const { translateX, translateY } = getTranslateValues(event.currentTarget as HTMLElement); + + this.nodeActions.style.top = `${translateY - 26}px`; + this.nodeActions.style.left = `${translateX}px`; + this.nodeActions.style.display = "flex"; + } + + handleViewPortClick() { + this.nodeActions.style.display = "none"; + } + getNodeHTML(element: FDagNode | FDagGroup, type: "node" | "group" = "node") { if (type === "node") { const n = element as FDagNode; @@ -437,6 +458,7 @@ export class FDag extends FRoot { : "visible"}" @mousemove=${this.dragNode} @mouseup=${this.updateNodePosition} + @click=${this.handleNodeClick} > ${(() => { if (n.template) { @@ -475,6 +497,7 @@ export class FDag extends FRoot { html` + `; } protected updated(changedProperties: PropertyValueMap | Map): void { @@ -572,10 +617,14 @@ export class FDag extends FRoot { if (!connectionCount) { connectionCount = 0; } - const point = size / 6 + connectionCount * 14; + let point = size / 2; + if (connectionCount % 2 !== 0) { + point = size / 2 - connectionCount * 12; + } + element.dataset[side] = `${connectionCount + 1}`; - if (point > size) { - return size; + if (point > size || point < 0) { + return size / 2; } return point; }; From 5fb28f5e48b9c939eb537b07ac03fa587e4d7ab6 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 26 Jun 2024 12:37:44 +0530 Subject: [PATCH 46/64] f-dag-app select and add to group --- .../src/components/f-dag/f-dag-global.scss | 21 +++ .../src/components/f-dag/f-dag.ts | 135 +++++++++++++++--- 2 files changed, 134 insertions(+), 22 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index b254769ba..0b58d3825 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -87,6 +87,19 @@ f-dag { width: 100%; } } + + &.selected { + &::before { + content: ""; + position: absolute; + top: -4px; + bottom: -4px; + left: -4px; + right: -4px; + border: 1px solid var(--color-primary-default); + border-radius: 4px; + } + } } .d-dag-root { cursor: pointer; @@ -97,6 +110,14 @@ f-dag { .dag-view-port { overflow: visible; } + .background-svg { + rect { + pointer-events: none; + } + } + .f-add-group { + z-index: 12; + } } f-div[direction="column"] { diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 0c9b6de7c..9c856c894 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import { flowElement, FRoot } from "@ollion/flow-core"; +import { FButton, flowElement, FPopover, FRoot, FSelect } from "@ollion/flow-core"; import { injectCss } from "@ollion/flow-core-config"; import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; @@ -62,6 +62,10 @@ export class FDag extends FRoot { backgroundPattern!: HTMLElement; @query(`#d-dag-links`) linksSVG!: SVGSVGElement; + @query(`#add-group`) + addGroupButton!: FButton; + @query(`#add-group-popover`) + addGroupPopover!: FPopover; viewPortRect!: DOMRect; @@ -90,6 +94,13 @@ export class FDag extends FRoot { groupsHTML: DirectiveResult[] = []; nodesHTML: DirectiveResult[] = []; + currentClickedNode?: { + element: HTMLElement; + node: FDagNode | FDagGroup; + }; + + selectedNodes: (FDagNode | FDagGroup)[] = []; + /** * Node utils */ @@ -424,13 +435,35 @@ export class FDag extends FRoot { handleNodeClick(event: PointerEvent) { event.stopPropagation(); - const { translateX, translateY } = getTranslateValues(event.currentTarget as HTMLElement); + + const nodeElement = event.currentTarget as HTMLElement; + const { translateX, translateY } = getTranslateValues(nodeElement); + + const nodeObject = this.getElement(nodeElement.getAttribute("id")!); + + this.currentClickedNode = { + node: nodeObject, + element: nodeElement + }; this.nodeActions.style.top = `${translateY - 26}px`; this.nodeActions.style.left = `${translateX}px`; this.nodeActions.style.display = "flex"; } + selectNode(event: PointerEvent) { + event.stopPropagation(); + + if (this.currentClickedNode) { + const nodeElement = this.currentClickedNode.element; + nodeElement.classList.add("selected"); + this.nodeActions.style.display = "none"; + + this.selectedNodes.push(this.currentClickedNode.node); + this.addGroupButton.style.display = "flex"; + } + } + handleViewPortClick() { this.nodeActions.style.display = "none"; } @@ -550,6 +583,39 @@ export class FDag extends FRoot { } } + handleAddGroup() { + this.addGroupPopover.open = true; + } + + addToGroup() { + const groupDropdown = this.querySelector(`#f-group-dropdown`)!; + const groupid = groupDropdown.value as string; + this.selectedNodes.forEach(sn => { + sn.group = groupid; + }); + + this.addGroupPopover.open = false; + + this.config.nodes.forEach(n => { + n.x = undefined; + n.y = undefined; + }); + this.config.groups.forEach(n => { + n.x = undefined; + n.y = undefined; + }); + + this.config.links.forEach(l => { + l.from.x = undefined; + l.from.y = undefined; + l.to.x = undefined; + l.to.y = undefined; + }); + + this.selectedNodes = []; + this.addGroupButton.style.display = "none"; + this.requestUpdate(); + } render() { return html` + + + e.stopPropagation()} padding="medium" gap="medium"> + g.id)} + > + + + ${this.groupsHTML.reverse()}${this.nodesHTML.reverse()} - - `; From 7a622600eefabe1314744d6c151188691e3ec75a Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Wed, 26 Jun 2024 16:48:09 +0530 Subject: [PATCH 47/64] f-dag-app add selected elements to new group --- .storybook/preview.ts | 2 +- .../src/components/f-dag/f-dag.ts | 113 +++++++++++++++--- stories/flow-lineage/dag-config.ts | 18 +-- 3 files changed, 106 insertions(+), 27 deletions(-) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 37a4ef0a2..66a216a1a 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -99,7 +99,7 @@ export const decorators = [ ...AwsIconPack } }); - ConfigUtil.setConfig({ theme: "f-ollion-light" }); + ConfigUtil.setConfig({ theme: "f-ollion-dark" }); return html`
("#new-group-id")!; + const groupLabelInput = this.querySelector("#new-group-label")!; + + this.config.groups.push({ + id: groupIdInput.value as string, + label: groupLabelInput.value as string, + icon: "i-org" + }); + + this.addSelectionToGroup(groupIdInput.value as string); + } - addToGroup() { - const groupDropdown = this.querySelector(`#f-group-dropdown`)!; - const groupid = groupDropdown.value as string; + addSelectionToGroup(groupid: string) { this.selectedNodes.forEach(sn => { sn.group = groupid; }); @@ -616,6 +645,22 @@ export class FDag extends FRoot { this.addGroupButton.style.display = "none"; this.requestUpdate(); } + + addToGroup() { + const groupDropdown = this.querySelector(`#f-group-dropdown`)!; + const groupid = groupDropdown.value as string; + + this.addSelectionToGroup(groupid); + } + + switchTab(event: PointerEvent) { + const tabNodeElement = event.currentTarget as FTabNode; + + this.groupSelectionTabs.forEach(tab => { + tab.active = false; + }); + tabNodeElement.active = true; + } render() { return html` + + + Ungroup + + + + Date: Thu, 27 Jun 2024 18:28:11 +0530 Subject: [PATCH 51/64] f-dag-app node actions added on context click --- packages/flow-lineage/src/components/f-dag/f-dag.ts | 1 + .../src/components/f-dag/get-node-group-template.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index c392899ba..1c87d4077 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -302,6 +302,7 @@ export class FDag extends FRoot { } handleNodeClick(event: PointerEvent) { + event.preventDefault(); event.stopPropagation(); const nodeElement = event.currentTarget as HTMLElement; diff --git a/packages/flow-lineage/src/components/f-dag/get-node-group-template.ts b/packages/flow-lineage/src/components/f-dag/get-node-group-template.ts index 624d63513..990a39dfc 100644 --- a/packages/flow-lineage/src/components/f-dag/get-node-group-template.ts +++ b/packages/flow-lineage/src/components/f-dag/get-node-group-template.ts @@ -31,7 +31,7 @@ export default function getNodeGroupTemplate( : "visible"}" @mousemove=${this.dragNode} @mouseup=${this.updateNodePosition} - @click=${this.handleNodeClick} + @contextmenu=${this.handleNodeClick} > ${(() => { if (n.template) { @@ -70,7 +70,7 @@ export default function getNodeGroupTemplate( html` Date: Mon, 1 Jul 2024 14:54:05 +0530 Subject: [PATCH 52/64] f-dag-app node dropping in group feedback added --- .../components/f-dag/drag-nodes-and-groups.ts | 11 ++++++++++- .../src/components/f-dag/f-dag-global.scss | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts b/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts index 385db1df8..15215e550 100644 --- a/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts +++ b/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts @@ -123,6 +123,7 @@ export function dragNode(this: FDag, event: MouseEvent) { if (event.buttons === 1 && this.currentLine === undefined) { const nodeElement = event.currentTarget as HTMLElement; nodeElement.style.zIndex = `3`; + nodeElement.classList.add("dragging"); if (nodeElement) { this.moveElement(nodeElement, event); this.dragNestedGroups(nodeElement, event); @@ -143,9 +144,10 @@ export function updateNodePosition(this: FDag, event: MouseEvent) { } else { nodeElement.style.zIndex = `2`; } - + nodeElement.classList.remove("dragging"); const allGroupsAndNodes = this.querySelectorAll(`[data-node-type="group"]`); let insideGroup = false; + let placedIn: HTMLElement | undefined; for (let index = 0; index < allGroupsAndNodes.length; index++) { const group = allGroupsAndNodes.item(index); const { top, height, left, width } = group.getBoundingClientRect(); @@ -157,11 +159,18 @@ export function updateNodePosition(this: FDag, event: MouseEvent) { ) { insideGroup = true; nodeElement.dataset.group = group.getAttribute("id")!; + placedIn = group; } } if (!insideGroup) { delete nodeElement.dataset.group; + } else if (placedIn) { + placedIn.classList.add("dropped"); + + setTimeout(() => { + placedIn.classList.remove("dropped"); + }, 1000); } let elementConfig; diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 0b58d3825..597de9a01 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -36,6 +36,8 @@ f-dag { overflow: visible; user-select: none; position: absolute; + box-shadow: 0; + transition: box-shadow 1s; &.hidden { visibility: hidden; @@ -100,6 +102,22 @@ f-dag { border-radius: 4px; } } + + &.dragging { + &::before { + content: ""; + position: absolute; + top: -4px; + bottom: -4px; + left: -4px; + right: -4px; + border: 1px solid var(--color-primary-default); + border-radius: 4px; + } + } + &.dropped { + box-shadow: 0 0 15px var(--color-primary-default); + } } .d-dag-root { cursor: pointer; From 350dc13f2c66c03357ef0649dadd83260298eb79 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 1 Jul 2024 15:04:06 +0530 Subject: [PATCH 53/64] f-dag-app add new group in same group if all elements are from same group --- packages/flow-lineage/src/components/f-dag/add-group.ts | 5 ++++- .../src/components/f-dag/drag-nodes-and-groups.ts | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/add-group.ts b/packages/flow-lineage/src/components/f-dag/add-group.ts index 91b24d974..80e87c10a 100644 --- a/packages/flow-lineage/src/components/f-dag/add-group.ts +++ b/packages/flow-lineage/src/components/f-dag/add-group.ts @@ -83,11 +83,14 @@ export function addSelectionToGroup(this: FDag, groupid: string) { export function addToNewGroup(this: FDag) { const groupIdInput = this.querySelector("#new-group-id")!; const groupLabelInput = this.querySelector("#new-group-label")!; + const parentGroupIfAny = this.selectedNodes[0].group; + const isAllFromSameGroup = this.selectedNodes.every(sn => sn.group === parentGroupIfAny); this.config.groups.push({ id: groupIdInput.value as string, label: groupLabelInput.value as string, - icon: "i-org" + icon: "i-org", + group: isAllFromSameGroup && parentGroupIfAny ? parentGroupIfAny : undefined }); this.addSelectionToGroup(groupIdInput.value as string); diff --git a/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts b/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts index 15215e550..f1145c319 100644 --- a/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts +++ b/packages/flow-lineage/src/components/f-dag/drag-nodes-and-groups.ts @@ -158,8 +158,8 @@ export function updateNodePosition(this: FDag, event: MouseEvent) { nodeLeft + nodeWidth < left + width ) { insideGroup = true; + if (nodeElement.dataset.group !== group.getAttribute("id")) placedIn = group; nodeElement.dataset.group = group.getAttribute("id")!; - placedIn = group; } } From 0834cad643e78e9c7871b0526e17e02ef5c31af9 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Mon, 1 Jul 2024 18:10:59 +0530 Subject: [PATCH 54/64] f-dag-app link to feature added --- .../src/components/f-dag/f-dag.ts | 10 +++- .../src/components/f-dag/link-to.ts | 60 +++++++++++++++++++ .../components/f-dag/node-group-actions.ts | 11 ++++ 3 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 packages/flow-lineage/src/components/f-dag/link-to.ts diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 1c87d4077..8bbdecb8b 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -44,6 +44,7 @@ import getNodeGroupTemplate from "./get-node-group-template"; import drawLinks from "./draw-links"; import backgroundSVG from "./background-svg"; import getNodeGroupActions from "./node-group-actions"; +import { linkTo } from "./link-to"; injectCss("f-dag", globalStyle); @@ -153,6 +154,7 @@ export class FDag extends FRoot { updateLink = updateLink; generatePath = generatePath; drawLinks = drawLinks; + linkTo = linkTo; getElement(id: string): FDagNode | FDagGroup { return [...this.config.nodes, ...this.config.groups].find(n => n.id === id)!; @@ -343,6 +345,12 @@ export class FDag extends FRoot { this.nodeActions.style.display = "none"; } + openLinkTo() { + const linkToPopOver = this.querySelector(`#link-to-popover`)!; + linkToPopOver.target = this.currentClickedNode!.element; + linkToPopOver.open = true; + } + render() { return html` - + @@ -70,63 +128,3 @@ export function addGroupPopover(this: FDag) { export function handleAddGroup(this: FDag) { this.addGroupPopoverRef.open = true; } - -export function addSelectionToGroup(this: FDag, groupid: string) { - this.selectedNodes.forEach(sn => { - sn.group = groupid; - }); - - this.addGroupPopoverRef.open = false; - - this.config.nodes.forEach(n => { - n.x = undefined; - n.y = undefined; - }); - this.config.groups.forEach(n => { - n.x = undefined; - n.y = undefined; - }); - - this.config.links.forEach(l => { - l.from.x = undefined; - l.from.y = undefined; - l.to.x = undefined; - l.to.y = undefined; - }); - - this.selectedNodes = []; - this.addGroupButton.style.display = "none"; - this.requestUpdate(); -} - -export function addToNewGroup(this: FDag) { - const groupIdInput = this.querySelector("#new-group-id")!; - const groupLabelInput = this.querySelector("#new-group-label")!; - const parentGroupIfAny = this.selectedNodes[0].group; - - const isAllFromSameGroup = this.selectedNodes.every(sn => sn.group === parentGroupIfAny); - this.config.groups.push({ - id: groupIdInput.value as string, - label: groupLabelInput.value as string, - icon: "i-org", - group: isAllFromSameGroup && parentGroupIfAny ? parentGroupIfAny : undefined - }); - - this.addSelectionToGroup(groupIdInput.value as string); -} - -export function addToGroup(this: FDag) { - const groupDropdown = this.querySelector(`#f-group-dropdown`)!; - const groupid = groupDropdown.value as string; - - this.addSelectionToGroup(groupid); -} - -export function switchTab(this: FDag, event: PointerEvent) { - const tabNodeElement = event.currentTarget as FTabNode; - - this.groupSelectionTabs.forEach(tab => { - tab.active = false; - }); - tabNodeElement.active = true; -} diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 8bbdecb8b..3e92cc1b9 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import { FButton, flowElement, FPopover, FRoot, FTabNode } from "@ollion/flow-core"; +import { FButton, flowElement, FPopover, FRoot } from "@ollion/flow-core"; import { injectCss } from "@ollion/flow-core-config"; import globalStyle from "./f-dag-global.scss?inline"; import { html, PropertyValueMap, unsafeCSS } from "lit"; @@ -32,14 +32,7 @@ import { import { Keyed } from "lit/directives/keyed.js"; import { DirectiveResult } from "lit/directive.js"; import computePlacement from "./compute-placement"; -import { - addGroupPopover, - addSelectionToGroup, - addToGroup, - addToNewGroup, - handleAddGroup, - switchTab -} from "./add-group"; +import { addGroupPopover, handleAddGroup } from "./add-group"; import getNodeGroupTemplate from "./get-node-group-template"; import drawLinks from "./draw-links"; import backgroundSVG from "./background-svg"; @@ -71,9 +64,6 @@ export class FDag extends FRoot { @queryAll(`.dag-node[data-node-type="node"]`) allNodes?: HTMLElement[]; - @queryAll(`.gr-selection-tabs`) - groupSelectionTabs!: FTabNode[]; - /** * Holds reference of view port and required elements */ @@ -138,10 +128,7 @@ export class FDag extends FRoot { */ addGroupPopover = addGroupPopover; handleAddGroup = handleAddGroup; - addToNewGroup = addToNewGroup; - addSelectionToGroup = addSelectionToGroup; - addToGroup = addToGroup; - switchTab = switchTab; + getNodeGroupTemplate = getNodeGroupTemplate; /** From 0a8a5f514031afb30ba6d203e0f8f59893d223fb Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 2 Jul 2024 11:58:55 +0530 Subject: [PATCH 57/64] f-dag-app foreach replaced by for --- .../src/components/f-dag/compute-placement.ts | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/compute-placement.ts b/packages/flow-lineage/src/components/f-dag/compute-placement.ts index b49f4be9c..f1441e5ec 100644 --- a/packages/flow-lineage/src/components/f-dag/compute-placement.ts +++ b/packages/flow-lineage/src/components/f-dag/compute-placement.ts @@ -38,7 +38,7 @@ export default function computePlacement(this: FDag) { ); const roots = new Set(elements); const nonroots = new Set(); - nodeLinks.forEach(link => { + for (const link of nodeLinks) { const fromElement = elements.find(e => e.id === link.from.elementId)!; if (!nonroots.has(fromElement)) { roots.add(fromElement); @@ -53,7 +53,7 @@ export default function computePlacement(this: FDag) { } nonroots.add(toElement); fromElement.next.push(toElement); - }); + } const initialY = y; const initialX = x; @@ -107,9 +107,9 @@ export default function computePlacement(this: FDag) { const afterCustomElements = customPlacementsByElements.filter( c => c?.placement?.position === "after" ); - beforeCustomElements.forEach(b => { + for (const b of beforeCustomElements) { if (b) placeElement(b); - }); + } if (elementObject.x === undefined) { elementObject.x = x; @@ -181,9 +181,10 @@ export default function computePlacement(this: FDag) { if (elementObject.height > maxHeight) { maxHeight = elementObject.height; } - afterCustomElements.forEach(b => { + + for (const b of afterCustomElements) { if (b) placeElement(b); - }); + } currentNodeId = null; if (n.next) nexts.push(...n.next); } @@ -199,9 +200,9 @@ export default function computePlacement(this: FDag) { containerId === "root" ? customPlacementsElements.filter(c => c?.placement?.position === "after") : []; - beforeElements.forEach(b => { + for (const b of beforeElements) { if (b) placeElement(b); - }); + } if (beforeElements.length > 0) { nextSection(); @@ -217,9 +218,9 @@ export default function computePlacement(this: FDag) { maxHeight = this.defaultElementHeight; maxWidth = this.defaultElementWidth; } - afterElements.forEach(b => { + for (const b of afterElements) { if (b) placeElement(b); - }); + } nextSection(); if (nexts.length > 0) calculateCords(nexts); From 4fdac488179faa44e969465670b5fdc5b34b5c08 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 2 Jul 2024 12:08:36 +0530 Subject: [PATCH 58/64] f-dag-app more nodes added --- stories/flow-lineage/dag-config.ts | 68 +++++++++++++++++++++++++----- 1 file changed, 57 insertions(+), 11 deletions(-) diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index 20224fe36..cfc5b277c 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -103,6 +103,21 @@ const dagConfig: FDagConfig = { icon: "p-mysql", group: "group7" + }, + { + id: "node71", + label: "Node 71", + icon: "p-asana" + }, + { + id: "node72", + label: "Node 72", + icon: "p-prometheus" + }, + { + id: "node73", + label: "Node 73", + icon: "p-opa" } ], links: [ @@ -153,6 +168,38 @@ const dagConfig: FDagConfig = { to: { elementId: "node8" } + }, + { + from: { + elementId: "node7" + }, + to: { + elementId: "node10" + } + }, + { + from: { + elementId: "node9" + }, + to: { + elementId: "group6" + } + }, + { + from: { + elementId: "node6" + }, + to: { + elementId: "node91" + } + }, + { + from: { + elementId: "node11" + }, + to: { + elementId: "group7" + } } ], groups: [ @@ -192,8 +239,7 @@ const dagConfig: FDagConfig = { x: 20, y: 20 }, - group: "group1", - layoutDirection: "vertical" + group: "group1" }, { id: "group5", @@ -216,11 +262,11 @@ const dagConfig: FDagConfig = { x: 20, y: 20 }, - layoutDirection: "vertical" - // placement: { - // elementId: "group1", - // position: "after" - // } + layoutDirection: "vertical", + placement: { + elementId: "group1", + position: "after" + } }, { id: "group6", @@ -229,11 +275,11 @@ const dagConfig: FDagConfig = { spacing: { x: 20, y: 20 + }, + placement: { + elementId: "node8", + position: "after" } - // placement: { - // elementId: "node8", - // position: "after" - // } } ], spacing: { From 5d98d2a58c0386cf54881d7b40646ae15c019c8f Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 2 Jul 2024 15:46:45 +0530 Subject: [PATCH 59/64] f-dag-app bulk link to feature --- .../src/components/f-dag/f-dag-global.scss | 3 +- .../src/components/f-dag/f-dag.ts | 17 ++++++++ .../src/components/f-dag/link-to.ts | 39 +++++++++++++------ stories/flow-lineage/dag-config.ts | 2 +- 4 files changed, 48 insertions(+), 13 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss index 597de9a01..d10dd4b12 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag-global.scss +++ b/packages/flow-lineage/src/components/f-dag/f-dag-global.scss @@ -133,7 +133,8 @@ f-dag { pointer-events: none; } } - .f-add-group { + .f-add-group, + .f-link-to { z-index: 12; } } diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index 3e92cc1b9..cfcd3824a 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -77,6 +77,8 @@ export class FDag extends FRoot { linksSVG!: SVGSVGElement; @query(`#add-group`) addGroupButton!: FButton; + @query(`#link-to`) + linkToButton!: FButton; @query(`#add-group-popover`) addGroupPopoverRef!: FPopover; @@ -325,6 +327,7 @@ export class FDag extends FRoot { this.selectedNodes.push(this.currentClickedNode.node); this.addGroupButton.style.display = "flex"; + this.linkToButton.style.display = "flex"; } } @@ -337,6 +340,11 @@ export class FDag extends FRoot { linkToPopOver.target = this.currentClickedNode!.element; linkToPopOver.open = true; } + openBulkLinkTo() { + const linkToPopOver = this.querySelector(`#link-to-popover`)!; + linkToPopOver.target = this.linkToButton; + linkToPopOver.open = true; + } render() { return html` + { - const currentNode = this.currentClickedNode!.node; + if (this.selectedNodes.length > 0) { + for (const currentNode of this.selectedNodes) { + const { groups, nodes } = values; + [...(groups ?? []), ...(nodes ?? [])].forEach(linkTo => { + this.config.links.push({ + from: { + elementId: currentNode.id + }, + to: { + elementId: linkTo + } + }); + }); + } + this.selectedNodes = []; + } else { + const currentNode = this.currentClickedNode!.node; - const { groups, nodes } = values; - [...(groups ?? []), ...(nodes ?? [])].forEach(linkTo => { - this.config.links.push({ - from: { - elementId: currentNode.id - }, - to: { - elementId: linkTo - } + const { groups, nodes } = values; + [...(groups ?? []), ...(nodes ?? [])].forEach(linkTo => { + this.config.links.push({ + from: { + elementId: currentNode.id + }, + to: { + elementId: linkTo + } + }); }); - }); + } const linkToPopOver = this.querySelector(`#link-to-popover`)!; linkToPopOver.open = false; diff --git a/stories/flow-lineage/dag-config.ts b/stories/flow-lineage/dag-config.ts index cfc5b277c..907acb271 100644 --- a/stories/flow-lineage/dag-config.ts +++ b/stories/flow-lineage/dag-config.ts @@ -283,7 +283,7 @@ const dagConfig: FDagConfig = { } ], spacing: { - x: 100, + x: 70, y: 60 }, defaultNodeSize: { From 7f5eb3b5b516a38e6b575a9d48642bc537b24ee5 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 2 Jul 2024 15:50:03 +0530 Subject: [PATCH 60/64] f-dag-app hide link to button after bulk linking --- packages/flow-lineage/src/components/f-dag/link-to.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/flow-lineage/src/components/f-dag/link-to.ts b/packages/flow-lineage/src/components/f-dag/link-to.ts index c5e1ab64f..7e5f2adab 100644 --- a/packages/flow-lineage/src/components/f-dag/link-to.ts +++ b/packages/flow-lineage/src/components/f-dag/link-to.ts @@ -46,6 +46,8 @@ export function linkTo(this: FDag) { }); } this.selectedNodes = []; + this.linkToButton.style.display = "none"; + this.addGroupButton.style.display = "none"; } else { const currentNode = this.currentClickedNode!.node; From b3bd65f4148a73e24489d85b1c6534d8e07534b3 Mon Sep 17 00:00:00 2001 From: Vikas Awaghade Date: Tue, 2 Jul 2024 16:34:10 +0530 Subject: [PATCH 61/64] f-dag-app Unlink feature --- .../src/components/f-dag/f-dag.ts | 41 ----------- .../components/f-dag/node-group-actions.ts | 68 ++++++++++++++++++- 2 files changed, 65 insertions(+), 44 deletions(-) diff --git a/packages/flow-lineage/src/components/f-dag/f-dag.ts b/packages/flow-lineage/src/components/f-dag/f-dag.ts index cfcd3824a..61a78f743 100644 --- a/packages/flow-lineage/src/components/f-dag/f-dag.ts +++ b/packages/flow-lineage/src/components/f-dag/f-dag.ts @@ -206,28 +206,6 @@ export class FDag extends FRoot { ); } - unGroup() { - const id = this.currentClickedNode!.node.id; - this.config.groups - .filter(g => g.group === id) - .forEach(g => { - g.group = undefined; - }); - this.config.nodes - .filter(n => n.group === id) - .forEach(n => { - n.group = undefined; - }); - const groupIndex = this.config.groups.findIndex(e => e.id === id); - if (groupIndex > -1) { - this.config.groups.splice(groupIndex, 1); - } - - this.config.links = this.config.links.filter( - l => !(l.from.elementId === id || l.to.elementId === id) - ); - this.requestUpdate(); - } deleteElement() { const nodeType = this.currentClickedNode?.element.dataset.nodeType; if (nodeType === "node") { @@ -317,29 +295,10 @@ export class FDag extends FRoot { } } - selectNode(event: PointerEvent) { - event.stopPropagation(); - - if (this.currentClickedNode) { - const nodeElement = this.currentClickedNode.element; - nodeElement.classList.add("selected"); - this.nodeActions.style.display = "none"; - - this.selectedNodes.push(this.currentClickedNode.node); - this.addGroupButton.style.display = "flex"; - this.linkToButton.style.display = "flex"; - } - } - handleViewPortClick() { this.nodeActions.style.display = "none"; } - openLinkTo() { - const linkToPopOver = this.querySelector(`#link-to-popover`)!; - linkToPopOver.target = this.currentClickedNode!.element; - linkToPopOver.open = true; - } openBulkLinkTo() { const linkToPopOver = this.querySelector(`#link-to-popover`)!; linkToPopOver.target = this.linkToButton; diff --git a/packages/flow-lineage/src/components/f-dag/node-group-actions.ts b/packages/flow-lineage/src/components/f-dag/node-group-actions.ts index 7dedbaace..b4a4e2957 100644 --- a/packages/flow-lineage/src/components/f-dag/node-group-actions.ts +++ b/packages/flow-lineage/src/components/f-dag/node-group-actions.ts @@ -1,7 +1,58 @@ import { html } from "lit"; import type { FDag } from "./f-dag"; +import type { FPopover } from "@ollion/flow-core"; export default function getNodeGroupActions(this: FDag) { + const selectNode = (event: PointerEvent) => { + event.stopPropagation(); + + if (this.currentClickedNode) { + const nodeElement = this.currentClickedNode.element; + nodeElement.classList.add("selected"); + this.nodeActions.style.display = "none"; + + this.selectedNodes.push(this.currentClickedNode.node); + this.addGroupButton.style.display = "flex"; + this.linkToButton.style.display = "flex"; + } + }; + + const unGroup = () => { + const id = this.currentClickedNode!.node.id; + this.config.groups + .filter(g => g.group === id) + .forEach(g => { + g.group = undefined; + }); + this.config.nodes + .filter(n => n.group === id) + .forEach(n => { + n.group = undefined; + }); + const groupIndex = this.config.groups.findIndex(e => e.id === id); + if (groupIndex > -1) { + this.config.groups.splice(groupIndex, 1); + } + + this.config.links = this.config.links.filter( + l => !(l.from.elementId === id || l.to.elementId === id) + ); + this.requestUpdate(); + }; + + const openLinkTo = () => { + const linkToPopOver = this.querySelector(`#link-to-popover`)!; + linkToPopOver.target = this.currentClickedNode!.element; + linkToPopOver.open = true; + }; + + const unlink = () => { + const nodeId = this.currentClickedNode!.node.id; + this.config.links = this.config.links.filter( + l => l.from.elementId !== nodeId && l.to.elementId !== nodeId + ); + this.requestUpdate(); + }; return html`