Merge pull request #4874 from crimx/patch-1

fix(system): safely handles non-html-element object
This commit is contained in:
Moritz Klack
2024-12-09 17:36:50 +01:00
committed by GitHub
2 changed files with 6 additions and 1 deletions

View File

@@ -0,0 +1,5 @@
---
'@xyflow/system': patch
---
Refactor isInputDOMNode so that it handles non-html objects

View File

@@ -40,7 +40,7 @@ const inputTags = ['INPUT', 'SELECT', 'TEXTAREA'];
export function isInputDOMNode(event: KeyboardEvent): boolean {
// using composed path for handling shadow dom
const target = (event.composedPath?.()?.[0] || event.target) as HTMLElement;
const isInput = inputTags.includes(target?.nodeName) || target?.hasAttribute('contenteditable');
const isInput = inputTags.includes(target?.nodeName) || target?.hasAttribute?.('contenteditable');
// when an input field is focused we don't want to trigger deletion or movement of nodes
return isInput || !!target?.closest('.nokey');