diff --git a/packages/slate/src/changes/at-range.js b/packages/slate/src/changes/at-range.js index b98c5e7c1..1255cfaee 100644 --- a/packages/slate/src/changes/at-range.js +++ b/packages/slate/src/changes/at-range.js @@ -334,6 +334,7 @@ Changes.deleteWordBackwardAtRange = (change, range, options) => { */ Changes.deleteBackwardAtRange = (change, range, n = 1, options = {}) => { + if (n === 0) return const normalize = change.getFlag('normalize', options) const { value } = change const { document } = value @@ -467,7 +468,7 @@ Changes.deleteLineForwardAtRange = (change, range, options) => { const startBlock = document.getClosestBlock(startKey) const offset = startBlock.getOffset(startKey) const o = offset + startOffset - change.deleteForwardAtRange(range, o, options) + change.deleteForwardAtRange(range, startBlock.text.length - o, options) } /** @@ -502,6 +503,7 @@ Changes.deleteWordForwardAtRange = (change, range, options) => { */ Changes.deleteForwardAtRange = (change, range, n = 1, options = {}) => { + if (n === 0) return const normalize = change.getFlag('normalize', options) const { value } = change const { document } = value diff --git a/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js b/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js new file mode 100644 index 000000000..982542398 --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-backward/text-start.js @@ -0,0 +1,20 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineBackward() +} + +export const input = ( + + + + + one two three + + + +) + +export const output = input diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js new file mode 100644 index 000000000..150c1b1ff --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-middle-emoji.js @@ -0,0 +1,28 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + + one wo📛rd + + + +) + +export const output = ( + + + + + + + +) diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js new file mode 100644 index 000000000..81f2c883d --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-multi-voids.js @@ -0,0 +1,33 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + + one + 😊 + two + 😊 + three + 😀 + + + +) + +export const output = ( + + + + + + + +) diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js new file mode 100644 index 000000000..24c03bcdc --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/inline-void-end.js @@ -0,0 +1,28 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + + one two three😊 + + + +) + +export const output = ( + + + + + + + +) diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js b/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js new file mode 100644 index 000000000..8d15e5d78 --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/text-end.js @@ -0,0 +1,20 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + one two three + + + + +) + +export const output = input diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js b/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js new file mode 100644 index 000000000..726cae8c0 --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/text-start.js @@ -0,0 +1,28 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + + one two three + + + +) + +export const output = ( + + + + + + + +) diff --git a/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js b/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js new file mode 100644 index 000000000..5fcd63ef7 --- /dev/null +++ b/packages/slate/test/changes/at-current-range/delete-line-forward/word-middle.js @@ -0,0 +1,27 @@ +/** @jsx h */ + +import h from '../../../helpers/h' + +export default function(change) { + change.deleteLineForward() +} + +export const input = ( + + + + one two three + + + +) + +export const output = ( + + + + one two thr + + + +)