From d2fc25c3c31453597f59cd2ac6ba087a1beb1fe3 Mon Sep 17 00:00:00 2001 From: V_Lute <751356316@qq.com> Date: Sat, 7 May 2022 21:14:01 +0800 Subject: [PATCH] update insertText logic when selection is not collapsed (#4892) Co-authored-by: zhangpengcheng15 --- .changeset/wise-dots-cheat.md | 5 +++ packages/slate/src/transforms/text.ts | 9 +++-- .../selection/block-across-inline-wold.tsx | 35 +++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 .changeset/wise-dots-cheat.md create mode 100644 packages/slate/test/transforms/insertText/selection/block-across-inline-wold.tsx diff --git a/.changeset/wise-dots-cheat.md b/.changeset/wise-dots-cheat.md new file mode 100644 index 000000000..8152285d2 --- /dev/null +++ b/.changeset/wise-dots-cheat.md @@ -0,0 +1,5 @@ +--- +'slate': minor +--- + +update insertText logic when selection is not collapsed diff --git a/packages/slate/src/transforms/text.ts b/packages/slate/src/transforms/text.ts index 406876554..c93589b08 100644 --- a/packages/slate/src/transforms/text.ts +++ b/packages/slate/src/transforms/text.ts @@ -474,9 +474,14 @@ export const TextTransforms: TextTransforms = { if (!voids && Editor.void(editor, { at: end })) { return } - const pointRef = Editor.pointRef(editor, end) + const start = Range.start(at) + const startRef = Editor.pointRef(editor, start) + const endRef = Editor.pointRef(editor, end) Transforms.delete(editor, { at, voids }) - at = pointRef.unref()! + const startPoint = startRef.unref() + const endPoint = endRef.unref() + + at = startPoint || endPoint! Transforms.setSelection(editor, { anchor: at, focus: at }) } } diff --git a/packages/slate/test/transforms/insertText/selection/block-across-inline-wold.tsx b/packages/slate/test/transforms/insertText/selection/block-across-inline-wold.tsx new file mode 100644 index 000000000..3ce8dac80 --- /dev/null +++ b/packages/slate/test/transforms/insertText/selection/block-across-inline-wold.tsx @@ -0,0 +1,35 @@ +/** @jsx jsx */ +import { Transforms } from 'slate' +import { jsx } from '../../..' + +export const run = editor => { + Transforms.insertText(editor, 'a') +} +export const input = ( + + + first paragraph + + tw + o + + + + second + + paragraph + + +) +export const output = ( + + + first paragraph + + twa + + + paragraph + + +)