1
0
mirror of https://github.com/ianstormtaylor/slate.git synced 2025-04-21 22:02:05 +02:00

fix joinNode deep operation logic, closes #441

This commit is contained in:
Ian Storm Taylor 2016-11-21 14:58:59 -08:00
parent 729ce2e4c0
commit adfc365e3a

View File

@ -143,26 +143,22 @@ function joinNode(state, operation) {
const first = document.assertPath(withPath)
const second = document.assertPath(path)
// Update doc
document = document.joinNode(first, second, { deep })
// Update selection if we merged two texts together
// If the operation is deep, or the nodes are text nodes, it means we will be
// merging two text nodes together, so we need to update the selection.
if (deep || second.kind == 'text') {
const firstText = deep
? first.getLastText()
: first
const secondText = deep
? second.getFirstText()
: second
const { anchorKey, anchorOffset, focusKey, focusOffset } = selection
// The final key is the `first` key
const firstText = first.kind == 'text' ? first : first.getLastText()
const secondText = second.kind == 'text' ? second : second.getFirstText()
if (anchorKey == secondText.key) {
selection = selection.merge({
anchorKey: firstText.key,
anchorOffset: anchorOffset + firstText.characters.size
})
}
if (focusKey == secondText.key) {
selection = selection.merge({
focusKey: firstText.key,