09272dffeb
@robonen/editor: migrate to eslint flat config + composite tsconfig; fix convergence test type annotations.
12 lines
587 B
TypeScript
12 lines
587 B
TypeScript
/**
|
|
* Whether a node is (inside) an atom's interactive control — a form field or a
|
|
* `contenteditable="false"` island. Events from these must NOT be treated as
|
|
* editor input: e.g. typing in an image's caption `<input>` bubbles up to the
|
|
* single contenteditable, and without this guard the editor would re-sync a text
|
|
* block and yank the caret to the start of the document.
|
|
*/
|
|
export function isInteractiveTarget(node: EventTarget | null): boolean {
|
|
return node instanceof Element
|
|
&& node.closest('input, textarea, select, button, [contenteditable="false"]') !== null;
|
|
}
|