diff --git a/packages/slate-react/src/plugin/react-editor.ts b/packages/slate-react/src/plugin/react-editor.ts index 0bb536189..e01aac4cc 100644 --- a/packages/slate-react/src/plugin/react-editor.ts +++ b/packages/slate-react/src/plugin/react-editor.ts @@ -149,15 +149,17 @@ export const ReactEditor = { options: { editable?: boolean } = {} ): boolean { const { editable = false } = options - const el = ReactEditor.toDOMNode(editor, editor) - let element + const editorEl = ReactEditor.toDOMNode(editor, editor) + let targetEl // COMPAT: In Firefox, reading `target.nodeType` will throw an error if // target is originating from an internal "restricted" element (e.g. a // stepper arrow on a number input). (2018/05/04) // https://github.com/ianstormtaylor/slate/issues/1819 try { - element = isDOMElement(target) ? target : target.parentElement + targetEl = (isDOMElement(target) + ? target + : target.parentElement) as HTMLElement } catch (err) { if ( !err.message.includes('Permission denied to access property "nodeType"') @@ -166,13 +168,13 @@ export const ReactEditor = { } } - if (!element) { + if (!targetEl) { return false } return ( - element.closest(`[data-slate-editor]`) === el && - (!editable || el.isContentEditable) + targetEl.closest(`[data-slate-editor]`) === editorEl && + (!editable || targetEl.isContentEditable) ) },