From 293aca9c7aa20ec5b99bbe1130237fa6b7ee758d Mon Sep 17 00:00:00 2001 From: Joe Anderson Date: Mon, 2 Jun 2025 15:43:28 +0100 Subject: [PATCH] Fix backspace for Bengali grapheme clusters (#5887) --- .changeset/grumpy-walls-look.md | 5 +++++ packages/slate/src/transforms-text/delete-text.ts | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/grumpy-walls-look.md diff --git a/.changeset/grumpy-walls-look.md b/.changeset/grumpy-walls-look.md new file mode 100644 index 000000000..28323da3b --- /dev/null +++ b/.changeset/grumpy-walls-look.md @@ -0,0 +1,5 @@ +--- +'slate': patch +--- + +Handle backspace correctly for grapheme clusters in Bengali diff --git a/packages/slate/src/transforms-text/delete-text.ts b/packages/slate/src/transforms-text/delete-text.ts index ce2aa62c4..b990340ba 100644 --- a/packages/slate/src/transforms-text/delete-text.ts +++ b/packages/slate/src/transforms-text/delete-text.ts @@ -169,15 +169,17 @@ export const deleteText: TextTransforms['delete'] = (editor, options = {}) => { }) } - // For Thai script, deleting N character(s) backward should delete + // For certain scripts, deleting N character(s) backward should delete // N code point(s) instead of an entire grapheme cluster. // Therefore, the remaining code points should be inserted back. + // Bengali: \u0980-\u09FF + // Thai: \u0E00-\u0E7F if ( isCollapsed && reverse && unit === 'character' && removedText.length > 1 && - removedText.match(/[\u0E00-\u0E7F]+/) + removedText.match(/[\u0980-\u09FF\u0E00-\u0E7F]+/) ) { Transforms.insertText( editor,