diff --git a/src/transforms/apply-operation.js b/src/transforms/apply-operation.js index 48aa1afe8..d6cf719de 100644 --- a/src/transforms/apply-operation.js +++ b/src/transforms/apply-operation.js @@ -253,7 +253,6 @@ function removeNode(state, operation) { .takeUntil(text => text.key == startKey) .filter(text => !getRemoved(text.key)) .last() - if (!prevText) selection = selection.unset() else selection = selection.moveStartTo(prevText.key, prevText.length) } diff --git a/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/index.js b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/index.js new file mode 100644 index 000000000..8405cc39d --- /dev/null +++ b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/index.js @@ -0,0 +1,34 @@ + +import assert from 'assert' + +export default function (state) { + const { document, selection } = state + const texts = document.getTexts() + const firstText = texts.first() + const secondText = texts.get(1) + + const nextSelection = selection.merge({ + anchorKey: secondText.key, + focusKey: secondText.key, + anchorOffset: 2, + focusOffset: 2 + }) + + const next = state + .transform() + .moveTo(nextSelection) + .removeNodeByKey('todelete') + .apply() + + assert.deepEqual( + next.selection.toJS(), + nextSelection.merge({ + anchorKey: firstText.key, + focusKey: firstText.key, + anchorOffset: 5, + focusOffset: 5 + }).toJS() + ) + + return next +} diff --git a/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/input.yaml b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/input.yaml new file mode 100644 index 000000000..494fcb20c --- /dev/null +++ b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/input.yaml @@ -0,0 +1,13 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + text: hello + - kind: block + key: todelete + type: paragraph + nodes: + - kind: text + text: removed diff --git a/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/output.yaml b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/output.yaml new file mode 100644 index 000000000..98adb1781 --- /dev/null +++ b/test/transforms/fixtures/by-key/remove-node-by-key/selection-inside/output.yaml @@ -0,0 +1,7 @@ + +nodes: + - kind: block + type: paragraph + nodes: + - kind: text + text: hello