Add controlX Feature on Flow (#1438)

This pull request introduces the "Control X" command to our
application's flow, aiming to enhance user control and improve the
overall user experience. The "Control X" command allows users to execute
a crop shortcut.
This commit is contained in:
anovazzi1 2024-02-19 13:23:15 -03:00 committed by GitHub
commit 9fc6df14eb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 32 additions and 2 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;