diff --git a/packages/slate/src/interfaces/path.ts b/packages/slate/src/interfaces/path.ts index 33e18312a..dd2f6e6be 100755 --- a/packages/slate/src/interfaces/path.ts +++ b/packages/slate/src/interfaces/path.ts @@ -391,6 +391,12 @@ export const Path = { } return copy.concat(p.slice(op.length)) + } else if (Path.isSibling(op, p) && Path.equals(onp, p)) { + if (Path.endsBefore(op, p)) { + p[op.length - 1] -= 1 + } else { + p[op.length - 1] += 1 + } } else if ( Path.endsBefore(onp, p) || Path.equals(onp, p) || diff --git a/packages/slate/test/interfaces/Path/transform/move_node/ends-after-to-ends-equal.js b/packages/slate/test/interfaces/Path/transform/move_node/ends-after-to-ends-equal.js new file mode 100644 index 000000000..68cf796ce --- /dev/null +++ b/packages/slate/test/interfaces/Path/transform/move_node/ends-after-to-ends-equal.js @@ -0,0 +1,15 @@ +import { Path } from 'slate' + +const path = [0, 1] + +const op = { + type: 'move_node', + path: [0, 3], + newPath: [0, 1], +} + +export const test = () => { + return Path.transform(path, op) +} + +export const output = [0, 2] diff --git a/packages/slate/test/interfaces/Path/transform/move_node/ends-before-to-ends-equal.js b/packages/slate/test/interfaces/Path/transform/move_node/ends-before-to-ends-equal.js new file mode 100644 index 000000000..0ae955f5a --- /dev/null +++ b/packages/slate/test/interfaces/Path/transform/move_node/ends-before-to-ends-equal.js @@ -0,0 +1,15 @@ +import { Path } from 'slate' + +const path = [0, 1] + +const op = { + type: 'move_node', + path: [0, 0], + newPath: [0, 1], +} + +export const test = () => { + return Path.transform(path, op) +} + +export const output = [0, 0]