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:
commit
9fc6df14eb
3 changed files with 32 additions and 2 deletions
|
|
@ -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" &&
|
||||
|
|
|
|||
|
|
@ -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: () => {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue