diff --git a/.changeset/neat-flies-eat.md b/.changeset/neat-flies-eat.md new file mode 100644 index 000000000..1debb9bc1 --- /dev/null +++ b/.changeset/neat-flies-eat.md @@ -0,0 +1,5 @@ +--- +'slate': patch +--- + +Fix cursor not correct issue after insert multiple nodes with `Transform.insertNodes` diff --git a/packages/slate/src/transforms/node.ts b/packages/slate/src/transforms/node.ts index 4bd4ddc3d..00567dfd7 100644 --- a/packages/slate/src/transforms/node.ts +++ b/packages/slate/src/transforms/node.ts @@ -228,7 +228,9 @@ export const NodeTransforms: NodeTransforms = { const path = parentPath.concat(index) index++ editor.apply({ type: 'insert_node', path, node }) + at = Path.next(at) } + at = Path.previous(at) if (select) { const point = Editor.end(editor, at) diff --git a/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx b/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx new file mode 100644 index 000000000..ccbdb8f30 --- /dev/null +++ b/packages/slate/test/transforms/insertNodes/path/multiple-inline-not-end.tsx @@ -0,0 +1,34 @@ +/** @jsx jsx */ +import { Transforms } from 'slate' +import { jsx } from '../../..' + +export const input = ( + + + hel + + lo + + +) +export const run = editor => { + Transforms.insertNodes(editor, [ + + + , + world, + ]) +} +export const output = ( + + + hel + + + + world + + lo + + +) diff --git a/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx b/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx new file mode 100644 index 000000000..e06d71df5 --- /dev/null +++ b/packages/slate/test/transforms/insertNodes/path/multiple-inline.tsx @@ -0,0 +1,32 @@ +/** @jsx jsx */ +import { Transforms } from 'slate' +import { jsx } from '../../..' + +export const input = ( + + + hello + + + +) +export const run = editor => { + Transforms.insertNodes(editor, [ + + + , + world, + ]) +} +export const output = ( + + + hello + + + + world + + + +)