mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-19 13:41:19 +02:00
When resolving a slate Point from a DOM selection (toSlatePoint), consider that a node is only void if it's within the same editor that is resolving the Point. (#4885)
If you have a nested editor setup. For example, one editor has a void node that contains another editor. In this case, a resolution of a selection by the nested editor previously would consider that the selection is for a void node since an ancestor void node does exist. However, this selection is only a void node in the context of this editor if the ancestor void node is contained in the editor.
This commit is contained in:
@@ -484,7 +484,16 @@ export const ReactEditor = {
|
||||
let offset = 0
|
||||
|
||||
if (parentNode) {
|
||||
const voidNode = parentNode.closest('[data-slate-void="true"]')
|
||||
const editorEl = ReactEditor.toDOMNode(editor, editor)
|
||||
const potentialVoidNode = parentNode.closest('[data-slate-void="true"]')
|
||||
// Need to ensure that the closest void node is actually a void node
|
||||
// within this editor, and not a void node within some parent editor. This can happen
|
||||
// if this editor is within a void node of another editor ("nested editors", like in
|
||||
// the "Editable Voids" example on the docs site).
|
||||
const voidNode =
|
||||
potentialVoidNode && editorEl.contains(potentialVoidNode)
|
||||
? potentialVoidNode
|
||||
: null
|
||||
let leafNode = parentNode.closest('[data-slate-leaf]')
|
||||
let domNode: DOMElement | null = null
|
||||
|
||||
|
Reference in New Issue
Block a user