mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
ref: use data structure for copy and paste data
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
import { useCallback } from "react";
|
||||
import { Node, Edge, useReactFlow, useViewport } from "@xyflow/react";
|
||||
|
||||
interface CopyableData {
|
||||
nodes: Node[];
|
||||
edges: Edge[];
|
||||
}
|
||||
|
||||
export function useCopyPaste(getNextNodeId: () => string) {
|
||||
const { setNodes, addEdges, getNodes, getEdges } = useReactFlow();
|
||||
const { x, y, zoom } = useViewport();
|
||||
@@ -12,7 +17,7 @@ export function useCopyPaste(getNextNodeId: () => string) {
|
||||
const selectedNodes = getNodes().filter((node) => node.selected);
|
||||
const selectedEdges = getEdges().filter((edge) => edge.selected);
|
||||
|
||||
const copiedData = {
|
||||
const copiedData: CopyableData = {
|
||||
nodes: selectedNodes.map((node) => ({
|
||||
...node,
|
||||
data: {
|
||||
@@ -28,7 +33,7 @@ export function useCopyPaste(getNextNodeId: () => string) {
|
||||
if (event.key === "v" || event.key === "V") {
|
||||
const copiedDataString = localStorage.getItem("copiedFlowData");
|
||||
if (copiedDataString) {
|
||||
const copiedData = JSON.parse(copiedDataString);
|
||||
const copiedData = JSON.parse(copiedDataString) as CopyableData;
|
||||
const oldToNewIdMap: Record<string, string> = {};
|
||||
|
||||
const viewportCenter = {
|
||||
@@ -68,7 +73,7 @@ export function useCopyPaste(getNextNodeId: () => string) {
|
||||
};
|
||||
});
|
||||
|
||||
const pastedEdges = copiedData.edges.map((edge: Edge) => {
|
||||
const pastedEdges = copiedData.edges.map((edge) => {
|
||||
const newSourceId = oldToNewIdMap[edge.source] ?? edge.source;
|
||||
const newTargetId = oldToNewIdMap[edge.target] ?? edge.target;
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user