add controlX feature

This commit is contained in:
cristhianzl 2024-02-16 12:05:42 -03:00
commit df1e6a4600
4 changed files with 32 additions and 4 deletions

View file

@ -107,6 +107,13 @@ export default function Page({
) {
event.preventDefault();
setLastCopiedSelection(_.cloneDeep(lastSelection));
} else if (
(event.ctrlKey || event.metaKey) &&
event.key === "x" &&
lastSelection
) {
event.preventDefault();
setLastCopiedSelection(_.cloneDeep(lastSelection), true);
} else if (
(event.ctrlKey || event.metaKey) &&
event.key === "v" &&

View file

@ -247,7 +247,29 @@ const useFlowStore = create<FlowStoreType>((set, get) => ({
});
get().setEdges(newEdges);
},
setLastCopiedSelection: (newSelection) => {
setLastCopiedSelection: (newSelection, isCrop = false) => {
if (isCrop) {
const nodesIdsSelected = newSelection!.nodes.map((node) => node.id);
const edgesIdsSelected = newSelection!.edges.map((edge) => edge.id);
nodesIdsSelected.forEach((id) => {
get().deleteNode(id);
});
edgesIdsSelected.forEach((id) => {
get().deleteEdge(id);
});
const newNodes = get().nodes.filter(
(node) => !nodesIdsSelected.includes(node.id)
);
const newEdges = get().edges.filter(
(edge) => !edgesIdsSelected.includes(edge.id)
);
set({ nodes: newNodes, edges: newEdges });
}
set({ lastCopiedSelection: newSelection });
},
cleanFlow: () => {

View file

@ -46,7 +46,8 @@ export type FlowStoreType = {
) => void;
lastCopiedSelection: { nodes: any; edges: any } | null;
setLastCopiedSelection: (
newSelection: { nodes: any; edges: any } | null
newSelection: { nodes: any; edges: any } | null,
isCrop?: boolean
) => void;
isBuilt: boolean;
setIsBuilt: (isBuilt: boolean) => void;

View file

@ -141,8 +141,6 @@ export function groupByFamily(
})))
);
};
console.log(flow);
if (flow) {
// se existir o flow
for (const node of flow) {