MCPcopy
hub / github.com/xyflow/xyflow / useGlobalKeyHandler

Function useGlobalKeyHandler

packages/react/src/hooks/useGlobalKeyHandler.ts:18–42  ·  view source on GitHub ↗
({
  deleteKeyCode,
  multiSelectionKeyCode,
}: {
  deleteKeyCode: KeyCode | null;
  multiSelectionKeyCode: KeyCode | null;
})

Source from the content-addressed store, hash-verified

16 * @internal
17 */
18export function useGlobalKeyHandler({
19 deleteKeyCode,
20 multiSelectionKeyCode,
21}: {
22 deleteKeyCode: KeyCode | null;
23 multiSelectionKeyCode: KeyCode | null;
24}): void {
25 const store = useStoreApi();
26 const { deleteElements } = useReactFlow();
27
28 const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });
29 const multiSelectionKeyPressed = useKeyPress(multiSelectionKeyCode, { target: win });
30
31 useEffect(() => {
32 if (deleteKeyPressed) {
33 const { edges, nodes } = store.getState();
34 deleteElements({ nodes: nodes.filter(selected), edges: edges.filter(selected) });
35 store.setState({ nodesSelectionActive: false });
36 }
37 }, [deleteKeyPressed]);
38
39 useEffect(() => {
40 store.setState({ multiSelectionActive: multiSelectionKeyPressed });
41 }, [multiSelectionKeyPressed]);
42}

Callers 1

FlowRendererComponentFunction · 0.90

Calls 3

useStoreApiFunction · 0.90
useReactFlowFunction · 0.90
useKeyPressFunction · 0.90

Tested by

no test coverage detected