mirror of
https://github.com/ianstormtaylor/slate.git
synced 2025-08-29 09:59:48 +02:00
Fix positions iteration when starting in an inline void node (#4952)
This commit is contained in:
5
.changeset/little-plums-behave.md
Normal file
5
.changeset/little-plums-behave.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
'slate': patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fix positions iteration when starting inside an inline void node
|
@@ -1341,6 +1341,9 @@ export const Editor: EditorInterface = {
|
|||||||
// then we will iterate over their content.
|
// then we will iterate over their content.
|
||||||
if (!voids && editor.isVoid(node)) {
|
if (!voids && editor.isVoid(node)) {
|
||||||
yield Editor.start(editor, path)
|
yield Editor.start(editor, path)
|
||||||
|
// It's possible the start of the range we're iterating over is in a void, in which case
|
||||||
|
// we want to make sure we don't incorrectly yield the start of a subsequent text node for unit !== 'offset'
|
||||||
|
isNewBlock = false
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,31 @@
|
|||||||
|
/** @jsx jsx */
|
||||||
|
import { Editor } from 'slate'
|
||||||
|
import { jsx } from '../../../..'
|
||||||
|
|
||||||
|
export const input = (
|
||||||
|
<editor>
|
||||||
|
<block>
|
||||||
|
one
|
||||||
|
<inline void>
|
||||||
|
<text />
|
||||||
|
</inline>
|
||||||
|
two
|
||||||
|
</block>
|
||||||
|
</editor>
|
||||||
|
)
|
||||||
|
export const test = editor => {
|
||||||
|
return Array.from(
|
||||||
|
Editor.positions(editor, {
|
||||||
|
at: {
|
||||||
|
anchor: { path: [0, 1, 0], offset: 0 },
|
||||||
|
focus: { path: [0, 2], offset: 2 },
|
||||||
|
},
|
||||||
|
unit: 'character',
|
||||||
|
})
|
||||||
|
)
|
||||||
|
}
|
||||||
|
export const output = [
|
||||||
|
{ path: [0, 1, 0], offset: 0 },
|
||||||
|
{ path: [0, 2], offset: 1 },
|
||||||
|
{ path: [0, 2], offset: 2 },
|
||||||
|
]
|
Reference in New Issue
Block a user