diff --git a/packages/slate/src/commands/at-current-range.js b/packages/slate/src/commands/at-current-range.js index 574b8768e..33dc67a87 100644 --- a/packages/slate/src/commands/at-current-range.js +++ b/packages/slate/src/commands/at-current-range.js @@ -135,6 +135,7 @@ Commands.insertFragment = (editor, fragment) => { const { startText, endText, startInline } = value const lastText = fragment.getLastText() const lastInline = fragment.getClosestInline(lastText.key) + const lastBlock = fragment.getClosestBlock(lastText.key) const firstChild = fragment.nodes.first() const lastChild = fragment.nodes.last() const keys = document.getTexts().map(text => text.key) @@ -154,13 +155,11 @@ Commands.insertFragment = (editor, fragment) => { const newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first() if (newText && (lastInline || isInserting)) { - editor.select(selection.moveToEndOfNode(newText)) + editor.moveToEndOfNode(newText) } else if (newText) { - editor.select( - selection.moveToStartOfNode(newText).moveForward(lastText.text.length) - ) + editor.moveToStartOfNode(newText).moveForward(lastBlock.text.length) } else { - editor.select(selection.moveToStart().moveForward(lastText.text.length)) + editor.moveToStart().moveForward(lastBlock.text.length) } } diff --git a/packages/slate/test/commands/at-current-range/insert-fragment/fragment-adjacent-texts.js b/packages/slate/test/commands/at-current-range/insert-fragment/fragment-adjacent-texts.js new file mode 100644 index 000000000..95ef72c09 --- /dev/null +++ b/packages/slate/test/commands/at-current-range/insert-fragment/fragment-adjacent-texts.js @@ -0,0 +1,34 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(editor) { + editor.insertFragment( + + + one + two + + + ) +} + +export const input = ( + + + + + + + +) + +export const output = ( + + + + onetwo + + + +)